软件测试复习资料.docx

上传人:b****8 文档编号:11489445 上传时间:2023-03-01 格式:DOCX 页数:15 大小:189.42KB
下载 相关 举报
软件测试复习资料.docx_第1页
第1页 / 共15页
软件测试复习资料.docx_第2页
第2页 / 共15页
软件测试复习资料.docx_第3页
第3页 / 共15页
软件测试复习资料.docx_第4页
第4页 / 共15页
软件测试复习资料.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

软件测试复习资料.docx

《软件测试复习资料.docx》由会员分享,可在线阅读,更多相关《软件测试复习资料.docx(15页珍藏版)》请在冰豆网上搜索。

软件测试复习资料.docx

软件测试复习资料

软件测试的定义:

1.IEEE:

使用人工或自动手段运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

明确地提出了软件测试以检验是否满足需求为目标

2.Myers:

是为了发现错误而执行程序的过程。

提出了“寻找错误”是测试目的

3.软件质量保证:

是一种重要的软件质量保证活动,其动机是通过一些经济、高效的方法,捕捉软件中的错误,从而达到保证软件内在质量的目的。

测试V模型(清楚地描述了这些测试阶段和开发过程期间的对应关系)

测试W模型(形象地说明了软件测试与开发的这种同步性)

软件测试技术分类

从是否需要执行被测软件的角度,可分为静态测试和动态测试

不利用计算运行被测程序,而是通过其他手段达到测试目的的方法称作静态测试

静态测试主要方法:

动态测试主要方法:

(从软件测试用例设计方法的角度)

①代码检查①黑盒测试

②代码走查②白盒测试

③桌面检查

④同行评分

按照软件测试的策略和过程分类

①单元测试

②集成测试

③确认测试

④系统测试

⑤验收测试

软件测试的目的:

从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品

从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。

Myers软件测试目的

(1)测试是程序的执行过程,目的在于发现错误;

(2)一个好的测试用例在于能发现至今未发现的错误;

(3)一个成功的测试是发现了至今未发现的错误的测试。

换言之,测试的目的是

系统地找出软件中潜在的各种错误和缺陷。

能够证明软件的功能和性能与需求说明相符合。

测试不能表明软件中不存在错误,它只能说明软件中存在错误

软件测试的原则:

1.应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。

2.测试用例应由测试输入数据和对应的预期输出结果这两部分组成。

3.程序员应避免检查自己的程序。

4.在设计测试用例时,应包括合理的输入条件和不合理的输入条件

5.充分注意测试中的群集现象。

经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。

6.严格执行测试计划,排除测试的随意性。

7.应当对每一个测试结果做全面检查。

8.妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。

白盒测试:

此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。

通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

因此白盒测试又称为结构测试或逻辑驱动测试。

白盒测试又分为逻辑覆盖测试和路径测试

包括:

v逻辑覆盖测试法:

通常用流程图来设计测试用例,它考察的重点是图中的判定框。

因为这些判定若不是与选择结构有关,就是与循环结构有关。

v逻辑覆盖测试包括:

语句覆盖、分支(判定)覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖。

v路径测试法:

设计足够的测试用例,覆盖程序中所有可能的路径。

v路径测试包括:

点覆盖、边覆盖、路径覆盖

计算环路复杂性的方法:

V(G)=简单判定节点数+1

V(G)=E-N+2(E是边数,N是定点数)

V(G)=封闭区域数+1

在对被测软件进行白盒测试时,主要对程序进行如下几点检查:

(1)保证一个模块中的所有独立执行路径至少测试一次; 

(2)对所有逻辑判定取值“true”和“false”的两种情况都至少测试一次; 

(3)在循环边界和运行界限内执行循环体;

(4)测试内部数据结构的有效性

白盒测试与调试的异同

1、从承担的任务来看,白盒测试同其他类型测试一样,它的任务是发现所开发的项目中的缺陷;但是,调试不属于测试,其任务是纠正软件中的缺陷。

2、从最终的结果来看,白盒测试有预知的结果,不可预知的只是程序是否通过测试,并且成功测试的结果是发现错误的症状,从而引起调试的进行;而调试的结果是消除项目中的错误。

3、从执行的过程来看,测试是一个发现错误、改正错误、重新测试的过程;而调试是一个推理过程。

4、从准备工作来看,测试从已知的条件开始,使用预先定义的程序;调试一般是以不可知的内部条件开始,做统一性调试。

5、从执行的计划性来看,测试是有计划的并要进行测试设计;而调试则不受时间约束。

6、从执行的人员来看,测试经常是由独立的测试组在不了解软件设计的条件下完成的,而调试必须由程序员来完成。

白盒测试的优缺点

1)优点

⏹可构成测试数据对特定程序部分测试,可以检测代码中的每条分支和路径;

⏹揭示隐藏在代码中的错误;

⏹对代码的测试比较彻底;

⏹有较多工具支持;

⏹有一定的充分性度量手段。

2)缺点

⏹工作量大,成本高。

通常只用于单元测试,有应用局限;

⏹无法检测代码中遗漏的路径和数据敏感性错误;

⏹不能验证规格说明的正确性;

⏹无法对规格说明中未实现的部分进行测试;

⏹不易生成测试数据(通常)。

循环测试分为4种不同类型:

简单循环、连锁循环、嵌套循环和非结构循环。

黑盒测试:

这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。

黑盒测试又叫做功能测试或数据驱动测试

包括:

等价类划分,边界值分析,错误推测法,因果图

在对被测软件进行黑盒测试时,主要对程序进行如下几点检查:

⑴功能不正确或不完整;

⑵接口错误;

⑶接口所使用的数据结构错误;

⑷行为或性能错误;

⑸初始化和终止错误。

黑盒测试和白盒测试的异同

1.执行测试人员不同

黑盒测试通常由用户以及非开发人员来进行;而白盒测试通常要有了解软件内部结构的开发人员来做。

2.测试覆盖目标不同

如果我们用一个盒子来代替整个软件系统,那么黑盒测试可以看成是一种系统测试。

而对盒子内部的多个单元的测试就可以称作为白盒测试。

另外一种区别就是,二者的覆盖目标不同。

黑盒测试的目标是覆盖所有的用户需求;而白盒测试的目标是覆盖所有的代码。

3、测试动机不同

有效的安全测试有时也需要详细了解代码以及系统结构,此时把这些技术称作白盒测试。

另外一种风险测试的目标可能就只是测试软件是否能够为用户提供预期输出。

可用性测试就是如此,所以被称作黑盒测试。

4、测试方法不同

一个最普通的区别就是行为测试设计是基于功能需求来定义测试,而结构测试则是基于代码本身来定义测试的。

这就是两种设计测试的方法。

因为行为测试是基于外部功能定义的,所以称作黑盒测试;结构测试则是基于代码内部结构来定义的,所以称作白盒测试。

5、评估测试方法不同

一些技术是使用代码工具来跟踪软件内部的工作过程,因此称为白盒测试技术。

与之相比,黑盒测试技术只是简单的观察程序的正常输出。

黑盒测试的优缺点

1.优点

⏹对于较大的代码单元来说,效率高;

⏹测试人员不需要了解实现的细节,包括具体的编程语言;

⏹测试员和程序员可以由不同的人员来担任;

⏹从用户的角度进行测试,容易被理解和接受;

⏹有助于暴露任何规格不一致或有歧义的问题;

⏹测试用例的设计可以在规格说明完成之后马上进行;

⏹容易入手生成测试数据;

⏹适用于各阶段测试。

2.缺点

⏹实际上,只有一小部分可能的输入被测试到,某些代码得不到测试;

⏹如果没有清晰、简洁的规格说明,难以设计测试用例;

⏹如果测试人员不知道开发人员已经执行过该测试用例,会存在不必要的重复测试;

⏹会有很多程序路径没有被测试到;

⏹不能直接针对可能隐蔽了许多问题的特定程序段进行测试,;

⏹如果规格说明有误,则无法发现;

⏹不易进行充分性测试。

测试计划和测试文档在测试过程中的作用

1、测试文档有助于测试任务的完成。

2、使用测试文档可以更好的协调测试任务与测试过程。

3、测试文档为测试项目的组织、规划与管理提供了一个架构。

软件测试的策略:

单元测试、组装测试、确认测试和系统测试。

单元测试又称模块测试,是针对软件设计的最小单位─程序模块,进行正确性检验的测试工作。

其目的在于发现各模块内部可能存在的各种差错。

单元测试需要从程序的内部结构出发设计测试用例。

多个模块可以平行地独立进行单元测试

单元测试的内容

(1)模块接口测试

(2)局部数据结构测试(3)路径测试(4)错误处理测试(5)边界测试

由于一个模块或一个方法(Method)并不是一个独立的程序,在考虑测试它时要同时考虑它和外界的联系,因此要用到一些辅助模块,来模拟与所测模块相联系的其他模块。

一般把这些辅助模块分为两种:

1、驱动模块(driver):

相当于所测模块的主程序。

它接收测试数据,把这些数据传送给所测模块,最后再输出实测结果。

2、桩模块(stub):

用于代替所测模块调用的子模块。

用以代替所测模块调用的子模块

自顶向下的单元测试策略:

将模块按系统程序结构,沿控制层次自顶向下进行组装

一)步骤:

1.从最顶层开始,把顶层调用的单元做成桩模块。

2.对第二层测试,使用上面已测试的单元做驱动模块。

3.依次类推,直到全部单元测试结束。

二)优点:

可以在集成测试之前为系统提供早期的集成途径。

三)缺点:

单元测试被桩模块控制,随着单元测试的不断进行,测试过程也会变得越来越复杂,测试难度以及开发和维护的成本都不断增加;要求的低层次的结构覆盖率也难以得到保证;由于需求变更或其他原因而必须更改任何一个单元时,就必须重新测试该单元下层调用的所有单元;低层单元测试依赖顶层测试,无法进行并行测试,使测试进度受到不同程度的影响,延长测试周期。

四)总结:

从上述分析中,不难看出该测试策略的成本要高于孤立的单元测试成本,因此从测试成本方面来考虑,并不是最佳的单元测试策略。

自底向上的单元测试:

是从程序模块结构的最底层的模块开始组装和测试

一)步骤:

1、先对模块调用图上的最底层模块开始测试,模拟调用该模块的模块为驱动模块。

2、其次,对上一层模块进行单元测试,用已经被测试过的模块做桩模块。

3、依次类推,直到全部单元测试结束。

二)优点:

不需要单独设计桩模块。

三)缺点:

随着单元测试的不断进行,测试过程会变得越来越复杂,测试周期延长,测试和维护的成本增加;随着各个基本单元逐步加入,系统会变得异常庞大,因此测试人员不容易控制;越接近顶层的模块的测试其结构覆盖率就越难以保证;另外,顶层测试易受底层模块变更的影响,任何一个模块修改之后,直接或间接调用该模块的所有单元都要重新测试。

由于只有在底层单元测试完毕之后才能够进行顶层单元的测试,所以并行性不好。

另外,自底向上的单元测试也不能和详细设计、编码同步进行。

四)总结:

相对其它测试策略而言,该测试策略比较合理,尤其是需要考虑对象或复用时。

它属于面向功能的测试,而非面向结构的测试。

对那些以高覆盖率为目标或者软件开发时间紧张的软件项目来说,这种测试方法不适用。

测试用例设计步骤

步骤1:

首先使被测单元运行;

这个阶段适合的技术有:

①模块设计说明导出的测试

②对等区间划分

步骤2:

正面测试(PositiveTesting)

这个阶段适合的技术:

①设计说明导出的测试

②对等区间划分

③状态转换测试

步骤3:

负面测试(NegativeTesting)

适合的技术有:

①错误猜测

②边界值分析

③内部边界值测试

④状态转换测试

步骤4:

模块设计需求中其它测试特性用例设计

适合的技术:

设计说明导出的测试

步骤5:

覆盖率测试用例设计

适合的技术:

①分支测试

②条件测试

③数据定义-使用测试

④状态转换测试

步骤6:

测试执行

步骤7:

完善代码覆盖

适合的技术:

①分支测试

②条件测试

③设计定义――试验测试

④状态转换测试

数据流测试技术:

①方法内部测试,用于测试单个类方法

②方法间测试,用于测试一个类中不同方法通过过程调用的相互作用

③类内部测试,用于测试一系列方法的调用

集成测试的定义:

根据实际情况对程序模块采用适当的的集成测试策略组装起来,对系统的接口以及集成后的功能进行正确性检验的测试工作。

集成测试的层次划分:

对于传统软件来说,按集成粒度不同,可以把集成测试分为3个层次,即:

模块内集成测试,子系统内集成测试,子系统间集成测试

集成测试策略

一、基于分解的集成

二、三明治集成

三、修改过的三明治集成

四、基于调用图的集成

五、基于路径的集成

集成测试环境

在搭建集成测试环境时,可以从以下几个方面进行考虑:

1、硬件环境

2、操作系统环境

3、数据库环境

4、网络环境

5、测试工具运行环境

6、其它环境

集成测试用例设计

一、为系统运行设计的用例

可使用的主要测试分析技术:

①等价类划分②边界值分析③基于决策表的测试

二、为正向测试设计用例

可使用的主要测试分析技术:

①输入域测试②输出域测试③等价类划分④状态转换测试⑤规范导出法

三、为逆向测试设计用例

可使用的主要测试分析技术:

①错误猜测法②基于风险的测试③基于故障的测试④边界值分析⑤特殊值测试⑥状态转换测试

四、为满足特殊需求设计用例

可使用的主要测试分析技术:

规范导出法

五、为高覆盖设计用例

可使用的主要测试分析技术:

①功能覆盖分析②接口覆盖分析

系统测试定义:

系统测试就是将已经集成好的软件系统,作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。

系统测试过程要经历以下几个阶段:

制定系统测试计划、设计系统测试、实施系统测试、执行系统测试和评估系统测试

容量测试:

容量测试是面向数据的,在系统正常运行的范围内测试并确定系统能够处理的数据容量。

也就是观察系统承受超额的数据容量的能力。

安全性测试:

要验证系统内的保护机制能否抵御入侵者的攻击。

所谓的系统安全性就是让系统非法入侵者花费更多的时间、付出更大的代价来交换其所获得的系统信息,即让非法者获得的一切信息内容贬值。

评价标准:

有效性;生存性;精确性;出错反应时间;吞吐量

系统测试类型

一、功能测试:

功能测试属于黑盒测试技术范畴,是系统测试中要进行的最基本的测试,它不用考虑软件内部的具体实现过程

二、协议一致性测试:

分布式系统中,很多计算功能的完成需要由分布式系统内的多台计算机相互进行通信、交换信息、协调合作来完成的,必须遵循一定的规则(协议)。

所以要进行协议测试。

三、性能测试:

性能测试在软件的质量保证中起着重要的作用。

可从三个方面进行性能测试:

应用在客户端性能的测试、应用在网络上性能的测试和应用在服务器端性能的测试

面向对象的测试与传统测试的比较

传统的测试计算机软件的策略是从“小型测试”开始,逐步走向“大型测试”,且单元测试集中在最小的可编译程序单位——子程序。

面向对象程序的结构不再是传统的功能模块结构,而是作为一个整体,并且对每个开发阶段都有不同以往的要求和结果,已经不可能用功能细化的观点来检测面向对象分析和设计的结果。

面向对象测试的层次

⑴以方法为单元

⑵以类为单元

自动化测试:

自动化测试就是希望能够通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的测试,目的是减轻手工测试的工作量,从而达到提高软件质量的目的

自动化测试的优点

1、对程序的新版本运行己有的测试,即回归测试。

2、可以运行更多更频繁的测试。

3、可以进行一些手工测试难以完成或不可能完成的测试。

4、充分地利用资源。

5、测试具有一致性和可重复性。

6、测试具有复用性。

7、缩短软件发布的时间。

8、增强软件的可靠性。

自动化测试的缺点

1、自动化测试不能取代手工测试,测试主要还是要靠人工的。

2、新缺陷越多,自动化测试失败的几率就越大。

3、工具本身不具有想象力

4、技术问题、组织问题、脚本维护

5、测试工具与其他软件的互操作性

自动测试和手动测试比较:

一般来说,手工测试可以取代任何类型、功能的自动测试,但在多用户并发等情况下,手工测试是很难实现的,这时自动测试就发挥作用了。

另外,使用自动测试工具可以减少很多重复的手工劳动,精确复制缺陷,提高测试覆盖率,从而提高产品质量

BUG管理流图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1