软件性能测试见解与总结
入行快两年了,在这几年里,目睹软件测试得到极大的发展,各企业对于测试的需求大大增加,但据我所了解,大部分的企业对测试的需求大多只是停留在黑盒测试阶段,其实这样的测试是不完整的。对于测试本身,个人认为可以依照面向对象的不同划分为三种。
1、面向系统:即面对被测系统本身,这类测试主要是验证被测系统的完善性,健全性。具体的测试目的为验证方法函数是否正确,功能是否正常,需求是否满足,即包含着单元测试,集成测试、确认测试、系统测试、验收测试等。
2、面向用户:指的是站在用户的角度上测试系统是否存在缺陷,这类测试主要针对用户体验度。具体的表现在于界面是否美观,系统是否易用,能否兼容多设备,能否快速响应等,具体的测试有UI测试,兼容性测试,性能测试等。
3、面向企业:考虑更多的是系统是否存在风险,具体表现在于数据泄漏,权限安全等,常见的测试有安全测试。
对于测试的需求,面向企业可以视情况抛弃或者推迟,但是面向系统与面向用户是缺一不可的。面向系统就不必多说了,这是最常规的黑盒测试,是系统质量的最基本体现。除了功能的健全完善之外,我们还应该更多的关注用户的体验,因为站在用户的立场上,使用一个系统最为直观的感受就是界面美观与响应速度。
鉴于之前所言,在此总结一下个人对性能测试的一些见解与总结。
性能测试是通过
自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
通俗的讲,就是通过工具模拟用户操作系统再模拟多用户并发使用,通过监控过程中的服务器资源占用情况以及虚拟用户使用情况。从而分析数据找出当前系统性能瓶颈,以及造成这个情况的原因。那么,我们需要弄清楚几个问题。
工具如何模拟?
当我们打开浏览器访问一个web系统时,浏览器会向这个web系统的服务器发送一系列的请求(可以安装抓包工具进行查看),当服务器收到请求之后,会对每个请求做出回答并把信息返回给浏览器。浏览器拿到返回来的数据之后,进行处理之后呈现页面给我们查阅。而在性能测试中,工具就相当于是一个浏览器,它可以向服务器发送请求,能收到从服务器返回来的数据,但是它对数据不进行处理,而是直接呈现给我们。我们可以按照操作把需要请求的接口按顺序设置好就能模拟出用户进行了某个动作操作了系统。接着通过设置并发数(虚拟用户)来进行模拟多用户同时使用的情景。正因为这样,所以我们在进行性能测试的时候,所设计的脚本需要尽可能的符合现实情况。否则得到的数据无法反映出服务器的真实情况。
如何展开性能测试?
在了解了性能测试的工作原理之后,那么我们该如何展开测试工作呢? 如果从测试准备阶段就开始讲的话,那这里就太长太臭了。所以我在这里就分阶段从简代入。
1、设计脚本:不同工具对脚本的编写的具体实现方式不同,但是他们做的都是同一件事,就是工具在运行脚本的时候能按操作顺序向服务器发送请求。除了按照顺序之外,我们的脚本还需要各种不同的设置,比如参数化,关联,检查点,添加思考时间等等,因为Http请求是无状态的,如果所测功能需要登录才能进行的话,还需要注意添加Cookie或者SessionID。在写好之后,就运行吧,体验一下成果。
2、数据分析:在运行之后,会得到一个运行的结果概要图或者详细数据,数据分析的话,如果是负载测试等想要了解系统瓶颈的测试方法,则多关注服务器的资源。如果想清楚服务器的处理能力,则多关注响应时间,TPS,吞吐量等数据。
3、情景设计:但是现实中,系统使用过程中不可能出现在线用户全部都只操作某个模块的某个功能。这时,需要我们通过各种途径了解用户不同时间段所使用各模块的大概情况。然后再把各种情况融入到脚本中。
除此之外,还有的就是用例以及报告等设计编写了。一份好的用例可能让测试事半功倍,一份好的报告可以更能体现测试结果。