1.什么是性能测试
性能测试是用来测试软件在系统中的运行时能力,特别是针对实时系统和嵌入式系统。性能测试可以在各个测试阶段进行,但进行的目的各有不同,有诊断性质的,有调优性质的,还有检测性质的。但对于一个系统真正的性能测试只有在系统集成测试阶段执行。性能测试的目的一方面是为了检验系统的性能是否符合要求,另一方面也是为产品的宣传提供有力的数据。
2.性能测试的分类
a。一般意义的性能测试
这类的性能测试一般单指响应时间的性能测试,如正常用户操作时客户端的响应时间
b。强度测试
强度测试需要在反常数量、频率或资源的方式下运行系统,以检验系统能力的最高实际限度,它要求软件必须被强制在它的设计能力的极限状态下运行。
c。软件可靠性测试
测试要需持续一夜,一周,或者几周的时间,目标是发现短序列测试遗漏的错误。这种测试经常发现的错误包括越界指针,内存泄漏,栈溢出,超过两个特性之间的错误交互等,也称长序列测试,持久测试,耐力测试。一般的软件平均无故障时间是一个最为重要的可靠性指标。
3.性能测试的方法
a。测试人员与应用交互的过程中,应该知道应用的响应是否缓慢,这些BUG是基于常识性知识的。不指出问题的所在,而只是警告问题的存在
b。观察测试
这种测试使用某些工具给出确切的数据,如使用秒表等工具以便给出更为清晰的概念
c。第三方测试
使用专业的性能测试工具
4.性能测试策略
a。识别系统组件
画一个网络结构图阐明应用程序的结构,包括所有的系统组件,如:客户端机器,网络,中间件,服务器等等。
b。描述系统配置
客户端机器的配置(硬件、内存、操作系统、开发工具等)
数据库类型,网络服务器种类
中间件配置
通信设备的吞吐量
c。分析使用模式
定义系统怎样有代表性的使用,决定哪几个功能对于测试是最重要的、考虑谁用系统、各种类用户的数目、各用户的常用任务、另外也要考虑影响系统反应时间的背景负载(所谓的背景负载就是在执行测试任务之前,运行于系统之内的进程所带来的负载)
d。确定任务分布状态
分析任务分布决定什么时候有峰值的数据活动,确定系统最大压力产生的时间段,依据该时间段设计测试策略
如显示的10点到12点,登录事务就由220增加到250,下午2点下降到210,那么10点到12点这个时间段就是一个高峰,对方案进行
设计的时候就要考虑到这个因素。设计测试数据应尽量遵从从小到大的原则。如:
要测试一个系统能够承受登录时的最大并发数,就要采取先假设10个,然后到20,然后到30,随着数字的增加就要减小增加的幅度,
也许是500、501、503这样一直下去。才能准确的确定真正的能够承受的最大并发数。
反面教材:
没有针对性的性能测试场景
例一:
针对各个条件的查询各自录制了一个脚本,然后又单独执行了个脚本5~10次。
结果:没有针对性,其本身目的是为了测试服务器所能承受的负载,这种测试场景完全不能达到我们当初的目的。
例二:
oracle两层数据库结构应用程序,但取数据的时候是从文件服务器而非数据库服务器读取,虽然也涉及到了数据库的一些操作。
结果:测试结果良好,但实际测试场景并不能完全反映读取数据时文件服务器的压力情况。