51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2747|回复: 4
打印 上一主题 下一主题

[原创] 性能测试技术

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-4-27 14:41:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

什么是性能测试?这⾥里先举两个场景: 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性能测试的同学们推荐《性能测试从零开始》,还是不错的。 下次我们将分析⾃自动化测试技术,我们下期⻅见

评分

参与人数 1测试积点 +10 收起 理由
lsekfe + 10 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-10 06:54 , Processed in 0.075390 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表