性能测试箴言:
在应用程序的生命周期中,应尽早建立性能测试意识。
获取性能需求
性能相关的需求可以定义为“非功能性需求”。
对于任何一个新项目,都应该问问以下的这些问题:
- 应用程序部署后需要支持多少最终用户? 6个月后? 12个月后?2年后呢?
- 这些用户分布在哪里?他们如何与系统建立连接的?
- 应用程序部署后有多少同时在线的用户?6个月后? 12个月后?2年后呢?
这些问题的答案将会引出其他一些问题,比如:
- 对于每个应用程序,我需要多少台服务器?这些服务器的配置是什么?
- 我们需要提供什么类型的网络基础设施?
在实施有效的性能测试策略之前,需要解决很多问题,当然,所谓性能测试,可不仅仅是创建负载,并观察系统响应这么简单的事情。应该重点包含以下这些内容:
- 选择一个合适的性能测试工具
- 设计一个合适的性能测试环境
- 设置切合实际的测试性能目标
- 确保和编写被测应用程序足够稳定
- 做到代码冻结
- 确定和编写关键业务脚本。
- 提供高质量、足够的测试数据。
- 确保准确的性能测试设计。
- 确定监控服务器和网络的关键性能指标(KPI)
- 安排有足够的时间进行有效的性能测试
关键性能指标
- 可用性或正常运行时间:应用程序必须在任何时候对最终用户都是可用的,除非在计划的维护阶段,在运行过程中并发或吞吐量方面必须达到指标
- 并发性、扩展性和吞吐量
- 响应时间:当用户数量增加时,一般总是会增加一些响应时间,但是随着负载的增加,不应该出现阻塞的情况。
- 网络容量: 数据量(在网络上传输的数据量)/数据吞吐量(在网络上传送的数据流量)/数据错误率
- 服务器容量:CPU/MEMORY/磁盘I/O /磁盘空间
一个好的经验法则是在预计投入使用的并发数和吞吐量指标基础上增加10%。这样测试就可以超出预期的要求
确保在性能测试过程中应用程序足够稳定
评估应用程序是否适合进行性能测试:
- 大数据量展性
- 执行效率不佳的SQL语句
- 应用程序的未知错误
做到代码冻结,保持代码版本的一致性,对于性能测试来说是至关重要的。