软件工程第六章

第六章 软件测试

**大家想一起学习交流的可以加群,QQ:755422568。**

软件测试:按照特定规程发现软件错误的过程。

1、软件测试目标

首要目标:预防错误
第二目标:发现(揭示)错误

错误:与所期望的设计之间的偏差,该偏差可能产生不期望的系统行为或失效。
失效:与所规约的系统执行之间的偏差。(失效是系统故障或错误的后果)
故障:导致错误或失效的不正常的条件。(故障可以偶然性的或是系统性的)

软件测试与软件调试相比,有许多区别,主要表现以下几个方面:(简单题)
1)、测试从一个侧面证明程序员的”失败“。调试为了证明程序员的正确。
2)、测试以已知条件开始,使用预先定义的程序且有预知的结果,不可预见的仅有是程序是否通过测试。调试一般是以不可知的内部条件开始,结果是不可预见的。
3)、测试是有计划的,并要进行测试设计。调试是不受时间约束的。
4)、测试是一个发现错误、改正错误、重新测试的过程。调试是一个推理过程。
5)、测试的执行是有规程的。调试的执行往往要求程序员进行必要推理。
6)、测试经常是由独立的测试组在不了解软件设计的条件下完成的。调试必须由了解详细设计的程序员完成。
7)、大多数测试的执行和设计可由工具支持。调试时,程序员能利用的工具主要是调试器。

软件测试过程模型:
环境模型(对程序运行环境的抽象)
对象模型(从测试的角度对程序的抽象)
错误模型(对程序中的错误及其分类的抽象)

2、软件测试技术

软件测试技术分为:
白盒测试技术(结构测试技术,典型的是路径测试技术,依据的是程序的逻辑结构)
黑盒测试技术(功能测试技术,包括事务处理流程技术、状态测试技术、定义域测试技术,依据的是软件行为的描述)

1、路径测试技术

基本要点:
采用控制流程图来表达被测程序模型,揭示程序中的控制结构。
通过合理地选择一组穿过程序的路径,以达到某种测试度量。

1)、控制流程图:一种表示程序控制结构的图形化工具。

过程块:没有被判定或被节点分开的一组程序语句。
节点:控制流进行结合,是一个程序点。
判定:控制流出现分叉,是一个程序点。

控制流程图与程序流程图的差异:
在控制流程图中不显示过程快细节,在程序流程图中着重于过程属性的描述。

扫描二维码关注公众号,回复: 9638573 查看本文章

2)、测试策略

路径覆盖:执行所有可能穿过程序控制流程的路径。
语句覆盖:至少执行程序中所有语句一次。
分支覆盖:至少将程序中的每一个分支执行一次。
条件覆盖与条件组合覆盖:(条件覆盖:每个判定中的所有可能的条件取值至少执行一个次。)(条件组合覆盖:设计足够多的测试用例,使,每个判定中的所有可能的条件取值组合至少执行一次。)

路径覆盖 》...... 》条件组合覆盖 》分支覆盖 》语句覆盖

3)、路径选取与用例设计

路径选取的一般原则是:
选择最简单的、具有一定功能含义的入口/出口路径。
在已选取的基础上,选取无循环的路径;选取短路径、简单路径。
选取没有明显功能含义的路径,此时要研究这样的路径为什么存在,为什么没有通过功能上合理的路径得到覆盖。

路径测试技术是一种简单、实用的单元测试技术,通过程序中的控制逻辑可以发现数据错误、基本计算错误。
路径测试技术是基于程序逻辑结构的,对错误的假定是软件通过了与预想不同的路径。
在路径测试技术中,采用控制流程图作为模型表达工具,支持创建被测程序的模型。
基于路径的基本属性,路径测试技术给出了几种常见的测试路径覆盖,包括语句覆盖、分支覆盖、条件组合覆盖和路径覆盖。
路径选取是测试用例设计的基础。在实际软件测试工作中,好的用例设计是发现程序错误的关键。

2、基于事务流的测试技术

一个事务可以是:
接收输入并进行输入处理。
向用户发送礼节性信息。
检索文件。
向用户请求指令。
接收并处理请求。
更改文件。
传送输出。
记录事务注册和清除。

1)、在事务流测试技术中,通过操作的一个序列即事务流来表达一个事务的。

该类测试技术的基本步骤:定义有用的图形模式,设计并执行必要的测试用例,覆盖该图形所表达的行为。

2)、事务流程图与控制流程图之间的差异是:

基本模型元素所表达的语义不同。
一个事务不等同于路径测试中的一条路径,可能在中间某处就完成了某一用户工作,终结了一个事务。
事务流程图中的分支和节点可能是一个复杂的过程。

3)、事务流程图具有很差的结构,其主要原因:

它是一种处理流程,其中可能包含人工的判断和处理。
某些部分可能与软件开发人员不能控制的行为有关。
性能的增加,可使事务数目和单个事务处理流程具有相关的复杂度。
事务流程表达的系统模型更接近现实,不再适合结构化概念。

4)、事务流测试技术的基本步骤
第一步:获得事务流程图
第二步:浏览、复审
第三步:用例设计
第四步:测试执行

3、其他功能测试技术

1、等价类划分

等价类划分方法:把软件所有功能的输入数据,划分成若干部分,形成一些等价类,从每一部分选取数据作为测试用例,进行软件测试。

1)、划分等价类:有效等价类和无效等价类

2)、设计测试用例
第一步:建立等价类表
第二步:为有效等价类设计测试用例
第三步:为无效等价类至少设计一个测试用例

2、边界值分析
使用边界值分析在设计测试用例时,遵循以下原则:
1)、如果某个输入条件规定了输入值的范围,则应选择正好等于边界值的数据,以及刚刚超过边界值的数据作为测试数据。
2)、如果某个输入条件规定了值的个数,则可用最大个数、最小个数、比最大个数多1,比最小个数少1的数作为测试数据。
3)、根据规格说明的每个输入条件,使用前面的原则(1)。
4)、根据规格说明的每个输出条件,使用前面的原则(2)。
5)、如果程序的规格说明中,输入域或输出域是有序集合,在实践中则经常选取集合的第一个元素、最后一个元素以及典型元素作为测试用例。
6)、如果程序中使用了内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
7)、分析规格说明,找出其他可能的边界条件。

边界值分析与等价类划分技术的区别在于:
边界值分析着重于边界的测试,应选取等于、刚刚大于或刚刚小于边界的值作为测试数据;而等价类划分是选取等价类中的典型值或任意值作为测试数据。

3、因果图
因果图:设计测试用例的一种工具,它着重检查各种输入条件的组合。

因果图测试技术是通过为判定表的每一列设计一个测试用例,从而实现测试用例的设计于选择的。
生成测试用例的基本步骤:
1)、通过软件规格说明书的分析,找出一个模块的原因(即输入条件或输入条件的等价类)和结果(即输出条件),并给每个原因和结果赋予一个标识符。
2)、分析原因与结果之间以及原因与原因之间对应的关系,并画出因果图。
3)、在因果图上标识出一些特定的约束或限制条件。
4)、把因果图转换为判定表。
5)、把判定表的每一列拿出作为依据,设计测试用例。

4、软件测试步骤

测试顺序及其每个测试的关注点(选择、填空、简单)
1、顺序:
1)、单元测试、集成测试、有效性测试和系统测试。
2、每个测试的关注点:
1)、单元测试关注每个独立的模块
2)、集成测试关注模块的组装
3)、有效性测试关注检验是否符合用户所见的文档,包括软件需求规格说明书、软件设计规格说明书以及用户手册。
4)、系统测试关注检验系统中所有元素之间的协作是否合适,整个系统的性能、功能是否达标。

1、单元测试(以详细设计文档为指导,采用白盒测试技术。
单元测试主要检验软件设计的最小单元——模块。
考虑模块的4个特征:
1)、模块接口
2)、局部数据结构
3)、重要的执行路径
4)、错误执行路径
驱动模块和承接模块作为单元测试的测试设备

2、集成测试(目标是发现与接口有关的错误
1)、自顶向下的集成测试是一种递增组装软件的方法。
以主控模块作为测试驱动模块,设计承接模块替代其直接的下属模块,依据所选的测试方法,在组合模块时进行测试。
2)、自底向上的集成测试从最低的一层开始,逐层向上地组合模块并测试。无须设计承接块。首先将低层模块分类为实现某种特定功能的模块组;编写一个驱动模块,用以协调测试用例的输入和输出,测试每一模块组;软件结构向上,将模块组合起来。

自顶向下的集成测试主要缺点:需要设计承接模块以及随之而带来的困难。
自底向上的集成测试主要缺点:只有在加上最后一个模块时,程序才作为一个实体而存在。

3、有效性测试(黑盒测试技术,目标是发现软件实现的功能与需求规格说明书不一致的错误
进行有效性测试前需要进行配置复审

单元测试集中于单个模块的功能和结构检验
集成测试集中于模块组合的功能和软件结构检验
有效性测试验证软件需求的可追溯性
系统测试验证将软件融于更大系统中时整个系统的有效性。

发布了31 篇原创文章 · 获赞 4 · 访问量 1526

猜你喜欢

转载自blog.csdn.net/qq_38471554/article/details/100608452