性能测试
- 系统开发完毕了,去做一下性能测试吧!
- 系统要验收了,做一下压力测试吧!
当听到以上的要求后,是否一脸茫然?那么我们该怎样进行一次性能测试呢?
一.性能测试基础
1.为什么进行性能测试?
- 应用程序是否能够很快的响应用户的要求?
- 应用程序是否能处理预期的用户负载并有盈余能力?
- 应用程序是否能处理业务所需要的事务数量?(这里的事务代表一系列紧密的集合,例如你的业务为购物,那么你的事务就包含:登录,选择商品,加入购物车,支付)
- 在预期和非预期的用户负载下,应用程序是否可以稳定执行?
- 是否能确保用户在真正使用软件时获得舒服的体验?
误区:提高一下硬件配置就可以提高软件的性能了,因此性能测试不重要?
答:错误,例如软件本身的问题内存泄露。①内存泄漏就会导致没有使用的内存无法被程序正常释放,很多的内存泄漏最终将造成内存溢出,然后让机器的性能下降 ②数据结构中有很多算法,我们选择一些算法的时候就要考虑它的时间复杂度,空间复杂度,因此算法的好坏,也决定了系统的性能响应时间等等,因此不仅仅提高一下硬件配置就可以提高性能了,要从多个方面去考虑。
2.性能测试关注什么?
- 并发用户数 / 吞吐量
- 平均响应时间
- 服务器资源占用情况
- 可靠性、可扩展性
- 软、硬件配置是否合理(容量规划 / 硬件选型)
3.谁关注性能测试?
(1)开发人员(算法复杂度,内存泄漏,线程安全(高并发场景),资源占用问题)
- 系统架构师:架构设计是否合理?
- 数据库设计:数据库设计是否存在问题?
- 代码:代码是否存在性能问题?系统中是否存在不合理的内存使用方式?
- 设计和代码:系统中是否存在不合理的线程同步方式和不合理的资源竞争情况?
(2)系统管理人员(操作系统、网络、服务器等等)(注重系统稳定性)
- 资源利用率:应用服务器和数据库资源使用状况合理吗?
- 系统容量:系统最多能支持多少并发用户的同时访问?系统最大的业务处理量是多少?
- 系统稳定性:系统是否能支持 7X24 小时的业务访问?
- 系统可扩展性