自动化测试(automated testing)在好多书籍中被介绍了,但很少注意讲怎样去组织这些测试。 当测试写的越多时,很难知道把这些测试放到哪或者用什么去调用它们。 在极限编程---Extreme Programming(xp),测试驱动开发 Test-Driven Development (TDD)盛行的时代,这成了一个很大的问题。 你可以把 测试驱动开发(TDD)认为是"Development through testing" 开发由经测试。 TDD的主要条款: 在任何代码片段之前,必须先写好自动检测这段代码功能的程序。既然代码不存在,那么测试在一开始就失败。 在 测试通过之后,复制的代码必须删掉。 象这样的方式每个程序员都可以应用,并不需要特定的方法论。但在我们开始写test之前, 值得我们注意的是,先考虑一下如何组织自动化测试。 这里有几种我们需要考虑的测试 单元测试(Unit test) :这些是为检查个别模块(比如classes类)服务的。 如果对象需要访问外部的数据源,比如Database,就需要通过一些模拟的对象(MOCK object)来模拟Database, (但这也只有在真实环境的数据与测试环境不同的时候。 比如测试环境里面没有真实Datebase,就需要MOCK Object) 用户测试 (Customer's test):这里是功能的,系统的并且认可的测试。系统中所有的行为检查都做为一个整体。 在XP理论中,这些测试,是由用户编写的,给出测试案例提纲。 集成测试 (Itegration tests): 这些测试象是在用户测试和单元测试之间的十字路口。 集成测试帮助程序测试几个级别中交互。 ,Mock Object不会出现在集承测试中,他会增加测试时间。同样,集成测试也经常需要存在的特定的测试环境,比如从数据库中放一些测试数据。集成测试也许使用外部的lib。 Cactus就是这样一个J2EE集成的lib。 解释这些测试已经超出了本篇文章的范围,并且也需要详细的理论叙述,所以,你仅需要知道这种测试存在就可以了。 开发测试(Developer's test) : 这种测试就是那些开发者校验 整段代码,新加的代码,新加的函数函数。 对于每个开发而言, 随时生成新的的测试去检查代码是很重要的。 组织这些测试和组织这些代码有着同样的重要性。 至于本文javascript:tagshow(event, '%C6%E4%CB%FB');" href="javascript:;" target=_self>其他地方,只要说到"测试",就是专指开发测试(Developer's test)。 在开发期间, 一个程序员有时可能问自己:系统中这个行为有test么,这个test存在么,哪里可以找到这个test?每次发现错误,都是靠最基础修改bug而不是通过自动测试,这是一个典型的例子。 在这种情形下事情进展可能是: 去找到这个函数的测试(可能测试已经写了,但里面还有一些小错误) 如果这样的测试还没有,或者测试不能盖住这种错误,我们就写一个新的测试来盖住这种错误。 现在 我们深信,程序在新的测试中不会通过。 修复程序中的bug。 再运行测试
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/
关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved 北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5 技术支持和业务联系:info@testage.com.cn 电话:010-51297073 |