第七章 软件测试(此章完结)

春乏秋困,一个早上哈气连天、脖子酸、腰痛(捂脸)近期叫醒我的不是闹钟也不是梦想,而是凌晨4点和6点广播大喇叭喊居民做核酸的声音,还是别的小区的(再次捂脸)也不知道人类何时能真正的把疫情给灭了,还我们一个自由自在(好期待)哎,回归正题。

模块中重要的执行路径测试

在单元测试期间重要的模块进行基本路径测试,是为了发现程序中不正确的运算,错误的比较和不适当的控制流而造成的错误,此时基本路径测试和循环测试是常用最有效的测试技术。

计算机中常见的错误有以下几种

①错误或用错了运算符优先级:运算方式不正确;变量初始化错;精度不够;表达式的符号表示错误等。

②比较判定与控制流常常紧密相关,常见的错误比较和不适当的控制流有:不同数据类型的对象之间进行比较;逻辑运算符不正确或优先次序错误;由于精度误差相等造成比较出错,循环终止条件错误或死循环,以及错误地修改了循环变量,当遇到发散的循环时无法结束等。

(5)模块边界条件测试

边界测试是单元测试过程中最重要的一项任务,采用边界值分析技术,针对边界值及其左右设计测试用例。如输入、输出数据的等价类边界,选择条件和循环条件的边界复杂数据结构的边界等都应该进行测试。

2、单元测试的方法

在单元测试时,需要为被测模块设计驱动模块和桩模块,驱动模块是用来模拟上级模块调用被测模块的模块,即模拟主程序,但功能要比真正的主程序简单的多,它是复杂接受测试数据,并向被测模块传送测试数据,启动被测模块、接收被测模块的测试结果并输出。

桩模块是用来代替由被测模块所调用的模块,也可以称为“虚拟子程序”作用是返回被测模块所需要的信息,驱动模块和桩模块的使命在单元测试后终止,图7.4单元测试的测试环境。

第七章 软件测试(此章完结)

 7.5.2集成测试

集成测试在单元测试的基础上将所有模块按要求组装成一个完整的系统而进行的测试,所以也称组装测试。

集成测试是用于组装软件的一种系统化的技术,要把模块按照设计要求组装起来的同时进行测试,用于发现和接口相联系的问题,由模块组装成程序时有两种方法:渐增式测试和非渐增式测试

渐增式测试的基本思想是:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试一个增加一个,即在组装过程中边组边测试

非渐增式测试的基本思想是:先分别测试各个模块在把所有模块按设计要求组装在一起测试。

一般采用渐增式比较好,有自顶向下和自顶向上两种集成方法。

集成测试阶段是以黑盒测试为主,在自底向上集成早期,以白盒测试为主,后期黑盒测试占主导地位。

自顶向下集成方法,图7.5示意图

第七章 软件测试(此章完结)

自顶向下这种渐增集成软件结构的方法用的是比较多,不需要驱动模块,但是需要设计桩模块步骤是从顶层模块开始,沿着软件的控制层次向下移动逐步把各个模块结合起来,在组装过程中有深度优先和宽度优先两种结合方式。

深度优先:首先把软件结构的一条主控制路径上的模块一个个结合起来进行测试,主控制路径上的选择决定于软件的应用特性。

宽度优先:逐层结构直接下属的所有模块,即把每一层同一水平线的模块结合起来。

结合过程可归纳为以下具体步骤

①对主控模块进行测试,测试时用桩模块代替所有直接附属于主控模块的模块,根据选择的结合方式(深度优先或宽度优先) 每次用一个实际模块替换一个桩模块,每次替换时为了检查接口的正确性都要进行测试。

②为了保证加入模块不引进新的错误,可能需要进行回归测试,即全程或部分地重复以前做过的测试。

③这一过程从第二步开始连续进行,直到模块都结合了为止。

自顶向下集成的方法的主要优点:能够在测试阶段的早期实现并验证系统的主要功能,能早期发现上层模块的接口错误,缺点:桩模块不可能提供完整的信息,可能会遇到与桩模块相联系的测试困难这种方法早期不能并行工作。

(2)自底向上集成方法

是从软件结构的最底一层模块开始装配合测试这种方法常用在软件开发阶段的早期,与自顶向下集成方法想法,它需要驱动模块,不需要桩模块。

其具体步骤如下

①把底层模块组成实现一个特定软件子功能的模块族,如图7.6所示模块族由1.2.3组成

第七章 软件测试(此章完结)

②每一个族要一个驱动模块,作为测试的控制程序来协调测试用例的输入和输出。

③对模块组成的子功能族进行测试

④去掉驱动模块,沿软件结构自底向上移动,把子功能族结合起来形成更大的子功能族。

这一过程从第二步喀什连续进行直至完成。

自底向上集成方法的优点:如程序错误发生在底层,有利于发现错误,容易设计测试用例、早期可以并行工作

缺点:系统总体功能最后才能看到,上层模块的错误发现的晚。

工程上常将两种方法结合起来使用,即对软件结构的较上层采用自顶向下,对下层模块采用自顶向上。

7.5.3确认测试

确认测试又称有效测试,它和验收测试比较接近,是从质量的角度、在功能、性能、可靠性、易用性等方面对软件做全面的质量检测。

确认测试阶段首先要进行有效性测试和软件配置审查两项工作,之后经过部门的批准和专家的鉴定后软件即可交付使用。

1、有效性测试

通过使用黑盒测试,由专门的测试人员和用户参加测试,通过测试要保证软件满足所有功能要求、能到达每个性能要求、有效测试需要需求说明书、用户手册等文档,仔细设计测试计划和方案,测试用例应选用实际运用的数据,测试结束后,应写出测试报告。

经过确认测试后,评价结果可能有以下两种:合格软件和布合格软件

(1)合格软件:功能、性能及其他特性与需求说明一致,该软件系统是可以接受的。

(2)不合格软件:功能、性能及其他特性与需求说明有差距,该软件系统是无法接受的。

2、软件配置报告

确认测试的一个重要环节是审查软件配置,这些资料应包括:用户所需的用户手册、操作手册、设计资料如设计说明书等,源程序清单、测试计划、测试报告、设计的测试用例等。

7.5.4系统测试

系统测试是将单元测试、集成测试、确认测试以后的软件,作为计算机系统中的一个组成部分,需要与系统中的硬件、外部设备、支持软件、数据及操作人员结合起来。

系统测试不同于功能测试:功能测试主要验证软件功能是否符号用户需求,并不考虑各种环境及非功能问题,如安全性、可靠性、性能等,而系统测试是在大范围内进行的测试,着重对系统的性能、特性进行测试。

7.5.5a(Alpha)测试和B(Beta)

a测试是指软件在公司进行的由内部人员指导的新产品测试,经过测试的软件称为Alpha版本,由于用户在开发者的场地进行,在实际运行环境和真实应用过程中,开发者对用户进行:“指导”性测试,来发现测试阶段没有发现的缺陷。

经过a测试和修正的产品为B版本,B测试指在开发者不能控制的环境中“真实”应用,请要求用户报告异常情况,提出意见,然后对B版本进行修正和完善最终得到正式发布的版本,是常见的使用版本。

7.6调试

调试的目的:为了解决存在的错误,即对错误定位、分析并找出原因改正错误,因此调试也称为纠错。

7.6.2常用调试技术

1、简单的调试技术

(1)使用计算机将存储的全部内部通过打印机打印处来,然后逐个数据进行查找,从中寻找确定错误位置,虽然也能成功,但工作量大、开销大

(2)在特定部位插入打印语句你,优点显示程序的动态过程,比较容易检查源程序的有关信息,效率低、发现错误代有偶然性

(3)使用自动调试工具分析程序的动态行为,纠正错误、可以提高效率,但无关的数据量也很大

2、消去原因法

通过思考分析列出发生错误的所有可能的原因,逐个排除,最后找出真正的原因,试探法、折半查找法、归纳法和演绎法都属于消去原因,主要介绍归纳法和演绎法两种。

(1)归纳法

源于一个简单工作过程的假设公式,这个公式基于数据证明或反证明该工作过程的假设,具体地说人们从一些线索错误迹象,征兆入手、寻找分析它们之间的联系,导出错误原因的假设,然后再证明或否定这个假设,常常可以确定错误的位置并纠正,归纳法纠正错误流程图如7.7所示

第七章 软件测试(此章完结)

(2)演绎法

演绎法的思考过程是从一般到特殊是一种从一般原理或前提出发,运用排除和推理过程做出结论,首先列出所有可能的原因,直到最后剩下一个真正的原因如图7.8所示

第七章 软件测试(此章完结)

7.7软件测试阶段终止的条件

 1、根据程序的可靠性指定测试的终止条件

2、测试的覆盖率要达到一定的目标

3、规定至少要查出的错误数量

本章小结

软件测试的目的是发现程序的错误,而不是证明程序没有错误,原则是选用最少的测试数据发现尽可能多的错误,为了达到这个目的就要选择相应的测试方法,有动态和静态测试方法,动态测试方法又分为:白盒测试法和黑盒测试法,在软件测试中通常以动态测试为主,要先选择测试用例,然后上机运行程序,将得到的实际的运行结果和预期结果比较,从而发现错误。

测试用例设计方法哟:逻辑覆盖法、边界值分析法、等价类划分法、错误推测法和因果图法等

在进行测试软件时,首先进行单元测试,然后集成测试、在进行确认测试,最后进行体系测试,单元测试可以发现模块中的问题、集成测试可以发现模块接口之间接口问题,确认测试是从质量的角度、功能、性能、可靠性黑盒易用性等方面对软件做出全面的质量检测,系统测试则放按照与验收阶段进行。

经过测试:有错误就要找错误位置和错误原因,即进行调试和测试精彩交替进行。

来源:zhhzc

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月13日
下一篇 2022年2月13日

相关推荐