前言
写测试用例,是测试绕不开的工作内容,不管是功能、自动化,还是性能。先来回顾一下功能测试用例主要包含的要素:测试用例编号、测试标题、所属模块、测试需求项编号、案例状态、预置条件、优先级、测试输入、操作步骤、预期输出、实际结果、案例设计者、设计日期、案例性质等。性能测试用例(有的称为场景用例)的设计,有别于功能测试用例、自动化测试用例的设计,毕竟,考虑的点不一样。对于性能测试来说,一般要考虑这4种场景:单场景、混合场景、稳定性场景、异常场景。
下面,结合笔者实际工作,分享下单场景的用例是如何设计的。
单场景的定义
有的称为接口基准(Benchmark)、或者单交易的容量,总之,这个不是真实的业务原型(可以简单理解为不同业务的使用情况)。
单场景压测的目的
既然单场景不是真实的业务原型,为什么不直接做混合场景的压测呢?其实,做单场景压测的目的是测试出这个单业务的最大tps,方便判断瓶颈,比如,业务部门给的混合场景的tps(假设这个tps值是合理有效的),根据业务原型比例计算后,业务A的目标tps都比你单场景的最大tps还要大,那是不是应该让开发提前优化了?如果在混合场景压测中,发现业务A的tps已经到达或者接近其单场景最大tps,但是混合场景还没有达标,那说明瓶颈在业务A。
单场景的来源
有人可能要问,单场景从哪里来?如果你们业务部门或者其它部门能给,那最好,如果不能给,你作为性能测试人员,要引导相关人员给,总之,我觉得这个不能性能测试单独定,否则后期出问题可能你独自背锅哦,要尽最大努力保证不出问题,哪怕出问题,也要一起背锅。单场景是来自于业务原型,但是不是每个业务接口都需要做压测,所以,我们这里说的业务原型,是混合场景的业务原型,混合场景里面,每个业务接口都需要做单场景压测。至于业务原型如何获取,这是一个大话题,本次分享暂不讨论,如果想交流,欢迎微信留言。
项目架构及服务器清单
我们用个简单的架构来举例:nginx + tomcat*2 + mysql
?
单场景用例
除了基于压测工具的设计(假设用的压测工具是jmeter),还包含监控的设计、预期结果、实际结果
部分预期结果(根据项目实际情况写)
部分实际结果?
?如果你的架构很复杂,写重点即可,无需把过多的时间耗费在文档上,况且后期你也可以慢慢完善。?
补充:jmeter脚本
连续阶梯加压,看线程、tps、rt的趋势
另外,混合场景、稳定性场景、异常场景的用例设计,有不清楚的可以联系作者。