什么是性能测试?
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
在软件开发中,系统的性能是一个很大的概念,对一个软件系统而言性能包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等。
性能测试主要是针对系统的性能指标制定性能测试方案,执行测试用例,得出测试结果来验证系统的性能指标是否满足既定值。
性能指标里可能包括系统各个方面的能力,如系统并发处理能力,系统响应时间,批量业务处理能力等等。
根据以下五个疑问进行认识性能测试
1. WHY: 为什么要进行性能测试 |
2. WHAT: 关注的性能测试内容 |
3. WHY: WHO: 哪些人员关注性能 |
4. WHY: WHERE: 性能测试的关注领域 |
5.WHY:WHEN: 何时进行性能测试 |
1. WHY: 为什么要进行性能测试
做性能测试我们主要是以用户的角度思考用户的体验,因此我们要考虑一下:
1. 应用程序是否能够很快的响应用户的要求?
2. 应用程序是否能处理预期的用户负载并有盈余能力?
3. 应用程序是否能处理业务所需要的事务数量?
4. 在预期和非预期的用户负载下,应用程序是否稳定?
5. 是否能确保用户在真正使用软件时获得舒服的体验?
那么出现这些问题的根源是什么?
比如:在多种平台上的数百个服务器
异构系统、多种应用
数千个工作站
局域网、广域网和其他分类型的分布式网络体系结构
交错的故障点
都有可能出现导致软件的性能下降,
2.WHAT:(关注什么)
1.做性能测试时,主要要关注这几方面:
2.并发用户数/吞吐量
3.平均响应时间
4.服务器资源占用情况
5.可靠性、可扩展性
6.发现引起系统问题的原因,关注采用何种技术提高系统性能
软、硬件配置是否合适(容量规划/硬件选型)
3.WHO:(关注的内容)
不同的对象关注的对象不同,一个软件的开发是由多部门协作,每个部门的关注点不同,使得软件顺利完成!
开发人员
系统架构:架构设计是否合理?
数据库设计:数据库设计是否存在问题?
软件本身的问题如:内存泄漏?
代码:代码是否存在性能问题?系统中是否存在不合理的内存使用方式?
设计和代码:系统中是否存在不合理的线程同步方式和不合理的资源竞争?
系统管理人员(操作系统、网络、服务器等等)
资源利用率:应用服务器和数据库资源使用状况合理吗?
系统容量:系统最多能支持多少用户的访问?系统最大的业务处理量是多少?
系统稳定性:系统是否能支持7X24小时的业务访问?
系统可扩展性:系统是否能够实现扩展?系统性能可能的瓶颈在哪里?更换哪些设备能够提高系统性能?
用户
响应时间:过长时间的等待会让使用者烦躁不安;
对于一般的web网站来说,在欧美国家普遍的标准为原则3/5/8(2/5/10):
3: 3秒钟用户会觉得是一个很好的体验。
5: 5秒钟用户可能会觉得差了一点,还行,比较好。
8: 8秒钟是用户所能承受的最大极限
系统稳定性 :出现HTTP500错误或数据库崩溃会让用户对系统失去信心
业务人员
参数:如何向用户提供参数,例如支持多少用户使用?响应时间是多少?
测试人员以上所有层面都需要关注,是否能够发现系统中存在的瓶颈?是否真实有效的评估系统性能能力?测试人员都要全面考虑! |
WHERE:(关注领域的不同)
能力验证
性能测试中最简单也是最常用的一个应用领域,主要关心的是“在给定的条件下,系统能否具有预期的表现”。
规划能力
规划能力领域与能力验证领域有些不同,其主要关心的是“应该如何才能使系统具有我们要求的性能能力”或 是“在某种可能发生的条件下,系统具有如何的性能能力
性能调优
主要应用于对系统性能进行调优。一般来说,性能调优活动会和其他领域的活动交杂在一起。是一种在开发
阶段和测试阶段都可能会涉及到的性能测试应用领域。
发现缺陷
主要该应用领域的主要目的是通过性能测试的手段来发现系统中存在的缺陷
5.WHEN:(何时测试)
待功能完成稳定后,进行完系统功能测试之后就可以进行性能测试。