浅谈功能测试之美[2] 功能测试方法
* 保持验收条件以及其技术实现的同步
之前我们将验收条件保存在Mingle中的故事卡里,而现在QA和BA通过Twist来编写验收条件,并标记为in-progress。在实现的时候,开发者通过IDE 来自动生成测试。在任何人修改验收条件或者技术实现时,IDE的重构功能将自动完成它们之间的同步。例如:测试专家们在Twist IDE 中可能写出如下的验收条件:
Search and buy book :
# search for book written by "Martin Fowler"
# add book "refactoring" to shopping cart
# check book "refactoring" is in my shopping cart
开发者通过TWIST IDE, 可以生成如下测试代码(以Java为例)
public SearchAndBuyBook {
public void searchForBookWrittenBy(String name) {
}
public void addBookToShoppingCart(String name) {
}
public void checkBookIsInMyShoppingCart(String name) {
}
}
之后开发人员可以选择通过手工编写代码(例如通过使用Selenium、 watir作为Driver )或者录制的方式(Twist会记录鼠标、键盘在WEB页面上的动作并转变为相应的测试脚本)来实现功能测试。 更方便的是,测试专家们编写的DSL验收条件在保持可读性的同时,可以像代码一样自动完成、对重构更加友好、并且可以方便的运行。
在开发者对相应的源代码进行诸如重命名或者引入参数(Introduce Parameter)等重构操作时,相应的测试DSL也会被改变.
* 对测试进行标签管理
Twist 使用标签(Tag)对测试进行管理,开发团队可以使用任意标签来标注测试。例如:已完成还是未完成测试、对应的故事卡号、相应或者相关的模块名、属于回归测试还是冒烟测试。这样团队可以方便地划分测试。通过使用Twist发布的ant target中的tag属性,你可以轻松地分组运行测试。比如在我们的项目中最广泛使用的一个Tag是in-progress,这样,QA、BA可以随时提交他们的验收条件,这些尚未完成的验收条件(没有相应的技术实现)会被自动过滤掉,不会引起测试的失败。
* 更有效率地 阅读测试
Twist很好地在产品中抽象了验收条件和技术实现,并将它们巧妙地关联起来。这样开发者可以通过易于阅读的DSL来快速了解上下文,并通过Eclipse的快捷键F3,快速地在验收条件和技术实现中进行切换,从而更有效率地阅读测试。
* 减少启动功能测试的花费
用户可以通过在Eclipse中创建Twist项目,快速展开测试。 Twist项目包含了运行Twist测试所必需的所有的第三方库。同时,Twist发布了相应的ANT target,大大减少了团队用于启动功能测试的时间。
在使用Twist的过程中,我们也发现了一些问题,主要集中在Twist的IDE不够稳定,会有一些UI的异常等方面。我们已经将BUG提交到了Twist 团队的论坛里,相信稍后的版本会更加稳定易用。通过使用Twist,很好地将团队以功能测试为中心整合在一起,团队中的所有角色可以通过一套IDE来编写、实现、运行、维护测试,大大减少了交流成本,提高了开发的速度,体会了开发之乐。
文章来源于领测软件测试网 https://www.ltesting.net/