首页 > 代码库 > 软件测试理论学习

软件测试理论学习

测试活动的开展

测试计划

     测试活动的目的和被测目标

     测试的范围

     测试的方法

     测试所用到的资源

     测试的进度安排

     测试的策略

测试用例的产生

     何时开始编写测试用例

     选定测试方法

     测试用例的内容

     测试用例的粒度

     测试用例的组织方式

     测试用例的审查

     测试用例的有效性检验

开始执行测试

报告测试缺陷


V模型

     软件需求分析——用户验收测试

     系统概要设计——系统测试

            详细设计——集成测试

                   编码——单元测试

1、什么是黑盒测试?

测试人员把软件产品看成是一个黑盒子,测试过程中对这个软件黑盒的操作只关注会得到什么结果,而不必关心盒子内部的逻辑结构

对这个软件黑盒的操作可以是字符串的输入、图片的输入、视频的流入、事件的输入

简单点说就是只关注input和output

2、为什么要做黑盒测试?

验证软件是否符合需求文档的设计

证实软件是否符合终端用户的需求

3、在软件生命周期的哪些测试阶段用到了黑盒测试?

4、黑盒测试的方法?

输入值域和输出值域;等价类划分;边界值界定;状态转换;因果图分析;语法测试

5、什么叫打桩?什么叫驱动?

6、什么是白盒测试?

白盒测试又称结构测试或逻辑驱动测试,它通过分析被测组件内部的工作原理,通过测试来检测被测组件内部的运行是否符合产品规格说明书的规定

相对于黑盒测试需要测试人员检查细节,这些细节包括数据流和控制流

数据流方面:

控制流方面:

7、白盒测试和黑盒测试的区别?

黑盒测试:适用于各个阶段;完全不考虑程序内部的结构;黑盒测试是穷取输入测试,输入所有可能的情况

白盒测试:一般用于单元测试阶段;需要全面了解程序内部逻辑、对所有逻辑路径进行测试;白盒测试时穷举路径测试,

8、白盒测试的方法?

语句测试;分支/判定测试;条件测试(条件分支测试、条件组合测试、修正条件判定测试);数据流测试(变量的定义点——变量的值会随着这些语句的执行发生变化、变量的使用点——谓词使用(执行语句后程序出口>=2)和计算使用(执行语句后程序出口<=1))——为了覆盖被测组件中所有变量从被定义点到被使用点的路径。数据流测试(全定义覆盖、全谓词使用覆盖、全计算使用覆盖、全使用覆盖、全定义使用对路径覆盖);基本路径测试(圈复杂度V(G));线性代码序列与跳转测试

9、单元测试

对软件的最基本组成单元进行测试,是最低级的测试

软件的被测单元将在与其他组件隔离的情况下进行测试

被测单元在C语言这种面向过程中指函数或过程

               在C++这种面向对象中可以是类也可以是成员函数

10、为什么要对程序进行单元测试?

保证被测代码有正确的行为,可以验证代码是否与详细设计一致

窥探软件内部的实现机制,可以发现其他阶段难以发现的软件缺陷(因为这个阶段大多是白盒测试)

充分的单元测试可以降低软件开发的成本

11、由谁来做单元测试?什么时候开始做单元测试?

开发人员              软件的编码阶段

12、怎么做单元测试?

我们知道在编码阶段,由开发人员先设计各单元之间的接口,再依次实现个单元内部代码,最后对各个单元进行测试

因此对于每个被测单元应该知道其对外接口(全局变量、类的公有成员、函数的形参、返回值、函数名)

测试单元被测时,由于单元的独立性,需编写驱动程序或桩函数来模拟被测单元的调用和被调用

单元测试的策略:自顶向下、自底向上、独立测试

13、单元测试的入口条件和出口条件

14、集成测试

对软件已测完成的单元或组件之间的接口进行测试,又称组装测试或子系统测试

当两个已经完单元测试的单元要组成一个组件时,就必须对这个组件进行集合测试,测试通过后将跟多的组件聚合进行更大范围的集成测试,从而得到更大的组件,进而组成模块、子系统和系统

集成测试一般按一下层次进行:

组件内部各单元之间的集成;

模块内部的集成;

子系统中各模块之间的集成;

系统中各个子系统之间的集成。

集成测试需要窥探程序内部的接口,但有大量使用的是黑盒测试的方法,所以它是结合了黑盒和白盒的特点,常被成为灰盒测试

15、为什么要对程序进行集成测试?

可以发现在单元测试难以发现的缺陷,有时候基本单元的功能虽然实现了,但给出的接口并不正确,这样的缺陷很容易在集成测试阶段发现;

结合白盒测试和黑盒测试的特点进行测试;

逐步对软件进行集合测试可以有效的定位集成新的组件后所引入的缺陷;

逐步的对软件进行集合测试可以有效的评估被集成的新模块对原系统的影响,只有对软件进行逐步集成测试才能形成稳定的、已完成集成的模块或系统;

充分的集成测试可以降低软件测试的成本。

16、集成测试是为了完成哪一个文档?

在软件开发过程中,开发人员通常将需求分析转换为软件的概要设计文档(指明各个模块之间的接口)

17、什么时候开始做集成测试?

应该在被测组件的编码完成之后,因为这个时候被测组件已经通过了单元测试,但并未集合成一个稳定的组件

18、怎么做集成测试?

19、集成测试的入口条件和出口条件?

20、系统测试

系统测试就是在所有模块或子系统都完成了集成测试之后,测试人员对整个软件系统按照软件产品需求规格说明书进行的功能验证测试

软件测试直到这个阶段所做的工作还是一直对一系列需求文档进行验证

在单元测试阶段,主要是对软件详细设计文档的验证

在集成测试阶段,主要是对软件接口说明文档进行验证

在系统测试阶段,主要是对产品需求规格说明书进行验收

21、为什么要对软件进行系统测试?

系统测试与前面的阶段测试的目的不同。单元测试是为了保证代码有正确的行为,以及验证代码是否与详细设计一致,集成测试是对软件已完成测试的单元或组件之间的接口进行测试,这些接口属于内部接口,而系统测试中的功能测试通常是测试软件的用户接口;

系统测试的范围通常更广泛。系统测试包括一些专项测试,如性能、易用性、压力、健壮性测试;

系统测试是在模拟真实环境下的测试。相比之前的测试,系统测试所使用的系统配置、软硬件环境都必须按照产品需求规格说明书中的要求严格配置,因此,系统测试出来的结果更具有现实意义;

某些特殊的常量数据只能在系统测试阶段来验证,例如关于用户界面的友好程度、UI的美观程度、字体的大小及字体的类型

22、系统测试时为了验证哪一个文档?

软件的产品需求规格说明书

23、什么时候开始做系统测试?

在所有的模块都集成之后进行

24、怎么做系统测试?

功能测试:测试产品的各项功能的正确性。如果发现功能实现的与产品需求规格说明书描述的一致但是并不正确,那么测试人员应当与开发人员代表、项目管理人员和需求管理人员沟通以确定产品需求规格说明书中对被测功能的描述是否是一个缺陷

性能测试:测试产品的各项性能是否达标

压力测试:测试以获得产品的某些关键性能指标的极限

健壮性测试:指产品正常运行时在遇到某些突发异常事件的系统保持与恢复的能力

兼容性测试:指产品的新旧版本之间的兼容性以及软件产品与软件和硬件环境间的兼容

用户易用性测试:指产品是否为用户提供了友好的界面及易操作的接口

安装测试:软件产品安装是指测试软件在各种软硬件环境组合下是否能正常地进行安装、卸载,还包括取消安装时的回滚操作是否彻底、是否清楚了文件系统和注册表中的内容以及在安装过程中出现异常(断电、系统崩溃等),带到系统重启之后软件产品是否可以重新安装等。

25、系统测试的入口和出口条件?

26、用户验收测试

故名思意就是交付给用户,让用户执行产品验收测试阶段

27、为什么要对软件进行用户验收测试?

可以实现在用户环境中对产品规格说明进行验收;

可以实现在用户环境中对产品的用户文档进行验收;

可以降低产品中的缺陷数量;

可以获取 用户关于产品功能、性能的反馈

28、如何开展用户验收测试?

用户是企业内部人员的软件项目

用户是其他企业或团体的软件项目

用户是大众,如手机、免费邮箱,其用户体验测试就扩展成为Alpha测试和Beta测试

Alpha测试:指产品上市之前在公司内部进行的用户体验测试

Beta测试:指产品上市之前让用户或企业的合作伙伴进行用户体验测试的行为

29、用户验收测试验证的是那个文档?

在用户环境中队产品过个说明书进行验证

30、如何开展用户体验测试?

31、用户验收测试的出口条件和入口条件是什么?

32、回归测试

当开发人员对软件产品的极限版本做出任何改变是,测试人员针对这些改变进行的有针对性的测试活动

33、什么是软件的基线版本?

是软件在开发过程中某一时刻的快照,在这一时刻的软件产品的版本一定是一个稳定的版本,一定可以作为继续再其上做开发的依据

34、为什么要做回归测试?

验证开发人员所承若修复的软件缺陷是否已被正确修复;

验证新的软件修改是否影响了原有的稳定模块的正确性;

验证新的软件修改是否引入了新的缺陷;

验证新的软件版本是否稳定,从而成为新的极限版本,以备后续开发使用

35、什么时候开始做回归测试?

36、怎么做回归测试?

37、冒烟测试

38、α、β、γ测试

39、性能测试    性能指标   负载测试

从本质上来说都是体现在对时间的利用和对资源的占用上

40、常用的性能指标 

软件的事务处理效率;IO性能;数据库性能;内存利用率;CPU利用率;时间与资源的使用效率

41、什么是软件的事务处理时间?

指软件在处理某一项事务时,从开始处理到完成所花费的所有时间

42、什么是软件产品的IO性能?

通常包括物理硬盘的IO性能、网络的IO性能和其他硬件的IO性能

在需要大量进行读写硬盘操作的软件产品中物理硬盘的IO性能很容易成为其瓶颈,例如多任务多线程的下载大量文件等

衡量IO性能的指标是单位时间内读写数据的数量

43、什么是数据库性能?

指软件在进行数据库的查找、添加、删除、更新数据记录时要同时对多张表进行操作

提高对数据库性能的方式通常有:减少对数据库操作的次数,把一些常用的数据长期存储内存中;较少表与表之间的依赖性

44、什么是资源利用率?

指软件产品实际使用资源数量与所申请的资源总量之间的比例

内存空间利用率:即实际使用的内存空间和软件所申请的资源总量之间的比例

CPU的利用率:即应用程序使用CPU时间与应用程序总的运行时间的比例

45、负载测试

 通过对被测软件产品进行各种方式的加载负荷以获得被测产品在各种加载情况下的性能参数等信息

46、负载测试的目的是什么?

47、何时进行负载测试?

48、负载测试需要做那些环境配置?

49、负载测试的加载策略有哪些?


安全测试

兼容性测试

易用性测试



本文出自 “零蛋蛋” 博客,谢绝转载!

软件测试理论学习