软件测试从零开始之六:性能测试技术 找软件工作需要什么?

什么是性能测试?这里先举两个场景: 1、1000W个微信用户同时去发朋友圈 2、1000W个淘宝用户同时去在淘宝上面买商品 当然,上面两个例子极有可能都发生过。并且虽然我们都参...

软件测试从零开始之六:性能测试技术

我们精选了一下网友答案:

···································^^····································


什么是性能测试?这里先举两个场景:
1、1000W个微信用户同时去发朋友圈
2、1000W个淘宝用户同时去在淘宝上面买商品

当然,上面两个例子极有可能都发生过。并且虽然我们都参与了上面的测试,但是因为我们是客户端,实际上并不太清楚对服务器产生了多大的压力或者服务器发生了什么事情。

ok,到上面我们大概知道了功能测试和性能测试的区别。功能测试的目的是我们保证单个用户请求的时候没有问题;而性能测试的目的是保证很多用户(系统支持的)同时请求时没有问题。而我们的性能测试就是通过分析真实情况下多个用户同时出现的请求的时候可能出现的问题而进行的针对性测试(该定义纯属个人YY,如有雷同,不甚荣幸)。
看起来貌似很简单的样子,那我们接下来尝试回答下面几个问题:
1、当有1000W个微信用户同时发朋友圈的时候,服务器的压力都在哪里?每个地方的压力都有多大?瓶颈到底在哪里?
2、真实的用户场景是怎样的?怎样确保我们实验室的性能测试结果能够去满足真实的用户场景?
3、如果后面用户数从1000W到2000W的时候,我们的压力点会有哪些变化?
4、压力分析出来后,我们如何去覆盖到这些压力点,比如:如何去构造1000W个用户数去请求数据?
5、我们在性能测试过程中是否能够根据不断的调优(比如:调整用户行为),来得到我们服务器的一个最优的结果?
......

看到这些问题,相信应该不会有同学觉得很简单了,我们后面再一起去分享回答上面的问题需要学习哪些知识。

首先,我们将性能测试分为性能指标测试和性能压力测试。性能指标测试是指通过模拟真实的并发用户操作,来判断产品是否能够满足用户的需求;比如:微信需要同时支持4亿个用户的接入为一个真实的用户需求,但是我们内部不可能真实的去接入4亿个用户,只能够通过模拟4亿个真实用户去接入,如果我们通过模拟的方式达到该目标了,就说明满足了这个需求。
性能压力测试是指在一定的负载情况(资源占用、接入用户量等)下面,验证产品的功能是否还能够正常运行以及系统本身是否正常。比如:当cpu和内存占用高达80%以上后,系统crash了。

其他朋友可能会说还有:稳定性测试、负载测试等等其他性能测试,这里就不再这里讨论了,因为测试方法都类似,并且目的也差不多,我们重点分享下如何进行性能指标测试和性能压力测试。
一、性能指标测试:
首先,需要知道性能指标的对应的需求是否合理以及足够明确。石头哥一直强调,在做一件事情前,一定要搞清楚做这件事情的意义是什么,特别是对于工作。比如:需求上面写我们要支持1万个用户同时在线支付。那么我们会有如下几个疑问:
1、1万个用户是怎么来的,通过什么样的模型推断出来的,是否合理?
2、支付的方式是否确定,不同的支付方式是否有影响?
3、支付的过程(一般应该都不是非原子操作)是否要全部保持一致?
4、是否要求全部都选择支付成功,还是需要一定数量的用户选择支付失败?
...

当我们真正的理解了需求后,我们就能够更好的站在用户的角度上面去思考我们的性能指标测试过程了,也能够让我们的用户指标测试过程更加符合真实的用户使用场景。

完成需求的分析后,我们就可以开始针对需求来设计对应的性能指标用例了,同时需要对具体的需求进行分析是否有测试方法能够覆盖到(建议能够先去理解下整个业务逻辑)。比如:我们要通过怎样的方式去模拟1000W的用户的并发接入?这个时候可能需要我们去自己开发测试工具,或者需要开发给我们提供对应的接口来着。

完成测试方法的研究和确定后,我们就开始按照具体的测试方法来进行覆盖测试了。当然,测试的过程一般都不是一帆风顺的。这就同时需要我们具备一定的分析能力了(前面的业务学习和理解是基础),比如:当我们发现并发用户数跑到10W后就一直上不去了。我们是否能够自己排查可能的原因呢?工具本身问题、网络问题、接口问题、系统负载问题等等。排查和定位问题的能力应该是一个性能测试工程师具备的基础能力之一,而这个也是很难去掌握的。

按照我们既定的测试计划,完成性能指标测试后,就需要对整个性能测试过程和结果进行分析和整理了,这样能够让我们提交一份高质量的性能测试报告。另外,可能这份性能指标表我们要测试很多遍,这个时候就可以去分析下是否可以通过自动化的方式去测试了,毕竟你自己应该不会太想将同一份工作做两遍吧?

二、性能压力测试
性能压力测试跟功能测试一样,主要还是一个通过发现bug来评估质量的过程。那么这里有两个问题:
1、什么样的问题算性能问题(即功能问题和性能问题的区别)
2、如何去保证性能的质量(即能够发现所有的性能问题)

一般来说:笔者认为当系统处于一定负荷的时候出现的问题算是性能问题。比如:拿qq来说,可能1个qq用户登录的时候服务器没有问题,但是1万个qq同时登录并且发数据的时候服务器可能就会有问题(因为占用的资源有很大区别),其他如果是可以通过测试功能就能够发现的逻辑问题不属于性能问题.

那么,如何去保证性能的质量呢?这里参考保证功能的质量一个方法,即通过覆盖性能业务逻辑的方法来保证性能质量。具体如下:
1、将业务逻辑很详细的画出来
2、根据业务逻辑提取出性能点,提取性能点的一个原则是确定单个连接和多个连接是否会对该逻辑有影响,只要有的都应该提取出来,比如资源的申请和释放、多线程的工作方式等
3、根据性能点完成性能用例的编写,一定要确保这些性能测试方法能够达到测试目的
4、分析是否可以将一些测试方法或者检查点通过脚本或自动化的方式来实现,来节省测试时间
5、学习对应的测试工具,对工具的熟悉能够很有效的提高自己的测试效率
6、跟功能测试一样,测试过程中一定要多进行分析,最好是能够对每个性能bug都进行分析,然后看下是否还有可能没有考虑到的地方,进行补充测试和完善用例(并分析当时为什么没有考虑到),来形成经验文档。
7、加强对被测系统的学习,因为性能压力测试本身是一个整体,只有对被测系统了解的足够的深入才能够分析的更加准确,比如:很多服务器都是基于linux系统的,那么对linux系统的深入学习就比较有必要了
8、尝试排查和定位问题,再次强调一遍,石头哥真心觉得排查和定位问题的能力是性能测试工程师一个很重要的能力,因为对于一个性能测试工程师来说,是应该要知道整个性能的瓶颈在哪里,并且知道怎样去覆盖到的,而不是简单的会用会用loadrunner就可以了。

通过这样的方式去不断的实践和练习,相信自己就会在性能方面有比较好的经验了。另外,通过前面的性能测试对于自己理解整个系统的整体架构非常有帮助(这个对于自己也是非常有帮助的)

另外,想学习web性能测试的同学们推荐《性能测试从零开始》,还是不错的。

下次我们将分析自动化测试技术,我们下期见

·······································································

找软件工作需要什么?

我们精选了一下网友答案:

先拿CET-4吧,不然出来社会就知道麻烦了。
日语考级有点难度,光看看那些平假名片假名就知道了!
如果不是去日资或者对日软件企业,不必要花太多时间去攻日语了。
话说回来对日软件也不是特别的好。还不如把精力放在J2EE上,付出就有收获。应届毕业生不可能有太好的职位,对此要有思想准备,只要坚持个两三年,必然会有个较好的职位的。

关于你提的“问题:我在长春,我们这边的J2EE培训都连日语一起培训,出来后做软件外包的比较多。请问你说的J2EE还有别的发展空间是做什么呢?”的回答:
社会上的这种培训从03年开始已很常见了,我是在武汉读的大学,当时就是这样,很多培训机构一拥而上培训对日软件工程师,主要培训J2EE+日语,宣传说现在中国向印度学习,将来外包的单很多,需要大量的这种人才,就业主要是推荐给东软、武汉NEC等等很多做接日本外包单的公司。
实际上,中国的软件发展之路不可能克隆印度或者爱尔兰的路子,中国所有事情的发展都有“中国特色”。
日本的单子说多不多,说少也不少,可以baidu一下这方面的报道,目前国内软件外包市场不规范,主要表现在3个方面:1、业务模式主要是做客户,靠关系,私下交易多;2、履行合同不规范;3、客户低估软件价值。中国软件企业还游走在外包的下游甚至是最末端,日本的单子常常是经过数次分拆和转手的,留给中国的只剩下一些Coding的工作,没有什么技术含量,这是对日业务的主流,有欧美单子甚至是软件测试、数据录入这样的力气活,难以提高自身技术水平。
后面的话就不谈了,说起来就长了,你是后来人,最关心的还是自己该怎样发展,在此给你些建议。
CET4比日语重要,它的优先级应该排在前面,首先,大部分学校要靠它拿学位证的,(现在稍有不同),因为CET出来的早,社会认可度高,虽然国家已经在极力申明它只是考察大学英语教育水平的,并限制社会人报考,但这么多年积累下来的社会影响力短期内不能消除,连政府调户口都对此有要求!用其他英语认证代替CET的影响力还要一个过程。另外,英语适应面最广,远远超过日语,当然了,你两种都掌握最好,只是人的精力有限。再次,英语对计算机专业的学生来说重要程度是不言而喻的,编程、数据库SQL语言,都用英语吧??还有,等你编程入门之后,你会发现,直接看英文的资料是收获最大的,比如你直接看SUN关于JAVA语言处理异常的那些英文文档,你在编程的编译这一步中就能对开发工具给出的英文提示和相关数据有最直接的认识,各种语言绕来绕去效率就低了。
说说J2EE,首先别把自己钉死在对日软件开发这一块上,哪有人学什么就上什么工作岗位的,抛开这个框框,海阔天空啊!我只能举些例子说说J2EE的就业,譬如神州数码招J2EE工程师,做项目开发的,主要是金融这块,月薪6K-8K,还有腾讯等等做SP开发的,包括一些网络游戏、网络服务提供商等等,很多很多,JAVA的前景是不错的。(呵呵我并不是搞JAVA的)
我告诫各位还没毕业的就是一点,虽然我们给你们描绘的都是很美好的画卷,但是你们出来时肯定找不到好工作,除非特别优秀的,为什么呢?----我们大部分人就是这样过来的,每年的毕业生都非常非常非常非常多!!!经过几个月找不到理想工作的沮丧和失落,就只好先找个编程的活干着,工资比较低,公司比较小,学了一些东西后就有各种理由跳槽,跳来跳去就过去了两年,赶上大公司招聘或者自己的同学、朋友来个内部推荐,就好转了,呵呵!
当然了,我说的这种经历是在深圳,上海、北京以及其他地方可能各有各的不同,不一而论,简单聊聊而已。
学习不好加上没有毅力这是最令人痛恨的一件事,哪个雇主愿意招聘这样的人呢?学计算机关键是兴趣,你自己若没有真正的兴趣相信你也不会在半夜两三点还在电脑前苦思冥想程序的,(我们那时大二大三真是这样),爱计算机的人就不会把它当成“电脑”,我们都对电脑游戏不感兴趣,除非是搞游戏开发的。当然了最重要一点是你毕竟还没出来到社会,真正等你带着不多的几张钞票在苦苦找工作时你就会痛恨自己当初怎么没多学点?比如装个Oracle试用一下?用UML画一下图?学一下软件测试?考几个证?痛定思痛,才会浪子回头~!艺多不压身,总有一天你会用到的。以后,你会常常感到时间不够用的!与各位共勉之

···································^^····································


靠谱一点的工作就是智联,51job,猎聘网,应届生这些
要求低一点的就像58,赶集这种,但这种网站比较容易被保险公司骚扰

···································^^····································


登陆长春教育网,看到浮动窗口(蓝灰色),上面标注:长春市普通高中“三星级”素质教育特色学校评选网上测评。点击进入

·······································································

长春2021届一模理科试题

我们精选了一下网友答案:

···································^^····································


关注公众号回复【答案】获取全部高清答案电子版


理科数学试题

点击图片查看大图

点击查看大图


物理化学生物

  未来英才报考软件2021高考必备工具  


未来英才报考软件是一款专门为吉林省考生量身定制的高考志愿填报软件,可以方便的在手机、电脑和ipad上查询、报考。所有数据实时自动更新。

报考时家长只需要输入孩子的成绩,软件就会根据2014-2020年的录取大数据,智能推荐冲、恰、稳、保4类院校。同时有院校大全、专业大全、职业兴趣测评等报考功能,让家长们可以做到,自己用软件就可以报考



购买了解报考软件添加小白老师!




未来英才全省分公司联系方式








(滑动查看)



觉得文章有用请给老师点个好看鼓励一下!

  • 发表于 2020-11-24 15:19
  • 阅读 ( 610 )
  • 分类:软件测评

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
admin
admin

0 篇文章

作家榜 »

  1. xiaonan123 189 文章
  2. 汤依妹儿 97 文章
  3. luogf229 46 文章
  4. jy02406749 45 文章
  5. 小凡 34 文章
  6. Daisy萌 32 文章
  7. 我的QQ3117863681 24 文章
  8. 华志健 23 文章

推荐文章

联系我们:uytrv@hotmail.com 问答工具