【案例】:
一些有经验的软件测试团队通常会采用一些激励或游戏规则来增加回归测试的趣味性,我曾看过一个TOP500的软件企业里的测试部门,每隔一段时间就会由高层发起一个“虫子打猎”(Bug hunting)的活动,通常在一个不太繁忙的周五午后,通知邮件一发出,全体部门立即行动,不论职务高低,不分经理,工程师,纷纷赤膊上阵。为了找到猎物,每人都各显神通,尽可能地设计一些平时想不到的测试场景去寻找软件里的bug,但有一个前提条件,就是他不能测试自己本来负责的系统模块,必须去测试别人的而且他不熟悉的的模块。比如小张是负责测Email的,那他在这次活动中,偏偏就要去测试Messenger;测试messenger的小李这次又要去测试calendar,这完全是一个网状交叉的测试。打猎活动结束后,高层还要召开“庆功会”,评定出“最好的bug”,“最有创意的bug”等等称号,虽然没有奖金,但是每个获得荣誉的人都会倍感自豪。而且,对于团队来说,打猎活动收到成效也是显著的,是一举三得的好事情。
第一,交叉测试会找到以往被忽略的bug。
第二,熟悉不同模块,测试人员将来可以在工作中互为备份。
第三,增强了团队凝聚力,并激发对测试工作的热情。
2. 测试自动化可以随时触发运行
测试自动化一旦开发完成,就可以在任何时间被触发运行,而没有下班或周末的概念,测试人员完全可以在下班之前触发某个自动化开关,把测试任务移交给自动化脚本,然后经过一夜的运行,第二天早上上班来查看自动化测试报告,这是自动化的独特优势所在。从这个意义上讲,测试自动化延伸了手工测试的工作时间和范围。
3. 测试自动化有助于知识的存储和移交
这是一个潜在的事实,在以前的手工测试一统天下的时候,测试人员的知识主要是靠文档存储,比如测试计划,测试案例说明书,bug数据库等等。因此,我们看到,当一个测试工程师离职的时候,他会把他的知识以文档的方式留给原来的团队。而随着自动化测试的发展,这种测试知识的形式也在发生变化,测试人员的技术可以通过测试程序保留下来。对整个测试团队来说,能够量化共享的知识越多,团队就越稳定,受到个体测试人员的影响就越少。这是老板愿意看到的场面,因此,从这个角度来说,测试经理比测试工程师更有动力去推动软件测试自动化。
4. 第三方自动化测试工具的使用提高了自动化测试开发的效率
如果说前三点已经讲清了自动化测试的合理性动机,那么自动化测试工具的应用则为自动化测试实施提供了保障,使得做自动化测试不在那么困难和复杂,而变得简单和有效率。
使用Junit来完成案例一
import junit.framework.TestCase;
public class funTest extends TestCase {
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testFun() throws Throwable {
//调用被测函数
int i = Fun(2);
//使用junit提供的assert断言语句比较结果
assertTrue(1,i);
}
}
在以上代码中, funTest类,以及funTest类的setup函数和teardown函数(环境回收工作)是由Junit自动生成的,我们写的测试程序只有2条语句,其中断言语句assertTrue会通过比较,给出pass还是fail的结果报告。可以看出,使用Junit工具帮我们减少了自动化测试开发的工作量。
使用QTP来完成案例二,如下:
使用QTP录制同样的google搜索操作,只有两条语句生成:
Browser(”Google”).Page(”Google”).WebEdit(”q”).Set “测所”
Browser(”Google”).Page(”Google”).WebButton(”Google 搜索”).Click
其中Browser,page,webEdit,webbutton都是QTP提供的对象,操作起来非常直观方便。