很多人对性能测试的认识还停留在写个脚本压一压就可以了的阶段,性能测试真的如此吗? 今天就提笔总结下个人经验吧,仅供大家参考。
性能测试的哲学
性能测试是一个持续改进的过程,也是一份充满挑战的工作;在工作中我们会涉及硬件平台、操作系统、数据库、缓存、中间件、应用架构、系统程序等方面的知识,广度与深度并重。
“你知道的越多,你不知道的也就越多。”
这也是现代自然科学的写照,在广度无限和深度无限的科学知识面前,人们只能选择一个专业去深造,其他可以涉猎,或作为兴趣爱好,而性能可以认作是一个被微观了的宏观科学。需要了解的知识宽度无限宽,深度无限深。那么我们学习就没有方向了吗?其实也可以在性能测试里面选择所谓的专业:增益最大的就是工作需要的内容。
性能测试的特点
1.性能是主观的
技术科学往往是客观的,审视问题往往非黑即白。在故障排查过程中判断是否存在bug、是否是bug、是否修复bug。因为bug伴随着错误信息,错误信息容易被解读。
性能常常是主观的。被一个用户认为不好的性能,另一个用户可能认为是好的。如:磁盘平均I/O响应时间是1ms。
2.性能是复杂的
系统复杂、负载复杂,解决复杂问题常常需要全局性的方法。系统内部和外部都可能被调查研究,这项工作要求有广泛的技能,一般不可能集中在一个人身上。需要多部门多人合作。
3.性能常常是多问题并存的
扒开系统的外壳看到内部的性能因素之后,发现所有的发现都可能是性能问题,这种情况下辨别问题辨别哪些问题是最重要的。所以要量化问题的重要程度,同时估算问题修复带来的增益。毕竟解决问题需要成本。
性能测试的现在
初级:利用自动化测试工具录制脚本或者能编写简单脚本,按照需求指标进行压测,以符不符合给出的既定指标为目标。
中级:能够独立完成测试工具的脚本编写,对测试指标阅读能力,设计测试场景以覆盖可能存在的瓶颈点。横向的知识面较广,如系统,中间件,数据库,网络协议等。同时有丰富的测试手段。
高级:有一定代码水平编写测试工具或工程,在知识的广度基础上还同时具有深度,对架构和业务接口等的每一处变化都会有性能影响的敏感度。如某一接口在ES中搜索数据,本来是文件搜索,改成了字段搜索,这里性能影响是怎样的。从而影响生产部署。
性能测试的未来
这里只从技术延申上说,不包括技术转型和走管理路线。
性能架构师和测试开发工程师
目前市面上纯功能测试在逐渐淘汰,从阿里、腾讯的岗位来看,纯性能的岗位已经不存在了,一般的性能测试的工作主要由开发人员去做,或者具有开发能力的测试人员来做,通过白盒测试保证代码的性能,基准测试了解基础组件的性能,验证架构或基础组件的性能极限、扩展、灾备等情况的状态,结合业务测试业务链做链路测试(侧重于容量和配置)、最终达到拥有以性能为主导的产品架构设计能力、测试工具设计和实现能力、代码走查能力和测试理论于一身的神级存在。
而在未来,随着人工智能和大数据甚至新能源、航空航天事业的发展,性能测试也会有更高更新的挑战,而人类面临的顶级问题基本都是性能问题,比如CPU的计算能力、人工智能的算法能力、能源的利用率等等。
环境改变->我们改变->适者生存