可靠性测试方法-测试架构师修炼之道(6)

发表于:2016-9-26 09:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:刘琛梅    来源:51Testing软件测试网原创

  4.3.3 可靠性测试方法
  可靠性测试测试的是产品在各种条件下维持规定的性能级别的能力。需要特别指出的是,可靠性测试能够顺利进行,是有一定的前提的——基本功能要先正确才行。这就为我们在测试策略中要如何安排这些测试方法的顺序提出了要求,我们将在6.6.3节中进一步讨论这些内容。
  本节中讨论的可靠性测试方法,也是一些通用的测试方法,和具体业务无关,包括:
  · 异常值输入法。
  · 故障植入法。
  · 稳定性测试法。
  · 压力测试法。
  · 恢复测试法。
  接下来我们就来分别进行讨论。
  1.异常值输入法
  异常值输入法是一种使用系统不允许用户输入的数值(即异常值)作为测试输入的可靠性测试方法。
  例如,对用户发送电子邮件来说,收件人地址在正确的情况下会使用@来作为邮箱地址和用户名的分割符,如wangxiaoming@123.com。使用异常值输入法,我们可以使用“#”或“%”等非@符号来作为分割符,如wangxiaoming#123.com。
  前面提到的单运行边界值输入法中边界值的非法输入值(如[1,10]中,输入值为0、11),也可以归入异常值输入法中,本书将这种测试方法归入功能测试法中。
  有时一个功能会要求输入一组数值或者多个参数,对这个功能进行不完整的输入测试,也属于异常值输入法。
  例如,一个功能包括IP地址、掩码、模式选择和是否启用4个参数(图4-22),其中IP地址由4个0~255的数字组成的。
  我们从以下两个方面来考虑:
  对输入为一组数值的情况,不按照要求输入所有的数字。例如,输入IP地址时只输入3个数字,如图4-23所示。
  对输入为多个参数的情况,不输入必选的参数。例如,上例中我们不选择“模式选择”,如图4-24所示。
  异常值输入法可以测试到系统的容错性,能够测试到系统处理各种错误输入的能力,是最基本的可靠性测试方法。
  2.故障植入法
  故障植入法是把系统放在有问题的环境中进行测试的一种可靠性测试法,主要能够测试到的质量属性是容错性和成熟性。
  和异常值输入法不同,异常值输入法是直接输入一个系统认为是错误的、不支持的值;而故障植入法是把系统放在有问题的环境中,但是输入依然是正常值。
  我们可以从以下几个方面来分析,进行故障植入。
  (1)用户的业务环境中,会有哪些故障、错误或问题?列出这些场景,把系统放到这些场景中,运行正常的业务,分析此时系统的反应是否合理。
  还是以“用户发送电子邮件”为例。网络故障对用户来说是一个常见的故障,如断网,网络时断时续、存在丢包。
  在断网的情况下,用户发送邮件会发送失败,系统应该有发送失败的提示,并在网络恢复的情况下能够自动重新发送邮件。
  在网络时断时续、存在丢包的情况下,如果丢包不严重(比如<15%),系统能够通过“重传”的方式保证邮件发送成功;如果丢包严重(比如>15%),用户发送邮件会失败,系统应该有发送失败的提示,并在网络恢复的情况下能够自动重新发送邮件。
  (2)如果系统被部署在用户的硬件环境中,考虑系统所需要的硬件资源,如CPU、内存、存储空间等,在出现不足的情况下,系统的反应是否合理。
  (3)如果系统被安装在用户的系统中,考虑系统在软件冲突、驱动不正确等情况下,系统的反应是否合理。
  (4)如果系统是一个独立的设备,考虑它的关键器件(如机框、单板、插卡、硬盘、芯片等)出现问题时,系统的反应是否合理。
  3.稳定性测试法
  稳定性测试法是在一段时间里,长时间大容量运行某种业务的一种可靠性测试法,它能够非常有效地测试到系统的“成熟性”,是非常重要的一种可靠性测试法。
  需要特别指出的是,稳定性测试法、压力测试法和性能测试法是存在一定关系的,这个关系纽带就是产品规格。
  定义:
  产品规格:产品承诺的能够处理的最大容量或能力。
  例如,系统最多支持100个用户并发登录、系统最多支持建立100条安全策略都是产品规格。
  性能测试的目的就是测试产品真实规格是否和说明书中承诺的需求规格一致。显然,最后我们实测出来的性能值,就是系统真正能够处理的最大容量或者能力。
  稳定性测试是在低于性能值的前提下测试的。事实上,用户在使用系统时,也不会时时刻刻让系统在极限的状态运行,在测试时,我们可以控制测试中的负载量,使其和用户的实际使用情况尽量接近,使得测试能够更为准确,更有价值。
  压力测试是在高于性能值的前提下进行测试的。虽然测试时负载超过了系统能够处理的最大能力,但并不等于在这种情况下系统的功能都会失效,我们需要根据实际情况来分析系统的表现是否合理。例如,系统最多支持100个用户并发登录,但此时有110个用户同时发起了登录的操作,那么系统应该保证这110个用户中有100个用户能够正常登录,有10个用户不能登录才合理,而不是所有用户都不能登录。
  现在让我们再回到本节的主题——稳定性测试上(性能测试法、压力测试法将在后文中陆续为大家介绍)。从方法的角度来说,稳定性测试法是所有测试方法中最为有趣的,可以总结为一个“四字诀”——多、并、复、异。
  第一诀:“多”。
  “多字诀” 的要义是,在测试中通过增加用户对功能的操作数量,来测试系统的稳定性。
  还是以“用户发送电子邮件”为例。使用“多字诀”,我们可以测试用户发送500封邮件或发送1000封邮件下的稳定性。
  第二诀:“并”。
  “并字诀”的要义是,在测试中让多个用户同时来操作这个功能,由此来测试系统是否依然稳定。有时我们也称这个测试为并发测试。
  以“用户发送电子邮件”为例,在“并字诀”下,我们可以测试500个用户同时向服务器发送电子邮件(假设系统支持的最大并发用户数低于500)时的稳定性。
  第三诀:“复”。
  “复字诀”的要义是,在测试中让一个或多个用户,反复进行新建、刷新、删除、同步、备份之类的操作,以此来测试系统是否稳定。使用“复字诀”能够快速有效地发现系统在资源申请、释放上是否存在问题,是非常重要的稳定性测试方法。
  以“用户发送电子邮件”为例,使用“复字诀”,我们可以在一段时间内(如1天、1周)反复进行500个用户登录邮箱、编写邮件、发送邮件、退出邮箱操作的测试,观察系统是否依然正常稳定。
  第四诀:“异”。
  “异字诀”的要义是,在测试中让一个或者多个用户,反复进行异常操作,验证系统是否能够持续做出合理的反应。
  与异常输入法和故障植入法相比,“异字诀”强调的是“持续”和“累积”。事实上,使用“异字诀”来测试往往还比较有效,这是因为,开发在编码的时候,容易考虑正确情况下资源的申请和回收,忽视异常情况下资源的回收。
  还是以“用户发送电子邮件”为例,我们可以测试用户持续(如1天、1周)发送收件邮件地址是非法输入值的邮件、用户长时间(如1天、1周)处于网络故障的情况下持续发送邮件等情况。
  实际测试时,我们还可以组合使用“多、并、复、异”这四种稳定性测试法,让测试更为灵活、更为有效。
  4.压力测试法
  压力测试法是在一段时间内持续使用超过系统规格的负载进行测试的一种可靠性测试方法。
  尽管产品已经声明了规格,只承诺在规格范围内才能提供稳定可靠的功能,不承诺在超过系统规格的情况下还能提供正确的功能,但压力测试仍然是有意义的。一个重要的原因是,业务的突发现象——用户的业务负载并不是平均的,可能在极短的时间里,出现超过负载的情况,但是平均下来,却没有超过规格,如图4-25所示。
本文选自《测试架构师修炼之道:从测试工程师到测试架构师》第四章,本站经机械工业出版社和作者的授权。
版权声明:51Testing软件测试网获机械工业出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号