软件测试,作为软件工程的一部分,随着软件生产的产业化运作应运而生,是软件生产的一个动态监控过程,对软件开发全过程进行检测,可以随时发现问题、报告问题,并重新评估新的风险,设置新的监控基准,并持续下去。软件测试是软件质量控制的过程,是对软件系统中潜在的各种风险进行评估的活动,其目的是监测和排除缺陷,以确保软件产品在可用性、功能性、可操作性等多方面满足质量需求。
目前,软件测试已经由被动的以监测和发现错误为目的发展到从软件质量控制(SQC,Software Quality Control)开始转移到软件质量保证(SQA,Software Quality Assurance),使软件测试从单纯的缺陷检测和发现覆盖到整个软件开发过程,避免了软件开发过程中由于软件需求和设计等方面的缺陷所带来的巨大风险。一个典型的软件过程可以分为测试需求分析、测试设计、测试执行、缺陷和配置管理过程等许多个不同的阶段。在软件测试技术方面也已经被细化为单元测试、集成测试、系统测试、用户验收测试等不同的测试技术。而在对软件产品质量呼声日高的今天,软件性能测试技术尤为重要。
软件性能测试“整体观”
软件的性能测试是为了检验系统或系统部件是否达到需求规格说明中规定的各类性能指标,并满足一些性能相关的约束和限制条件,它必须对系统或系统部件具有的性能(例如,速度、精度、频率)做出规定的要求。
性能测试通常在系统测试阶段执行,常常与强度测试结合起来,一般需要使用测试工具。评估测试对象的性能行为时,可以使用多种评测,这些评测侧重于获取与行为相关的数据,如响应时间、计时配置文件、执行流、操作可靠性和限制。这些评测主要在评估测试活动中进行,也可以在执行测试活动中使用性能评测评估测试进度和状态。
性能需要在各种条件下测试,这些条件包括:
1.不同的工作量和/或系统条件。
2.不同的用例/功能。
3.不同的配置。
4.性能需求在补充规格或需求规格说明书中的性能描述部分中说明。
在上述条件下执行测试时,要特别注意以下信息,并为反映这些信息的每条语句生成至少一个测试需求:
1.时间语句,如响应时间或定时情况。
2.指出在规定时间内必须出现的事件数或用例数的语句。
3.将某一项性能的行为与另一项性能的行为进行比较的语句。
4.将某一配置下的应用程序行为与另一配置下的应用程序行为进行比较的语句。
5.一段时间内的操作可靠性(平均故障时间或MTTF)。
6.配置或约束
软件性能测试工作主要包括如下几个方面:
1.动态监测:在测试执行过程中,实时获取并显示正在执行的各测试脚本的状态。
2.响应时间/吞吐量:测试对象针对特定主角和/或用例的响应时间或吞吐量的评测。
3.百分位报告:数据已收集值的百分位评测/计算。
4.比较报告:代表不同测试执行情况的两个(或多个)数据集之间的差异或趋势。
5.追踪报告:主角(测试脚本)和测试对象之间的消息/会话详细信息。
软件性能测试“方法观”
软件性能测试的方法可以根据测试目的的不同,选择不同的方法,具体如下表:
根据测试内容的不同,性能测试主要包括以下方面:
1、响应时间测试
1.响应时间测试,通常指正常单用户操作时客户端的响应时间,以及将强度测试、负载测试、压力测试结合时客户端的响应时间。
2.函数、方法、对象、子例程执行时间。
3.函数、方法调用频度及嵌套。
4.运行特定模块、按特定路径执行或处理特定数据所花费的时间。
5.处理精度。
6.如果两次运行时间相差三倍以上,则可能存在问题。
2、强度测试(压力/负载测试)
强度测试需要在反常数量、频率或资源的方式下运行系统,以检验系统能力的最高实际限度,它要求软件必须被强制在它的设计能力的极限状态下运行。
3、软件可靠性测试
这种测试经常发现的错误包括越界指针,内存泄露、栈溢出、超过两个特性之间的错误交互等,也称长序列测试(long sequence testing)、持久测试(duration testing)、耐力测试(endurance testing)。测试持续时间较长,目标是发现程序测试遗漏的错误。
原文转自:http://www.uml.org.cn/Test/201309024.asp