很高兴和大家分享一下趋势科技中国研发中心在性能测试方面的一些经验。
在这个课程里面,我们分享的项目叫IWSaaS.
IWSaaS的全称是InterScan Web Security As a Service.
IWSaaS它是部署在Amazon云平台上面的一个安全网关。也是一个HTTP、HT- TPS的代理。
它可以对全球的企业用户或者个人用户提供service.
IWSaaS的核心是安全网关。那我们这个项目里面
的测试就是首先要测试单台IWSaaS安全网关的,它所能够支持的用户数
以及吞吐量。根据业界的一些标准,我们要求平均的页面响应时间要小于两秒。
对这个测试的基本测试方案是用Jmeter去模拟用户产生Http的流量来通过安全网关。
首先去设置一个初始的用户数,然后逐渐增加用户数, 直到找到符合条件的最大的用户数和吞吐量。
那对于这个测试而言,我们是用手工测试的话,有一个很大的烦恼。
因为每一轮测试,也就是说对每一个用户的数量来进行测试需要花120分钟。
那要完成整个测试就需要花480-600分钟。
那这么长的一个测试时间,而且是每一次测试都是一个简单的,机械的重复,
那对性能测试人员而言,是一个非常大的一个烦恼。
那从项目能够更进一步的提高效率的角度来讲,那我们是不是可以用自动化的方式来
做这个性能测试?是不是就可以我们在键盘上面敲一个命令,它整个测试就可以自动化地- 去做呢?
那下面是我们做自动化测试的一个流程图。
首先我们会读取一个配置文件来确定一个初始的用户的数量。
在这个例子里面,我们初始的用户数量是1000个人。
1000个人我们来进行一次自动化的一个测试。
Jmeter测试完了以后,它能够自动地从Jmeter log里面去分析出实际的,平均的响应时间。
然后增加到log里面去。在这个1000个用户的时候,我们发现它的平均响应时间是小- 于两秒。
那我们就增加用户到1100个,再重复测试。测试出来的
平均相应时间,一栏小于两秒。那我们继续增加用户, 直到到1400个用户的时候,我们发现它的平均响应时间是大于两秒的。
也就是说这个安全网关是不能够支持1400个用户,那我们初步
就可以,结论就是,这个安全网关能够支持1300个用户。
自动化测试到这个过程基本上只需要敲一个键盘就可以完成整个自动化的测试,
这样是不是已经足够了呢?因为我们这个项目是一个SaaS的项目,
它的平常的发布周期是一个星期到两个星期。那就是说每一到两个星期我们都需要做这样的一- 个操作。
而且,每次做这样的操作的时候,万一发现问题,因为在一到两个星期之间,它的这种代码的
变化其实还是蛮大的。那能够完全定位到性能方面的
一些问题其实还是要蛮花时间的。那我们是不是可以做进一步的一些优化? 比如说跟自动的build系统去做一些集成。
那答案当然是可以的。
那要做这种无人值守的性能测试,也就是说跟build去做一个集成
怎么做?首先它需要去做一个部署的自动化。能够通过build出来的自动检测出build
然后把整个测试的一个环境,就自动部署好。
自动部署好了以后,能够自动地触发一个性能的, 自动化的性能测试。在这个测试里面,除了刚刚所做的
自动化测试的过程里面,还需要能够自动地上传最新的测试脚本。
同时自动上传最终的测试报告。在我们这个项目里面, 我们是用Jenkins来去做跟build这种集成以及自动触发。
下面就是我们做用Jenkins集成去做无人职守的性能测试。
上面这张图是Jenkins里面两个job.
一个job是自动部署,另外一个job是自动化测试。
下面这张图是我们在wiki里面放的。
也就是我们通过无人职守的job自动上传的测试报告。
从这里面可以看到基本上每个build出来我们都有一个测试的一个报告。而且可以看到我-
们在这个里面 两个build,一个build发现性能
有一些下降,我们立马就可以去检查到底是出了一些什么问题。比如说这下面的一个例子。
我们发现性能有了百分之二十的这个,这个下降, 我们立马就检查两个build之间唯一的区别就是我们的image有了一些变化。
因为在新的image里面我们没有安装iii tool所以导致了这个性能的一个下降。
那这样一来,无人职守的性能测试可以帮助我们 缩小这个测试的,
缩小一个你去 debug 的范围。这样的话你就能够很快地找到最终性能下降的一个root cause.
那这边是我们性能测试的一个总结。在这里面我们分享了一个IWSaaS做自动化性能测试。
在这一节我们对Jmeter进行了一个封装,来实现一个自动化,可以一键进行
整个自动化性能测试的一个过程。那另外一部分我们还做了一个 无人测试的一个性能测试。在这里面我们用Jenkins去做了一个持续集成。
这种无人职守的性能测试可以帮助我们及早地发现和快速定位问题。