软件工程模型-软件测试技术实战(2)

发表于:2017-7-10 11:48

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

 作者:顾翔    来源:51Testing软件测试网原创

  1.1.3  软件工程模型
  讨论软件测试学,不得不涉及软件工程模型,因为软件测试学与软件工程学的发展是依依相关、相辅相成的。根据目前比较先进的软件测试理念,软件测试应该贯穿于软件工程的整个过程中。下面介绍几种软件工程模型。
  1.瀑布模型
  图1-6为瀑布模型。这个模型是最经典的软件工程模型,包括"计划"->"需求分析"->"设计"->"编码"->"测试"->"运行维护"这几个阶段。
  但是,这个模型存在比较严重的缺点。
  (1)不可反复及不适用于需求变更比较频繁的情况。由于瀑布模型从业务建模到运行维护一脉相承,不可以反复。而现代软件项目中,需求变更是无处不在的:"唯一不变的是需求变更"。若运用这种模型,只要项目需求发生变化,就要把原有的设计打翻,重新进行系统分析,概要设计,详细设计等。
  (2)用户很难在项目初期了解项目状态:由于用户在项目初期很难提出明确的需求,而利用瀑布模型只有到编码结束,软件测试工程师才可介入软件测试,客户才可以看到是否是他们需要的产品,在此之前这些产品他们不完全了解,有时需要补充,有时客户也有可能推翻他们原本的需求,提出新的需求,这样往往会给客户方、开发方带来很多麻烦。
  2.迭代模型和螺旋模型
  图1-7为迭代模型。瀑布模型和迭代模型往往在概念上区别不明显。事实上,这两个模型在思想本质上是一致的。它将客户的需求按照用户的重要等级和模块自身的等级进行安排,从最开始进行分析、设计、编码、测试,然后再进入下一轮迭代。用户只要在每一轮结束后,就可以看到产品的一些雏形,从而可以进行需求变更和提出下一轮建议。该模型初期开发工作比较少,用户又可以及时提出下一轮更详细的需求和变更,所以这样的模型往往利于软件公司产品的研发。这类模型有著名的RUP模型、快速开发模型以及现在比较流行的敏捷开发等,它们都遵循迭代的思想。
  
图1-7  迭代模型
  扩展阅读:增量开发与迭代开发
  注:本书中扩展阅读大部分来自于百度百科,请见参考文献【21】。
  1.1.4  软件测试模型
  1.V模型
  图1-8所示为V模型测试。
  
图1-8  V模型测试
  单元测试相对于编码进行,这一步往往由开发工程师执行。
  集成测试相对于详细设计,将模块以由上到下、由下到上或混合方式进行逐步集成。测试软件模块与模块、类与类之间的关联性。
  系统测试相对于概要设计,软件测试工程师站在整体的立场上对系统进行全面的软件测试工作。
  验收测试是用户对产品进行的测试,一般分为Alpha测试和Beta测试。验收测试往往由系统维护人员或者用户来完成,需要完全站在用户的立场上进行测试,测试环境也要尽可能与用户的实际环境保持一致,大多数时候,需要到用户现场去进行验收测试工作。
  2.W模型
  图1-9所示为W模型测试。W模型其实是V模型的变种,它提倡的主要思想是软件前置测试理念(即软件测试需要贯穿软件研发的始终)。所以,W模型又称双V模型或前置模型。在需求、设计和编码阶段对产生的工件进行文档评审,一个目的是提出自己的建议和意见,另外一个目的是尽可能理解产品的需求和实现方式。使用前置软件测试法,Bug在软件前期就可以发现,从而降低软件开发的成本。
  
图1-9  W模型测试
  3.X模型
  图1-10为X模型测试。X模型将软件系统分为若干模块,对每个模块进行单元测试、集成测试以及系统测试,然后统一对模块进行集成测试。事实上,这里已经提出了"探索式软件测试"的概念,在本书第3章会详细介绍探索式测试。
  
图1-10  X模型测试
  1.1.5  软件测试方法
  软件测试方法见表1-1。
  表1-1软件测试方法
  代码评审中有一个部分是对编码规范的检查。另外,代码评审可以通过人工的方式来实现,也可以借助代码评审工具,如在本书第二篇7.1.1节"普通软件测试工具推荐"提及的Checkstyle、Findbugs、PMD、Android Lint等工具。
  扩展阅读:阿丽亚娜五型运载火箭的爆炸-代码静态测试的重要性
  程序员在编程的时候必须定义程序用到的变量,以及这些变量所需的计算机内存,这些内存用比特位来定义,如int16、int32、double、float等。
  一个16位的整数变量可以代表-32.768到32.767中间的值。而一个64位的整数变量可以代表-9.223.372.036.854.775.808到9.223.372.036.854.775.807中间的值。
  1996年6月4日上午9时33分59秒,随着5、4、3、2、1、0的倒计时,阿丽亚娜五型运载火箭的首次发射点火后,火箭开始偏离路线,最终被逼引爆自毁,整个过程只有短短的30s。阿丽亚娜五型运载火箭是基于前一代四型火箭开发的。在四型火箭系统中,对一个水平速率的测量值使用了16位的变量及内存,因为在四型火箭系统中反复验证过,这一值不会超过16位的变量,而五型火箭的开发工程师简单复制了这部分程序,而没有对新火箭进行数值的验证,结果发生了致命的数值溢出。发射后这个64位带小数点的变量被转换成16位不带小数点的变量,引发了一系列的错误,从而影响了火箭上所有的计算机和硬件,瘫痪了整个系统,因而不得不选择自毁。
  阿丽亚娜五型载火箭使用Ada语言开发,出问题的代码如下:
L_M_BV_32:=TBD.T_ENTIER_32S  ((1.0/C_M_LSB_BV) * (G_M_INFO_DERRIVE());
if L_M_BV_32 >32767 then
P_M_DERIVE(T_ALG.E_BV) :=16#7FFF#;
elseif L_M_BV_32 <-32767 then
P_M_DERIVE(T_ALG.E_BV) :=16#8000#;
else
P_M_DERIVE(T_ALG.E_BV):=UC_16S_EN_16NS(TDB.T_ENTIER_16S(L_M_BV_32));
end if;
P_M_DERIVE(T_ALG.E_BH):=UC_16S_EN_16NS(TDB.T_ENTIER_16S(1.0/C_M_LSB_BH)*G_M_INFO_DRIVER(T_ALG.E_GH)));
  在这个代码中导致最终问题的是最后一句。在这一段语句中共有7个变量运算符出现了问题,仅有4个做了异常处理的保护,而其他3个没有进行。但是这也是由于运行的机器SRI计算机中设定最大负荷目标值为80%,如果要进行异常处理,计算机的CPU要处理的代码会增多。
  教训:软件设计和Code Review的重要性。另外阿丽亚娜五型运载火箭在倒计时阶段、飞行阶段以及进入轨道阶段都未经过测试验证。
  1.1.6  软件测试步骤
  图1-11描述了软件测试步骤,具体如下。
  
图1-11  软件测试步骤
  (1)软件测试计划。
  (2)软件测试分析。
  (3)软件测试设计。
  (4)软件测试实施。
  (5)软件测试执行。
  (6)评估出口准则和报告。
  (7)软件测试结束活动。
  具体内容读者可以参见参考文献【13】第二章进行更深入的学习。
本文选自《软件测试技术实战-设计、工具及管理》第一章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号