首页 > 技术文章 > 软件测试基础理论笔记

luojh9102 2017-03-01 14:42 原文

测试用例方法选择的综合策略

一、最重要的测试方法

1、场景法

为了测试程序的主要业务流程、主要功能和错误处理能力(也使用了等价类划分方法)

——基本流、备选流

2、等价类划分法

只要有数据输入的地方(包括选择数据的地方),把无限的数据进行等价类划分,可以减少用例的数量

——有效等价类、无效等价类

二、重要测试方法

1、边界值

找到有效数据、无效数据的分界点,对分界点(最大值、最小值)及其两边的点进行测试。

一般有数据范围(如:编号1-5000整数)、数据长度(如:姓名1-20字符)要求的控件

说明:由于需求的不明确,有时可能数据的范围未能确定,这种情况下,边界值只能不测。

2、判定表(因果图)

考虑多个控件的组合,会产生不同的输出组合(组合数量较少,而且要求考虑全面)

——9个图形符号

三、次重要测试方法

1、正交排列法

多个控件,每个控件有多个取值,考虑不同控件取值的组合(参数配置类软件)(组合数量大,而且没有必要全部参数),使用最少的组合达到最大的覆盖程度。

2、测试大纲法

涉及到多个窗口,每个窗口包含多个动作,找到每个窗口的动作之间的联系。

 

      软件测试基本理论

一、软件开发阶段划分

软件开发阶段分为四阶段:需求分析、概要设计、详细设计、编码。

需求分析

根据客户的要求,清楚了解客户需求中的产品功能、性能、界面和具体规格等,然后进行分析明确的软件产品所要达到 的目标。

概要设计

系统分析员审查软件计划、软件需求分析提供的文档,提出候选的最佳推荐方案,确定模块结构,划分功能模块,将软件功能需求分配给划分的最小单元模块。确定模块间的联系,确定数据结构、文件结构、数据库模式等。

概要设计说明书

详细设计

为每一个模块确定使用的算法,并用适当的工具(如流程图)表达算法的过程,写出模块的详细过程性描述;确定每个模块使用的数据结构;确定模块接口的细节,包括用户界面、数据输入输出等。

详细设计说明书

 

软件测试阶段划分

单元测试

(1)依据:详细设计文档

(2)以功能测试为主,重点核心模块可以进行白盒测试(检查代码)

(3)可能需要编写驱动模块或桩模块

桩模块:模拟被测模块的下一级模块(被被测模块调用的那个模块)

(4)在实际工程中,为了节约成本,单元测试经常只有开发人员完成,有悖于测试(思想必须有第三方完成)

集成测试

(1)拿到一个新的集成版本的时候,一般先做冒烟测试——利用较少时间(0.5天-2天)、较少的人(1-3名,经验更丰富)对软件的主要功能进行测试,主要判断该版本是否值得一测,如果值得一测,整个测试组再全部投入;如果不值得一测,打回开发组,令其完善后再给出新版本。

(2)一个新的版本测试思路:
A、冒烟测试;

B、返测:对发现的缺陷是否进行修复的测试;

C、回归测试:对前面版本中所有的用例再执行一遍(保证软件旧的功能正确);

D、对新添加的功能进行测试

系统测试

 

(1)对整个软件系统进行全面完整的测试过程;

(2)在系统测试之前一般有“确认测试”:

A、确认改程序值不值得一测(冒烟测试)

B、确认相关的文档是否齐全(尤其是交给用户的文档)

验收测试

验收测试(用户接收度测试、用户体验测试、UAT、user acceptance test)

(1)alpha测试:由最终的用户在开发的环境中,对软件进行测试(在实际中也经常由开发方自主完成)

(2)beta测试:由最终的用户在实际的环境中进行测试使用。(对于一些没有固定用户群体的公共类软件(办公软件、游戏、输入法),一般会发行公测版(beta版),让用户免费使用,发行bug后进行信息反馈。

软件测试模型

1、概念:测试模型体现的是开发和测试的对于关系

2、V模型

 

优点:

1)明确标明了测试过程中存在的不同级别

2)清楚地描述了测试阶段与开发过程各阶段的对应关系

3)V模型的测试策略既包括了底层测试(代码级的测试),又包括了高层测试(需求级的测试)

缺点:

1)把测试过程作为需求分析,概要设计,详细设计,编码之后的一个阶段,容易让人理解为测试是软件开发的最后一个阶段

2)没有明确说明早期的测试,不符合越早测试和不断测试的原则

深入理解:

在编码之前,我们需要对相关的需求文档、开发文档进行测试—越早测试;

根据相关文档,在测试执行之前编写各个阶段的测试计划、测试用例等文档—测试过程是有计划性的。

注意:

如果做单元测试,需要有详细设计文档;

如果做集成测试,需要有概要设计文档;

如果做系统测试,需要有需求文档;

W模型

 

优点:

符合今早测试和不断测试的原则;

符合实际工作中的测试活动

 

软件测试的划分

 一、测试技术划分:

黑盒测试(即功能测试)--必须的

通过软件的外部表现来发现其缺陷

在程序界面处进行测试,只是检查程序是否按需求规格说明书的规定正常实现

白盒测试(逻辑结构测试/结构测试)--代码、可选的

检查是否所有的结构及路径都是正确的,重点看代码的逻辑、算法、结构是否正确,要求必须懂得代码,需要编写白盒测试用例。

灰盒测试

介于白盒测试与黑盒测试之间的测试;

关注输出对于输入的正确性;同时也关注内部表现,是通过一些表征性的现象、事件、标识来判断内部的运行状态。

在白盒测试时,白盒应用较多;

在集成测试时,灰盒应用较多;

在系统测试、验收测试时一般不会使用白盒测试和灰盒测试。

二、按是否需要运行代码划分

静态测试:对界面、文档、代码(代码的规范性,检查变量的命名,注释的频率,编程的规范性)。

不需写测试用例,只需要有代码审查单

一般经常把白盒测试和静态测试的要素结合在一起,形成“静态白盒测试”

 

动态测试:

 

三、按软件特性分类

功能测试(手工或者自动化工具)

根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们是否满足设计需求

性能测试(分布式软件:B/S C/S)

评价一个产品和组件与性能需求是否符合的测试。包括负载测试、压力测试、数据库容量测试等。

必须工具:loadrunner

 

随机测试

称为猴子测试,是指测试中所有的输入数据都是随机产生的,其目的是模拟用户的真实操作,随意向系统输入操作。

 

推荐阅读