软件健壮性测试种类

温柔似野鬼°
880次浏览
2021年02月21日 09:07
最佳经验
本文由作者推荐

-

2021年2月21日发(作者:粉菊花)


软件健壮性测试种类



一、


安全测试


安全测试检查系统对非法侵入的防范能力。


安全测试期间,


测试人员假扮非法入侵者,


采用


各种办法试图突破防线。




安全测试


-


相关举例



例如,

< br>①想方设法截取或破译口令;


②专门定做软件破坏系统的保护机制;


③故意导致系统


失败,企图趁恢复之机非法进入;④试图通过浏览非保密数据 ,推导所需信息,等等。理论


上讲,


只要有足够的时间和资源,


没有不可进入的系统。


因此系统安全设计的准则是,

< p>
使非


法侵入的代价超过被保护信息的价值。此时非法侵入者已无利可图。< /p>



二、


恢复测试,

英文是


Recovery testing




恢复测试是测试一 个系统从如下灾难中能否很好地恢复,如遇到系统崩溃、硬件损坏


或其他灾难性问题。< /p>


恢复测试指通过人为的让软件


(或者硬件)


出现故障来检测系统是否能


正确的恢复,通常关注恢复所需的时间以及恢复的程度。< /p>



恢复测试主要检查系统的容错能力。当系统出错时,能否在指定 时间间隔内修正错误


并重新启动系统。


恢复测试首先要采用各种 办法强迫系统失败,


然后验证系统是否能尽快恢


复。

< p>
对于自动恢复需验证重新初始化



reiniti alization




检查点


(checkpointing mechanisms)



数据恢复


(data recovery)


和重新启动



(r estart)


等机制的正确性;对于人工干预的恢复系统,


还 需估测平均修复时间,确定其是否在可接受的范围内。



三、性能测试





性能测试图线


性能测试是通过自动化的测试工具模拟多种正常、


峰值以及异常负载条件来对系统的 各项性


能指标进行测试。


负载测试和压力测试都属于性能测试,


两者可以结合进行。


通过负载测试,


确 定在各种工作负载下系统的性能,


目标是测试当负载逐渐增加时,


系统各项性能指标的变


化情况。


压力测试是通过确定一个系统 的瓶颈或者不能接收的性能点,


来获得系统能提供的


最大服务级 别的测试。




制定目标和分析系统




选择测试度量的方法




学习的相关技术和工具




制定评估标准




设计测试用例




运行测试用例




分析测试结果



性能测试方法




基准测试




性能规划测试




渗入测试




峰谷测试



性能测试工具介绍




结束语




测试类型




分析与调优基本原则



展开



性能测试在软件的质量保证中起 着重要的作用,


它包括的测试内容丰富多样。


中国软件评测


中心将性能测试概括为三个方面:


应用在客户端性能的测试、


应用在网络上性能的测试和应


用在服务器端性能的测试。


通常情况下,


三方面有效、


合理的结合,

< p>
可以达到对系统性能全


面的分析和瓶颈的预测。



应用在客户端性能的测试



应用在客户 端性能测试的目的是考察客户端应用的性能,


测试的入口是客户端。

它主要包括


并发性能测试、疲劳强度测试、大数据量测试和速度测试等,其中并发性 能






性能测试图像



测试是重点。



并发性能测试是重点



并发性能测试的 过程是一个负载测试和压力测试的过程,


即逐渐增加负载,


直到 系统的瓶颈


或者不能接收的性能点,


通过综合分析交易执行指标 和资源监控指标来确定系统并发性能的


过程。负载测试(


Loa d


Testing


)是确定在各种工作负载下系统的性能,目 标是测试当负载


逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、


CPU


负载、内存使用


等来决定系统的性能 。


负载测试是一个分析软件应用程序和支撑架构、


模拟真实环境 的使用,


从而来确定能够接收的性能过程。压力测试(


Stre ss Testing


)是通过确定一个系统的瓶颈或


者不能接 收的性能点,来获得系统能提供的最大服务级别的测试。



并发 性能测试的目的主要体现在三个方面:


以真实的业务为依据,


选 择有代表性的、


关键的


业务操作设计测试案例,


以评价系统的当前性能;


当扩展应用程序的功能或者新的应用程序


将要被部署时,


负载测试会帮助确定系统是否还能够处理期望的用户负载,< /p>


以预测系统的未


来性能;


通过模拟成百上 千个用户,


重复执行和运行测试,


可以确认性能瓶颈并优化和调 整


应用,目的在于寻找到瓶颈问题。



当一家企业自己组织力量或委托软件公司代为开发一套应用系统的时候,


尤其是以后在生 产


环境中实际使用起来,


用户往往会产生疑问,


这套系统能不能承受大量的并发用户同时访问


?


这类 问题最常见于采用联机事务处理


(OLTP)


方式数据库应用、


Web


浏览和视频点播等系统。


这种问 题的解决要借助于科学的软件测试手段和先进的测试工具。



举例说明:电信计费软件



众所周知, 每月


20


日左右是市话交费的高峰期,全市几千个收费网点同时 启动。收费过程


一般分为两步,


首先要根据用户提出的电话号码 来查询出其当月产生费用,


然后收取现金并


将此用户修改为已交 费状态。


一个用户看起来简单的两个步骤,


但当成百上千的终端 ,


同时


执行这样的操作时,


情况就大不 一样了,


如此众多的交易同时发生,


对应用程序本身、


操作


系统、


中心数据库服务器、


中间件服务器、


网络设备的承受力都是一个严峻的考验。


决策者


不可能在发生问题后才考虑系统的承受力,


预见软件的 并发承受力,


这是在软件测试阶段就


应该解决的问题。



目前,大多数公司企业需要支持成百上千名用户,各类应用环境以及由 不同供






性能测试图像



应商提供的元件组装起 来的复杂产品,


难以预知的用户负载和愈来愈复杂的应用程序,


使公


司担忧会发生投放性能差、


用户遭受反应慢、


系统失灵等问题。


其结果就是导致公司收益的


损失。



如何模拟实际情况呢


?

< p>
找若干台电脑和同样数目的操作人员在同一时刻进行操作,


然后拿秒


表记录下反应时间?



这样的手工作坊式的测 试方法不切实际,且无法捕捉程序内部变化情


况,这样就需要压力测试工具的辅助。



测试的基本策略是自动负载测试,


通过在 一台或几台


PC


机上模拟成百或上千的虚拟用户同


时执行业务的情景,


对应用程序进行测试,


同时记录 下每一事务处理的时间、


中间件服务器


峰值数据、


数据库状态等。


通过可重复的、


真实的测试能够彻底 地度量应用的可扩展性和性


能,


确定问题所在以及优化系统性能 。


预先知道了系统的承受力,


就为最终用户规划整个运


行环境的配置提供了有力的依据。



并发性能测试前的准备工作



测试环境 :


配置测试环境是测试实施的一个重要阶段,


测试环境的适合与 否会严重影响测试


结果的真实性和正确性。


测试环境包括硬件环 境和软件环境,


硬件环境指测试必需的服务器、


客户端、网络连 接设备以及打印机


/


扫描仪等辅助硬件设备所构成的环境;软件 环境指被测


软件运行时的操作系统、数据库及其他应用软件构成的环境。



一个充分准备好的测试环境有三个优点:


一个稳定、


可重复的测试环境,


能够保证测试结果


的正确;


保证达到测试执行的技术需求;


保证得到正确的、


可重复的以及易理解的测试结果。



测试工 具:


并发性能测试是在客户端执行的黑盒测试,


一般不采用手工 方式,


而是利用工具


采用自动化方式进行。

目前,


成熟的并发性能测试工具有很多,


选择的依据主要是 测试需求


和性能价格比。著名的并发性能测试工具有


QALoa d



LoadRunner



Benchmark


Factory



Webstress


等。这些测试工具都是自动化负载测试工具,通过 可重复的、真实的测试,能够


彻底地度量应用的可扩展性和性能,


可以在整个开发生命周期、


跨越多种平台、


自动执行测


试任务,可以模拟成百上千的用户并发执行关键业务而完成对应用程序的测试。



测试数据:


在初始的测试环境中需要输入一些适当的 测试数据,


目的是识别数据状态并且验


证用于测试的测试案例,


在正式的测试开始以前对测试案例进行调试,


将正式测试开始时 的


错误降到最低。


在测试进行到关键过程环节时,


非常有必要进行数据状态的备份。


制造初始


数据意味 着将合适的数据存储下来,


需要的时候恢复它,


初始数据提供了 一个基线用来评估


测试执行的结果。



在测试正式执行时,


还需要准备业务测试数据,


比如测试并发查 询业务,


那么要求对应的数


据库和表中有相当的数据量以及数据 的种类应能覆盖全部业务。



模拟真实环境测试,


有些软件,


特别是面向大众的商品化软件,


在测试时 常常需要考察在真


实环境中的表现。


如测试杀毒软件的扫描速度 时,


硬盘上布置的不同类型文件的比例要尽量


接近真实环境,这 样测试出来的数据才有实际意义。



并发性能测试的种类与指标



并发性能 测试的种类取决于并发性能测试工具监控的对象,



QALoa d


自动化负载测试工具


为例。软件针对各种测试目标提供了


DB2



DCOM



ODBC



ORACLE

< p>


NETLoad



Co rba



QARun



SAP



SQLServer



Sybase



Telnet



TUXEDO



U NIFACE



WinSock



WWW



Java


Script


等不同的监控对象,支持


Windows



UNIX


测试环境。



最关键的仍然是测试过程中对监控对象的灵活应用,例如目前三层结构的运行模式广 泛使


用,


对中间件的并发性能测试作为问题被提到议事日程上来 ,


许多系统都采用了国产中间件,


选择


Java Script


监控对象,手工编写脚本,可以达到测试目的。



采用自动化负载测试工具执行的并发性能测试,


基本遵循的测试 过程有:


测试需求与测试内


容,测试案例制定,测试环境准备, 测试脚本录制、编写与调试,脚本分配、回放配置






性能测试图像



与加载策略,测试执行 跟踪,结果分析与定位问题所在,测试报告与测试评估。



并发 性能测试监控的对象不同,


测试的主要指标也不相同,


主要的测 试指标包括交易处理性


能指标和


UNIX


资源监控。


其中,


交易处理性能指标包括交易结果、


每分钟交易数、


交易响


应时间(


Min


:最小服务器响应时间;


Mean


:平均服务器响应时间;


Max


:最大服务器响应< /p>


时间;


StdDev


:事务处理服务器响 应的偏差,值越大,偏差越大;


Median


:中值响应时间;


90%



90%


事务处理的服务器响应时间)


、虚拟并发用户数。



应用实例:



新华社多媒体数据库



V1.0”


性能测试


< /p>


中国软件评测中心(


CSTC


)根据新华 社技术局提出的《多媒体数据库(一期)性能测试需


求》和


GB /T


17544


《软件包质量要求和测试》的国家标准,使用 工业标准级负载测试工具


对新华社使用的


新华社多媒体数据库



V1.0”


进行了性能测试。



性能测试的目的是模拟多用户并发访问新华社多媒体数据库,


执行关键 检索业务,


分析系统


性能。



性能测试的重点是针对系统并发压力负载较大的主要检索业务,进行并发测试和疲劳测试,


系统采用


B/S


运行模式。

< br>并发测试设计了特定时间段内分别在中文库、


英文库、


图 片库中进


行单检索词、


多检索词以及变检索式、


混合检索业务等并发测试案例。


疲劳测试案例为在中


文 库中并发用户数


200


,进行测试周期约


8


小时的单检索词检索。在进行并发和疲劳测试的


同时,监测 的测试指标包括交易处理性能以及


UNIX


< br>Linux




Oracle< /p>



Apache


资源等。



测试结论:在新华社机房测试环境和内网测试环境中,


100M


带宽情况下,针对规定的各并


发测试案例,系统能够 承受并发用户数为


200


的负载压力,最大交易数


/


分钟达到


78.73


,运


行基本稳定,但随着负载压力增大,系统性能有所衰减。



系统能够承受


200


并发用户数持续周期约


8


小时的疲劳压力,基本能够稳定运行。



通过对系统


UNIX


< p>
Linux




Orac le



Apache


资源的监控,系统 资源能够满足上述并发和


疲劳性能需求,且系统硬件资源尚有较大利用余地。

< p>


当并发用户数超过


200


时,监控到


HTTP


500



connect


和超时错误,且


Web


服务器报内存


溢出错误,系统应进一步提高性能,以支持更大并发用 户数。



建议进一步优化软件系统,充分利用硬件资源,缩短交 易响应时间。



疲劳强度与大数据量测试



疲劳测试是 采用系统稳定运行情况下能够支持的最大并发用户数,持续执行一段时间业务,


通过综合 分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。



疲劳强度测试可以采用工具自动化的方式进行测试,也可以手






性能测试图像



工编写程序测试,其中后者占的比例较大。


< br>一般情况下以服务器能够正常稳定响应请求的最大并发用户数进行一定时间的疲劳测试,

< br>获


取交易执行指标数据和系统资源监控数据。


如出现错误 导致测试不能成功执行,


则及时调整


测试指标,


例如降低用户数、


缩短测试周期等。


还有一种情况的疲 劳测试是对当前系统性能


的评估,用系统正常业务情况下并发用户数为基础,进行一定时 间的疲劳测试。



大数据量测试可以分为两种类型:

< p>
针对某些系统存储、


传输、


统计、


查询等业务进行大数据


量的独立数据量测试;


与压力性 能测试、


负载性能测试、


疲劳性能测试相结合的综合数据量


测试方案。大数据量测试的关键是测试数据的准备,可以依靠工具准备测试数据。

< p>


速度测试目前主要是针对关键有速度要求的业务进行手工测速度,


可以在多次测试的基础上


求平均值,可以和工具测得的响应时间等指标 做对比分析。



应用在网络上性能的测试



应用在网络 上性能的测试重点是利用成熟先进的自动化技术进行网络应用性能监控、


网络应


用性能分析和网络预测。



网络应用性能分析



网络应用性能分析 的目的是准确展示网络带宽、延迟、负载和


TCP


端口的变化是 如何影响


用户的响应时间的。


利用网络应用性能分析工具,


例如


Application Expert



能够发现应用的


瓶颈,


我们可知应 用在网络上运行时在每个阶段发生的应用行为,


在应用线程级分析应用的


问题。


可以解决多种问题:


客户端是否对数据库服务器 运行了不必要的请求?当服务器从客


户端接受了一个查询,


应用 服务器是否花费了不可接受的时间联系数据库服务器?在投产前


预测应用的响应时间;< /p>


利用


Application Expert

调整应用在广域网上的性能;


Application Expert


能够让你快速、


容易地仿真应用性能,


根据最终用户 在不同网络配置环境下的响应时间,



户可以根据自己的条件决 定应用投产的网络环境。



网络应用性能监控



在系统试运行之后 ,


需要及时准确地了解网络上正在发生什么事情;


什么应用在运 行,


如何


运行;多少


PC


正在访问


LAN



W


AN


;哪些应用程序导致系统瓶颈或资源竞争,这时网络


应用性能监控以及网络资源管理对系统的正常稳定运行是非常关键的。


利用网 络应用性能监


控工具,可以达到事半功倍的效果,在这方面我们可以提供的工具是


Network


V


antage

< p>
。通


俗地讲,


它主要用来分析关键应用程序的性能 ,


定位问题的根源是在客户端、


服务器、


应用


程序还是网络。


在大多数情况下用户较关心的问题还有哪 些应用程序占用大量带宽,


哪些用


户产生了最大的网络流量,这 个工具同样能满足要求。



网络预测



考虑到系统未来发展的扩展性,


预测网络流量的变化、


网络结构的变化对用户系统的影响非


常重要。


根 据规划数据进行预测并及时提供网络性能预测数据。


我们利用网络预测分析容量


规划工具


PREDICTOR


可以作到:


设置服务水平、


完成日网络容量规划、


离线测 试网络、



络失效和容量极限分析、


完 成日常故障诊断、


预测网络设备迁移和网络设备升级对整个网络


的影响。



从网络管理软件获取网络拓扑结构、


从现有的流量监控软件获取流量信息


(若没有这类软件


可人工生成流量数据)


,这样可以得到现有网络的基本结构。在基本结构的基础上,可根 据


网络结构的变化、网络流量的变化生成报告和图表,说明这些变化是如何影响网络性能 的。


PREDICTOR


提供如下信息:


根据预测的结果帮助用户及时升级网络,


避免因关键设备超过


利用阀值导致系统性能下降;


哪个网络设备需要升级,


这样可减 少网络延迟、


避免网络瓶颈;


根据预测的结果避免不必要的网络 升级。



应用在服务器上性能的测试



对于应用在服务器上性能的测试,


可以采用工具监控,


也可以使用系统本身的监控命令,




Tuxedo


中可以使用


Top


命令监控资源使用情况。实施测试的目的是实现服务器






性能测试图像



设备、服务器操作系统 、数据库系统、应用在服务器上性能的全面监控,测试原理如下图。



UNIX


资源监控指标和描述



监控指标



描述



平均负载



系统正常状态下,最后


60


秒同步进程的平均个数



冲突率



在以太网上监测到的每秒冲突数



进程


/


线程交换率



进程和线程之间每秒交换次数



CPU


利用率



CPU


占用率(


%




磁盘交换率



磁盘交换速率




接收包错误率



接收以太网数据包时每秒错误数



包输入率



每秒输入的以太网数据包数目



中断速率



CPU


每秒处理的中断数



输出包错误率



发送以太网数据包时每秒错误数



包输入率



每秒输出的以太网数据包数目



读入内存页速率



物理内存中每秒读入内存页的数目



写出内存页速率



每秒从物理内存中写到页文件中的内存页数



目或者从物理内存中删掉的内存页数目



内存页交换速率



每秒写入内存页和从物理内存中读出页的个数



进程入交换率



交换区输入的进程数目



进程出交换率



交换区输出的进程数目



系统


CPU


利用率



系统的


CPU


占用率(


%



用户


CPU

< br>利用率



用户模式下的


CPU< /p>


占用率(


%




磁盘阻塞



磁盘每秒阻塞的字节数



编辑本段目的



目的是验证软件系统是 否能够达到用户提出的性能指标,


同时发现软件系统中存在的性能瓶

颈,优化软件,最后起到优化系统的目的。



包括以下几个方面



1


.评估系统的能力,测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能


力,并帮助作出决策。



2


. 识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体


系 的瓶颈或薄弱的地方。



3


.系统调优 :重复运行测试,验证调整系统的活动得到了预期的结果,从而改进性能。


< p>
检测软件中的问题:


长时间的测试执行可导致程序发生由于内存泄露引起的 失败,


揭示程序


中的隐含的问题或冲突。



4


.验证稳定性(


resilie nce


)可靠性(


reliability


:在一个生产负荷下执行测试一定的时间是


评估系统稳定 性和可靠性是否满足要求的唯一方法。



编辑本段类型



性能测试类型包括负载测试,强度测试,容量测试等。



负载测试(


Load Testing



:负载测试是一种主要为了测试软件系统是否达到需求文档设计的

目标,


譬如软件在一定时期内,


最大支持多少并发用户数,


软件请求出错率等,


测试的主要


是软件 系统的性能。



强度测试



Stress Testi ng




强度测试也就是压力测试,< /p>


压力测试主要是为了测试硬件系统是


否达到需求文档设计的性能目 标,譬如在一定时期内,系统的


cpu


利用率,内存使用率,磁



I/O


吞吐率,网络吞吐量等,压力 测试和负载测试最大的差别在于测试目的不同。



容量测试(


V


olume Testi ng



:确定系统最大承受量,譬如系统最大用户数,最大存储 量,最


多处理的数据流量等。



编辑本段观察指标



性能测试主要是通 过自动化的测试工具模拟多种正常、


峰值以及异常负载条件来对系统的各


项性能指标进行测试。


负载测试和压力测试都属于性能测试,

< br>两者可以结合进行。


通过负载


测试,

确定在各种工作负载下系统的性能,


目标是测试当负载逐渐增加时,


系统各项性能指


标的变化情况。


压力测试是通过确定一 个系统的瓶颈或者不能接收的性能点,


来获得系统能


提供的最大 服务级别的测试。



在实际中作中我们经常会对两种类型软件进 行测试:


bs



cs

< br>,这两方面的性能指标一般需


要哪些内容呢?



Bs


结构程序一般会关注的通用指标如下(简)




Web


服务器指标指标:



* A


vg Rps:


平均每秒钟响 应次数


=


总请求时间



/


秒数;




* A


vg time to last byte per terstion



mstes


)< /p>


:平均每秒业务脚本的迭代次数,有人会把这两


者混淆;




* Successful Rounds


:成功的请求;




* Failed Rounds


:失败的请求;




* Successful Hits


:成功的点击次数;




* Failed Hits


:失败的点击次数;




* Hits Per Second


:每秒点击次数;




* Successful Hits Per Second


:每秒成功的点击次数;




* Failed Hits Per Second


:每秒失败的点击次数;




* Attempted Connections


:尝试链接数;



CS


结构程序,由于一般软件后台通常为数据库,所以我们更注重数据库的测试指标:



* User 0 Connections


:用户连接数,也就是数据库的连接数量;




* Number of deadlocks


:数据库死锁;




* Buffer Cache hit


:数据库

< p>
Cache


的命中情况



当然,在实际中我们还会察看多用户测试情况下的内存,


CPU


,系统资源调用情况。这些指


标其实是引申出来性能测试中的一种:竞争测试。什么是竞 争测试,软件竞争






性能测试图像


< br>使用各种资源(数据纪录,内存等)


,看他与其他相关系统对资源的争夺能力。< /p>



我们知道软件架构在实际测试中制约着测试策略和工具的选择。


如何选择性能测试策略是我


们在实际工作中需要了解的。一般软 件可以按照系统架构分成几种类型:



c/s


client/Server


客户端


/


服务器架构



基于客户端

< p>
/


服务器的三层架构



基 于客户端


/


服务器的分布式架构



b/s


基于浏览器


/Web


服务器的三层架构



基于中间件应用服务器的三层架构


l


基于


Web


服务器和中间件的多层架构


l


编辑本段步骤



在每种不同的系统 架构的实施中,


开发人员可能选择不同的实现方式,


造成实际情 况纷繁复


杂。


我们不可能对每种技术都详细解说,


这里只是介绍一种方法提供给你如何选择测试策略,


从而帮助分析软件不同部 分的性能指标,进而分析出整体架构的性能指标和性能瓶颈。



由于工程和项目的不同,


所选用的度量,


评估方法也有不同之处 。


不过仍然有一些通用的步


骤帮助我们完成一个性能测试项目。 步骤如下



1




制定目标和分析系统



2




选择测试度量的方法



3




学习的相关技术和工具



4




制定评估标准



5




设计测试用例



6




运行测试用例



7




分析测试结果



制定目标和分析系统


-


-


-


-


-


-


-


-