性能测试可以发现项目中很多隐藏的问题,比如:sql查询慢的语句优化、内存泄漏、内存溢出、线程安全、线程死锁等问题,为上线后项目并发和长时间运行去除隐患。
性能测试的步骤:
step1:
从研发那里得到接口清单、实际场景中的并发数量(tps)、以及相应时间(rt)。
step2:
测试人员根据接口清单调试脚本---埋底数据---要考虑到脚本与实际场景一致,不能自己创造出问题。
step3:
对各个服务器的资源进行监控,监控cpu和menmory用serveragent、或者granfa,granfa的好处在于能从整体上查看到服务器的资源情况以及时段波峰。
用pinpoint监控请求的接口的详细信息(成功和失败请求笔数、接口请求时候的层级方法调用、堆情况和gc情况)
用jvm监控应用的堆内存情况和线程情况。
用jconsole查看应用的详细内存情况,比如新生代、老年代内存。
连接数据库,找研发要数据库的实例、用户名和密码、以及测试过程中需要用到的表名称。
step4:
编写性能测试方案,主要模块:要测试的接口以及指标值、测试的环境、测试用例的设计、以及测试的准出准则。
主要是:测试用例的设计,先对单个接口进行指标验证,指标验证通过后,再对单个接口进行负载测试,找出最大负载量,再对好几个接口混合后进行长时间测试(5--10小时)。
主要监控:cpu和内存。
step5:
执行测试、在测试中发现问题后需要及时发给研发修复。格式为:场景--什么问题--如何调优。
对你的问题描述清楚,研发解决后需要形成闭环,整理出性能问题,以便测试报告中整合。
step6:
所有的性能问题回归测试通过后,测试通过,发出测试报告以便全员知晓情况。
测试报告包括:测试的结论、测试的详情(基准、负载、混合场景)、测试问题的回归情况、以及风险的预估。
step7:
大功告成,总结下本次性能测试中遇到的问题以及归档。
好啦,此次的性能测试过程就介绍在这里,如果大家有什么需要讨论的,欢迎留言哈。