软件测试的各种方法介绍
-
研发过程中软件测试的方法汇总
一、
动态测试的几个环节:
动态测试
,英文是
Moment
Testing
。
动态测试
是指通过运行
软件
来检验软件的动态行为和运行
结果的正确性。
根据
动态测试
在软件开发过程中所处的阶段和作用,
动态测试可分为如下几个步
p>
骤:
单元测试
集成测试
冒烟测试
系统测试
回归测试
验收测试
1.
单元测试
单元测试,英文是
Unit
Testing
。
单元测试
是最微小规模的测试
;
以测试某个功能或代码块
。典型地由
程序员
而非
测试员来做,<
/p>
因为它需要知道内部
程序设计
和编码的细
节知识。
这个工作不容易
做好,
除非应
用系统有一个设计很好的
体系结构
;
还可能需要开发测试驱动器模
块或测试套具。
2.
集成测试
集成测试,英文是
Integration
Testing
。
集成测试
是指一个应用系统的各个部件的联合测试,
以决定他们能否在一起共同<
/p>
工作并没有冲突。
部件可以是代码块、
独
立的应用、
网络上的
客户端
或服务器端
程序。
这种类型的测试尤其与客户服务器和
分布式系统
有关。
一般
集成测试<
/p>
以前,
单元测试
需要完成。
集成测试
是
单元测试
p>
的逻辑扩展。
它的最简单的形式是:
两个已
经测试过的单元
组合成一个组件,
并且测试它们之间的接口。<
/p>
从这一层意义上讲,
组件是指多个
单元的
集成聚合。
在现实方案中,
许多单元组合成组件,
而这些组件又聚合成程
序的更大部分。
方法是测试片
段的组合,
并最终扩展进程,
将您的模块与其他组
的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多
个进程组成,应该成对测试它们,而不是同时测试所有进程。
集成测试
识别组合单元时出现的问题。
通过使用要求在组合单
元前测试每个单元,
并确保每个单元的生存能力的
测试计划
p>
,
可以知道在组合单元时所发现的任何错
误
很可能与单元之间的接口有关。
这种方法将可能发生的情况数量减少到更简单
的分析级别
3.
冒烟测试
冒烟测试,英文是
Smoke
testing
。
冒烟测试
的名称可以理解为该种测试耗时短,
仅用一袋烟功夫足够了。
也有人认
为是形象地类比新电路板基本功能检查。
任何新电路板焊好后,
先通电检查,
如
果存在设计缺陷,电路板可能会短路,板子冒烟了。
冒烟测试
的对象是新编译的每一个需要正式测试的
软件
< br>版本,
目的是确认软件基
本功能正常,
< br>可以进行后续的正式测试工作。
冒烟测试
的执行者是版本
编译人员。
4.
系统测试
系统测试,英文是
System
Testing
。
系统测试是基于系
统整体需求说明书的黑盒类测试,
应覆盖系统所有联合的部件。
系统测试
是针对整个产品系统进行的测试,
目的是验证系统是否
满足了需求规格
的定义,找出与需求规格不相符合或与之矛盾的地方。
< br>
系统测试
的对象不仅仅包括需要测试的产品系统的
p>
软件
,
还要包含软件所依赖的
硬件、外设甚至包括某些数据、某些支持软件及其接口等。因此,必须将系统中
的
软件
与各种依赖的资源结合起来,在系统实际运行环境下来
进行测试。
5.
回归测试
回归测试,英文是
Regression
testing
。
回归测试
是指在发生修改之后重新测试先前的测试以保证修改的正确性。
理论上,
软件
产生新版本,
都需要进行
回归测试
,
验证以前发现和修复的错误是否在新
软
件版本上再次出现。
根据修复好了
的缺陷再重新进行测试。
回归测试
的目的在于验证以前出现过但
已
经修复好的缺陷不再重新出现。
一般指对某已知修正的缺陷再
次围绕它原来出现
时的步骤重新测试。
通常确定所需的再测试的
范围时是比较困难的,
特别当临近
产品发布日期时。
因为为了修正某缺陷时必需更改
源代码
,
因而就有可能影响这
部分源代码所控制的功能。
所以在验证修好的缺陷时不仅要服从缺陷原来出现时
的步骤重新测试,
< br>而且还要测试有可能受影响的所有功能。
因此应当鼓励对所有
回归测试用例进行
自动化测试
。
6.
接受测试
接受测试,英文是
Accept
Testing
。
接受测试是基于客
户或最终用户的规格书的最终测试,
或基于用户一段时间的使
用
后,看
软件
是否满足客户要求。一般从功能、用户界面、性能、
业务关联性进
行测试。
二、
按
测试
者对内部的知晓或者程度
分类
:
1.
白盒测试
白盒测试,英文是
White Box Testing
。又称结构测试或者逻辑
驱动
测试。
白盒测试
是把测试对象看作一个打开的盒子。
利用白盒测试法进行
动态测试
时,
需要
测试
软件
产品的内部结构和处理过程,不需测试软件产品的功能
。
白盒测试
法的覆盖标准有
逻辑覆盖
、
循环覆盖和基本
路径测试
。
其中
逻辑覆盖
包
括
语句覆盖
、
判定覆盖
、
条件覆盖
、
判定
/
条件覆盖、
< br>条件组合覆盖
和
路径覆盖
。
p>
白盒测试
是知道产品内部工作过程,
p>
可通过测试来检测产品内部动作是否按照规
格说明书的规定正常进行
,
按照程序内部的结构
测试程序
,
p>
检验程序中的每条通
路是否都有能按预定要求正确工作,
而不顾它的功能,
白盒测试的主要方法有逻
辑驱动
、基路测试等,主要用于
软件
验证。
白盒测试
常用工具有:
Jtest
p>
、
VcSmith
、
Jcontract
、
C++ Test
、
CodeWizard
、
log
iscope
。
2.
黑盒测试
黑盒测试
,英文是
Black Box
Testing
。又称
功能测试
或者<
/p>
数据驱动测试
。
黑盒测试是根据
软件
的规格对软件进行的测试,
这类测试不考虑软件内部的运作
原理,因此软件对用户来说就像一个黑盒子。
软件测试人员
以用户的角度,
通过各种输入和观察软件的各种输出结果来发现软
件存在的缺陷,而不
关心程序具体如何实现的一种软件测试方法。
黑盒测试
常用工具有:
AutoRunner
、
winrunner
、
loadrunner
。
三、
从思维的方向分:
1.
正向测试:
2.
逆向
测试:
逆向测试
/
反向测试
/
负面测试
的英文是
Negative Testing
,测试瞄准于使系统
不能工作。
负面测试
与正面测试的比较:
负面测试
(
Negative tes
ting
)
是相对于正面测试(
Pos
itive testing
)而言的。
它们也是测试设计时的
两个非常重要的划分。
简单点说,
正面测试就是测试系统
是否完成了它应该完成的工作;
而负面测试就是测试系统是否不执行它
不应该完
成的操作。
形象一点,正面测试就象一个毕恭毕敬的小
学生,老师叫我做什么,
我就做什么;
而
负面测试
就象一个调皮捣蛋的孩子,
你叫我这样做,
我偏不这样
做,而且和你对着干。开发人员也是最讨厌修改此类
bug
的。
四、
从测试的内容分:
1.
接口测试
接口测试的英文是
interface testing
,
接口测试测试系统组件间接口的一种测试。
接口测试
的好处:
< br>由于
接口测试
代码本身就是用
j
unit
(当然接口的类型不同,不一定是
Junit
来
实现)
来实现的,
是
属于
自动化测试
的范畴,
因此必定也包
含自动化测试所固有
的优势。
1
)
提高测试质量
软件开发
的过程是一个
持续集成
和改进的过程,而每一次的改
进都可能引进新
bug,
因此当软件的一部,或者全部修改时,
都需要对软件产品重新进行测试。
其目的是要验证修改后的产品是符合需求的,
而当没有
自动化测试
代码时,
< br>往往
会由于各种各样的原因,回归不充分,导致
bug<
/p>
遗漏。
2
)
提高测试效率
软件系统
的规模越来越大,
功能点越来越多,
开发人员的自测
或者测试人员的人
工测试非常耗时和繁琐,
势必导致测试效率的
低下,
而
自动化测试
正好解决这些
p>