软件测试基本理论

一、 软件的开发阶段划分 1、 需求分析阶段 由需求分析师完成 产出物:《需求文档》 2、 设计阶段 1) 概要设计 产出物:《概要说明书》 2) 详细设计

一、 软件的开发阶段划分

1、 需求分析阶段

由需求分析师完成

产出物:《需求文档》

2、 设计阶段

1) 概要设计

产出物:《概要说明书》

2) 详细设计

产出物:《详细说明书》

一般是由系统架构师(分析师)完成

3、 编码阶段

程序员

注:一般公司只有产品文档和原型,,所以如果你的公司这些文档都有,那么请珍惜吧。。。。

常见面试题:哪个阶段bug最多?哪个阶段bug最小?

需求分析阶段引入的bug最多,其次是设计阶段,在编码阶段引入的bug的最少。

所以:

1)测试不能只测程序,文档也要测。

2)测试工作应该从开发开始就介入,并且应该贯穿整个开发周期始终。

注:身在小公司的我,不得不告诉你们,文档不需要测,一般是不需要编写测试用例的(测试我负责),但是我们得要求自己编写用例,因为这家公司只是我们测试路上的路人甲,并不是我们的重点。测试时间短暂,感觉领导不太重视,测试可能没有测完,领导就喊着要上线。我希望从我手上流出去的产品不说完美,但是尽量没有那么多bug,总感觉有那么点忧桑。

二、软件测试的阶段划分

1、单元测试

1)单元测试是最小的测试单位,一般就是一个功能模块,一个方法(函数),一个类等

2)单元测试依据的是《详细设计文档》 (单元测试是根据详细设计文档写功能)

3)单元测试以白盒测试为主,可能辅助以黑盒测试

4)单元测试可能要求测试人员编写驱动模块和桩模块

A)驱动模块:模拟被测模块的上一级模块(调用被测模块的那个模块)

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

总结:驱动模块à被测模块à桩模块

5)在实际工作中,单元测试往往由程序员完成--(节约成本,但是不严格)

2、集成测试

1)集成测试也叫组装测试,在单元测试的基础上把软件的功能模块逐步合并在一起进行的过程

2)功能合并的过程一般是逐步完成的,会形成很多的临时的版本

3)集成测试依据的是《概要设计文档》

4)集成测试阶段以黑盒测试为主,核心模块适当采用白盒测试。

  名词解释冒烟测试(版本验证测试)使用较少的人(1-3人,经验丰富)、较少的时间(0.5-2天),对软件的核心功能进行测试,如果软件核心功能没问题,就让全组投入全面测试,如果问题较多,,版本不稳定,就打回开发组。

5)集成测试中,拿到新的内部版本,基本工作思路:

首先要进行冒烟测试(有可能省略),验证该版本是否可以接受

返测 :对之前的bug,在本版本中解决的,检查是否通过。

回归测试 :对上一版本中的所有功能再测试一遍----验证修改的代码或新加了功能,以前的功能是否依然正常。

对该版本新组装的功能进行测试 ---- 但如果有些版本只是用于修复以前的bug,也有可能没有新功能。

3、系统测试

1)整个功能全部组装完成后,对模拟集成了硬件、软件的完整系统进行的测试。

2)系统测试的重点在于

A)整个系统在模拟真实环境下是否可以正确运行

B)系统与硬件、软件的兼容性问题

3)系统测试的依据是《需求文档》

4)系统测试全部为黑盒测试

5)在系统测试之前,一般会安排确认测试,主要确认:

A、确认该系统是否进入全面的系统测试阶段(可以理解为一次大的冒烟测试)

B、确认相关文档是否准备齐全(尤其是给用户的文档,参与认证的文档)

说明:确认测试一般时间相对较短,参与的人员较少。所以不把其与单元测试、集成测试、系统测试所并列

4、 用户验收阶段   --- 验收测试

UATUser  acceptance Testing)用户接受度测试

1) 用户参与的一个检查过程

2) 可以分为两个小阶段:

AAlpha测试 :在开发环境中,由最终用户对软件进行检查,一般经常由软件公司代用户完成。

BBeta测试 :在用户的实际环境中,由最终用户对软件进行检查

对于公共类软件(操作系统,游戏,输入法),一般把软件免费发放给最终用户,通过用户使用收集bug ---- 公测版本

三、软件测试的模型

1、软件测试模型表达的是测试阶段和开发阶段的对应关系。

2、两个常见模型

1V模型(重点

A、会画

 

B、优缺点

 优点:

1)开发和测试阶段划分明确,对应关系明确

2)测试阶段既包含单元测试(代码、专业级)又包含验收测试(用户级)

缺点:没有体现需求、设计阶段的文档测试工作,容易造成误解,以为测试工作只是开发完成后的收尾工作

2W模型(了解)

 

A、可以理解为双V模型,第一个V是开发活动,第二个V是测试活动

B、比V 模型更加强调了文档测试阶段的重要,体现了测试对象不仅是程序需求和设计同样需要测试。测试与开发是同步进行的

     CW模型更符合尽早测试和不断测试的原则

四、软件测试的分类

1按测试技术划分

1)黑盒测试 :(功能测试的基本特征)又叫功能测试、数据驱动测试,是不考虑程序内部结构,只需考虑输入和输出情况下进行的功能测试

2)白盒测试 :又称为结构测试,基于程序的测试。只考虑程序内部结构,而不去考虑程序功能的测试

3)灰盒测试 :结合黑盒和白盒测试的要素,对软件进行测试,一般先做黑盒测试,当发现有bug,对bug进行定位,对有可能有问题的代码再进行白盒测试的过程(在集成测试中经常使用)

补充说明

1)测试阶段中黑盒测试为主

2)白盒测试测试常常对风险较大,难度较大的模块进行测试

3)白盒测试要求测试人员懂得代码,效率较低,时间成本高

4)白盒测试也需要编写测试用例

2按是否需要运行代码划分

1)静态测试 :不需要运行程序

2)动态测试 :需要运行程序才能进行的测试

黑盒(功能)测试一般都是动态测试

白盒测试即有可能是动态的,也有可能是静态的

3) 静态测试包括:

A、 界面测试 :主要测实际界面与需求要求是否符合

B、 文档测试 :主要测试文档和说明是否真正符合

C、 代码测试 :主要测试代码是否符合相应的标准和规范

常见问题:静态的代码测试和白盒测试的区别:

(1) 白盒测试主要关注代码的逻辑功能实现,测试者必须要懂代码,要求写测试用例

(2) 静态代码测试主要关注代码的规范性、标准性,测试人员不需要懂代码,不需要写测试用例,只需参考代码审查单检查即可

3按软件的特性分类

1)功能测试 :

(1) 任何软件都必须要做功能测试

(2) 软件要先做功能测试,保证其功能正确。

分布式软件需要在功能正确的前提下,在考虑性能

(3) 功能测试分为:手工功能测试和功能自动化测试(需要借助于工具完成)

2)性能测试 :

1)分布式(c/sb/s)需要做性能测试

2)性能测试只有自动化(要借助工具完成)

4、其它(常见的名词术语)

1)返 测 :在新版本中对程序员修改的bug进行测试,验证bug是否被修改

2)回归测试 :对上个版本中的所有功能重新测试一遍,检验新版本中原有的功能是否依然正确,回归测试存在大量的重复性工作,所以企业会使用自动化工具实现

3)随机测试(猴子测试):在测试用例执行完成之后,对软件进行随意的测试的过程【只是时间充足时,对正常测试用例之外的补充测试】

4)兼容测试 :指对被测软件与硬件、软件之间的兼容性的测试,

兼容性测试可以分为三大类:

1)硬件兼容

A、与整机兼容

B、与外设兼容

2)软件兼容

A、操作系统

B、应用软件之间的兼容:杀毒软件,工具类软件

C、不同浏览器的兼容

D、数据库的兼容

3)数据兼容

不同版本间的数据兼容

5)测试流程(步骤)

1)需求 :阅读需求,理解需求

2)测试计划 :测试经理对整个项目做一个宏观的计划

3)设计测试用例

4)执行测试

5)记录测试执行结果,并填写《缺陷报告》,记录缺陷

6)跟踪管理缺陷

7)测试总结报告或测试评估报告