性能测试包含了哪些测试(至少举出3种)
压力测试、负载测试、并发测试、可靠测试、失效恢复测试。
一、性能测试概念
系统的性能是个很大的概念,覆盖面非常广泛,对于一个软件系统而言包括了执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等。
性能测试用来保证产品发布后,系统的性能满足用户的需求,性能测试在软件质量保证过程中起重要的作用
1. 响应时间(response time)
响应时间,是指系统对用户操作的反馈时间。
举例:显然,我们应该从按下“登录”按钮的那一瞬间开始计时,到登录后页面完全显示出来为止,这才是真正的用户登录时间,而不包括用户输入用户名和密码的时间以及思考停顿的时间(think time)
登录响应时间其实包括3个部分:网络传输时间,服务器处理时间,浏览器显示时间
即登录响应时间=网络传输时间*2+服务器处理时间+客户端显示时间
网络传输是双向的,所以要乘以2。网络传输时间又可以包括接入网的传输时间和互联网中的传输时间,它的大小和你所使用的上网方式有关,比如光纤一般要比adsl要快。
2. 吞吐量(throughput)(更加倾向web网站)
吞吐量,是指单位时间内流经被测系统的数据流量,一般单位为b/s,即每秒钟流经的字节数。
吞吐量是大型门户网站以及各种电子商务网站衡量自身负载能力的一个很重要的指标,一般吞吐量越大,系统单位时间内处理的数据越多,系统的负载能力也越强。
吞吐量和很多因素有关,比如服务器的硬件配置,网络的拓扑结构,软件的技术架构等。
3. 稳定性测试(reliability testing)
稳定性测试,也叫可靠性测试(reliability testing),是指连续运行被测系统,检查系统运行时的稳定程度。
我们通常用mtbf(mean time between failure,即错误发生的平均时间间隔)来衡量系统的稳定性,mtbf 越大,系统的稳定性越强
4. 负载测试(load testing)
负载测试,是性能测试的一种,通常是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。
5. 压力测试(stress testing)
压力测试,是性能测试的一种,通常是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。
6. 负载压力测试
负载压力测试是性能测试的重要组成部分,负载压力测试包括:
a.并发性能测试(重点)
考察客户端应用的性能,测试的入口是客户端并发性能测试的过程,是一个负载测试和压力测试的过程。即逐渐增加并发虚拟用户数负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标、资源监控指标等来确定系统并发性能的过程。并发性能测试是负载压力测试中的重要内容。负载均衡的理解
并发(concurrency)
并发,是指多个同时发生的操作。比如有10个用户同时点击“登录”按钮(注意是同时)
需要注意的是,并发和并行不是一个概念,并发是同时发生,并行是同步运行。
1)主要目的是发现系统中可能隐藏的并发访问时的问题
2)主要关注系统可能存在的并发问题,例如系统中的内存泄漏、死锁等方面的问题
3)这种方法可以在开发的各个阶段使用,需要相关的测试工具的配合和支持
b.  疲劳强度测试
通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。
疲劳强度测试案例制定的原则是保证系统长期不间断运行的业务量,并且应该尽量去满足该条件。
c.  大数据量测试
大数据量测试的两种类型
·独立的数据量测试
针对某些系统存储、传输、统计、查询等业务进行大数据量测试
·综合数据量测试
和压力性能测试、负载性能测试、并发性能测试、疲劳性能测试相结合的综合测试方案
7. 配置测试(configuration testing)基准测试
通过对被测系统的软/硬环境的调整,了解各种不同环境对系统性能影响的程度,从而到体系统各项资源的最优分配原则。
这种方法的特点有:
1)它的主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优方法。
2)一般在对系统性能状况有一定的了解后进行
3)一般用于性能调优和规划能力
8. 可靠性测试(reliability testing)
软件的可靠性包含很多的内容,比如:成熟性、容错性等等,但这里所说的可靠性测试主要是指通过给系统加载一定的业务压力的情况下,让应用持续运行一段时间,测试系统在这种条件下是否能够稳定运行。
它的特点有:
1)主要目的是验证系统是否支持长期稳定的运行
2)需要在压力下持续一段时间的运行
3)需要关注系统的运行状况
9. 失效恢复测试方法(failover testing)
它主要是针对有冗余备份和负载均衡的系统设计的。它可以人用来检验如果系统局部发生故障,用户是否能够继续使用系统;以及如果这种情况发生,用户将受到多大程度的影响。
它的主要特点有:
1)主要目的是验证在局部故障情况下,系统能否继续使用。
2)这种性能测试方还需要指出,当问题发生时“能支持多少用户访问”的结论和“采取何种应急措施”的方案
3)一般来说,只有对系统持续运行指标有明确要求的系统才需要进行这种类型的测试
性能测试原理
1、性能测试的主要手段是通过产生模拟真实业务的压力对被测系统进行加压,研究被测系统在不同压力
情况下的表现,出其潜在的瓶颈。
2、性能测试的主要手段是通过产生模拟真实业务的压力对被测系统进行加压,研究被测系统在不同压力
情况下的表现,出其潜在的瓶颈。因此,一个良好的性能测试工具必需能做到以下几点:
●提供产生压力的手段及调度
●对后台系统进行监控及数据收集
●对压力数据进行分析及报告生成
3、性能测试的工具组成
二、兼容性的概念
•软件兼容性测试就是检查软件在一个特定的硬件、软件、操作系统、网络等环境下是否能够正常地运行,检查软件之间是否能够正确地交互和共享信息,以及检查软件版本之间的兼容性问题。
•因此,兼容性测试包含三类基本的测试,分别为:
–平台和设备兼容测试
–向下兼容测试
–交叉兼容测试。
平台和设备兼容测试
•平台和设备兼容测试就是测试软件在给定的系统平台上或者正常运行,或者不能正常运行。
•现有的操作系统、硬件和软件配置非常丰富,它们可能的组合数量非常多。
–例如测试某个软件在同一个操作系统的不同版本下能否正常工作。
向下兼容测试
•向下兼容测试就是测试软件新版本中保留它早期版本的功能的情况。
•不仅系统本身必须能够升级以前的版本,而且还必须考虑以前版本的数据和其他信息,测试应用程序是否向下兼容以前版本的数据,用户的首选设置和其他设置在升级以后是否保留。
–例如应用程序升级后,读人现存所有数据库,能否像以前版本一样对其进行处理。
交叉兼容测试
•交叉兼容测试是验证共同存在的两个相关但不同的软件产品之间的兼容性,这两种相关软件产品可以同时运行在一台计算机上,也可以是运行在通过Intemet连接的不同计算机之间。
•例如:从Web页面剪切文字,在字处理程序中打开的文档中粘贴;或者从电子表格程序保存财务数据,在另一个完全不同的电子表格程序中读入。
版本兼容选择原则
•流行程度:利用销售记录选择前100或者1000个最流行的程序。
•时间:应该选择3年以内的程序和版本。
•类型:尽可能覆盖用户使用的常见类型,例如,文字处理、电子表格、画图、通信等类型,并从每一个类型中选择测试软件。
•生产厂商:选择著名生产厂商的产品。
等等
总结
随着软件逐步被推向市场,被更多的用户安装,兼容性问题也日益凸现出来了。理论上任何两个软件之
间都有冲突的可能,因此软件的兼容性就成为了衡量软件好坏的一个重要指标。兼容性测试是指测试软件在特定的硬件产台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能很好地运行的测试。简单的说,兼容性测试是指测试某新开发的软件在某一特定环境下与各种软件的协调性,软件之间能否很好的运作。例如,会不会有相互不良的影响,还有软件和硬件之间能否发挥很好的效率工作,会不会影响或导致系统的崩溃等。
兼容性测试是为了验证在规定条件下共同使用若干个实体或实现数据格式转换时能满足有关要求能力的测试。有两类基本的兼容性测试:
1、向下兼容是测试软件新版本保留它早期版本的功能的情况;
2、交错兼容性测试是要验证共同存在的两个相关但不同的产品之间的兼容性。
兼容性测试一般需做到:
1、验证软件在规定条件下共同使用若干个实体时满足有关要求的能力;
2、验证软件在规定条件下与若干个实体实现数据格式转换时能满足有关要求能力;
三、软件的可维护性
可以把软件的可维护性定性地定义为:维护人员理解、改正、改动或改进这个软件的难易程度。在前面的章节中曾经多次强调,提高可维护性是支配软件工程方法学所有步骤的关键目标。
决定软件可维护性的因素:维护就是在软件交付使用后进行的修改,修改之前必须理解待修改的对象,修改之后应该进行必要的测试,以保证所做的修改是正确的。如果是改正性维护,还必须预先进行调试以确定错误的具体位置。因此,决定软件可维护性的因素主要有下述5个:
1.可理解性
软件可理解性表现为外来读者理解软件的结构、功能、接口和内部处理过程的难易程度。模块化(模块结构良好,高内聚,松耦合)、详细的设计文档、结构化设计、程序内部的文档和良好的高级程序设计语言等等,都对提高软件的可理解性有重要贡献。
2. 可测试性
诊断和测试的容易程度取决于软件容易理解的程度。良好的文档对诊断和测试是至关重要的,此外,软件结构、可用的测试工具和调试工具,以及以前设计的测试过程也都是非常重要的。维护人员应该能够得到在开发阶段用过的测试方案,以便进行回归测试。在设计阶段应该尽力把软件设计成容易测试和容易诊断的。
对于程序模块来说,可以用程序复杂度来度量它的可测试性。模块的环形复杂度越大,可执行的路径就越多,因此,全面测试它的难度就越高。
3. 可修改性
软件容易修改的程度和本书第5章讲过的设计原理和启发规则直接有关。耦合、内聚、信息隐藏、局部化、控制域与作用域的关系等等,都影响软件的可修改性。
4. 可移植性
软件可移植性指的是,把程序从一种计算环境(硬件配置和操作系统)转移到另一种计算环境的难易程度。把与硬件、操作系统以及其他外部设备有关的程序代码集中放到特定的程序模块中,可以把因环境变化而必须修改的程序局限在少数程序模块中,从而降低修改的难度。
5. 可重用性
所谓重用(reuse)是指同一事物不做修改或稍加改动就在不同环境中多次重复使用。大量使用可重用的软件构件来开发软件,可以从下述两个方面提高软件的可维护性:
(1) 通常,可重用的软件构件在开发时经过很严格的测试,可靠性比较高,且在每次重用过程中都会发现并清除一些错误,随着时间推移,这样的构件将变成实质上无错误的。因此,软件中使用的可重用构件越多,软件的可靠性越高,改正性维护需求越少。
(2)很容易修改可重用的软件构件使之再次应用在新环境中,因此,软件中使用的可重用构件越多,适应性和完善性维护也就越容易。
文档
文档是影响软件可维护性的决定因素。由于长期使用的大型软件系统在使用过程中必然会经受多次修改,所以文档比程序代码更重要。
软件系统的文档可以分为用户文档和系统文档两类。用户文档主要描述系统功能和使用方法,并不关心这些功能是怎样实现的;系统文档描述系统设计、实现和测试等各方面的内容。
总的说来,软件文档应该满足下述要求:
(1) 必须描述如何使用这个系统,没有这种描述时即使是最简单的系统也无法使用;
(2) 必须描述怎样安装和管理这个系统;
(3) 必须描述系统需求和设计;
(4) 必须描述系统的实现和测试,以便使系统成为可维护的。
下面分别讨论用户文档和系统文档。
1. 用户文档
用户文档是用户了解系统的第一步,它应该能使用户获得对系统的准确的初步印象。文档的结构方式应
该使用户能够方便地根据需要阅读有关的内容。
用户文档至少应该包括下述5方面的内容:
(1) 功能描述,说明系统能做什么;
(2) 安装文档,说明怎样安装这个系统以及怎样使系统适应特定的硬件配置;
(3) 使用手册,简要说明如何着手使用这个系统(应该通过丰富例子说明怎样使用常用的系统功能,还应该说明用户操作错误时怎样恢复和重新启动);
(4) 参考手册,详尽描述用户可以使用的所有系统设施以及它们的使用方法,还应该解释系统可能产生的各种出错信息的含义(对参考手册最主要的要求是完整,因此通常使用形式化的描述技术);
(5) 操作员指南(如果需要有系统操作员的话),说明操作员应该如何处理使用中出现的各种情况。
上述内容可以分别作为独立的文档,也可以作为一个文档的不同分册,具体做法应该由系统规模决定。
2. 系统文档
所谓系统文档指从问题定义、需求说明到验收测试计划这样一系列和系统实现有关的文档。描述系统设
计、实现和测试的文档对于理解程序和维护程序来说是极端重要的。和用户文档类似,系统文档的结构也应该能把读者从对系统概貌的了解,引导到对系统每个方面每个特点的更形式化更具体的认识。本书前面各章已经较详细地介绍了各个阶段应该产生的文档,此处不再重复。
四、易用性测试
什么是软件易用性
•软件易用性是用户对软件的易使用性、质量、效率以及效果的感觉。在软件质量指标体系中,易用性(Usability):是交互的适应性、功能性和有效性的集中体现。易用性是用来衡量使用一个软件产品完成指定任务的难易程度。这跟功能性、喜欢这些相关的概念是不一样的。
•在《软件工程产品质量》质量模型中,易用性包含易见性、易学习性和易用性。即软件产品被理解、学习、使用和吸引用户的能力。
什么是软件易用性测试
易用性测试的目的在于增加软件操作的简易性,让用户容易接受软件,方便用户的日常使用。因为易用性是非功能性需求,加上易用性不像功能那样有明确的界限。所以,易用性有很多的主观成份或无法直接测量,而必须通过间接测量或观察某些属性的方式。此外,易用性是针对不同人的,开发

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。