XP将测试分为两类:单元测试和容纳测试(也叫功能测试)。单元测试是由开发者自己编写的,通常只测试一个类或一小组类。容纳测试通常是由客户或外部的测试组在开发者的帮助下编写的,对整个系统进行端到端的测试。这两种测试我们都会用到,并且尽量提高测试的自动化程度。
作为创建的一部分,我们需要运行一组被称为"BVT"(Build Verification Tests,创建确认测试)的测试。BVT中所有的测试都必须通过,然后我们才能宣布得到了一个成功的创建。所有XP风格的单元测试都属于BVT。由于本文是关于创建过程的,所以我们所说的"测试"基本上都是指BVT。请记住,除了BVT之外,还有一条测试线存在(译注:指功能测试),所以不要把BVT和整体测试、QA等混为一谈。实际上,我们的QA小组根本不会看到没有通过BVT的代码,因为他们只对成功的创建进行测试。
有一条基本的原则:在编写代码的同时,开发者也应该编写相应的测试。完成任务之后,他们不但要归还(check in)产品代码,而且还要归还这些代码的测试。这也跟XP的"测试第一"的编程风格很相似:在编写完相应的测试、并看到测试失败之前,你不应该编写任何代码。所以,如果想给系统添加新特性,你首先应该编写一个测试。只有当新的特性已经实现了以后,这个测试才可能通过。然后,你的工作就是让这个测试能够通过。 [Page]
我们用Java编写这些测试,与开发使用同样的语言,所以编写测试与编写代码没有太大的区别。我们使用JUnit(http://www.junit.org/)来作为组织、编写测试的框架。JUnit是一个简单的框架,让我们可以快速编写测试、将测试组织为套件、并以交互或批处理的模式来运行测试套件。(JUnit是xUnit家族的Java版本--xUnit包括了几乎所有语言的测试框架。)
在编写软件的过程中,在每一次的编译之后,开发者通常都会运行一部分单元测试。这实际上提高了开发者的工作效率,因为这些单元测试可以帮助你发现代码中的逻辑错误。然后,你就没必要去调试查错,只需要注意最后一次运行测试之后修改的代码就行了。这个修改的范围应该很小,所以寻找bug也就容易多了。
并非所有的人都严格遵循XP"测试第一"的风格,但是在第一时间编写测试的好处是显而易见的。它们不但让每个人的工作效率更高,而且由这些测试构成的BVT更能捕捉到系统中的错误。因为BVT每天要运行好几次,所以BVT检查出的任何问题都是比较容易改正的,原因很简单:我们只做了相当小范围的修改,所以我们可以在这个范围内寻找bug。在修改过的一小块代码中排错当然比跟踪整个系统来排错要有效多了。
当然,你不能指望测试帮你找到所有的问题。就象人们常说的:测试不能证明系统中不存在错误。但是,尽善尽美不是我们唯一的要求。不够完美的测试只要经常运行,也比永远写不出来的"完美测试"要好得多。
另一个相关的问题就是:开发者们为自己的代码编写测试。我们经常听人说:开发者不应该测试自己的代码,因为他们很容易忽视自己工作中的错误。尽管这也是事实,但是自测试过程需要快速将测试转入代码基础中。这种快速转换的价值超过独立测试者的价值。所以,我们还是用开发者自己编写的测试来构造BVT,但是仍然有独立编写的容纳测试。
自测试另一个很重要的部分就是它通过反馈--XP的一项核心价值--来提高测试的质量。这里的反馈来自于从BVT中逃脱的bug。自测试的规则是:除非你在BVT中加入了相应的测试,否则就不能修正任何错误。这样,每当要修正某个错误的时候,你都必须添加相应的测试,以确保BVT不会再把错误放过去。而且,这个测试应该引导你去考虑更多的测试、编写更多的测试来加强BVT。
主创建
创建过程的自动化对于单个开发者来说很有意义,但是它真正发光的,还是在整个系统的主创建(master build)的生成。我们发现,主创建过程能让整个团队走到一起来,让他们及早发现集成中的问题。
第一步是要选择运行主创建的机器。我们选择了一台叫做"投石车"的计算机(我们经常玩"帝国时代"J),这是一台装有四个CPU的服务器,非常适合专门用来做创建。(由于完整的创建需要相当长的时间,所以这种马力是必须的。)
创建进程是在一个随时保持运行的Java类中进行的。如果没有创建任务,创建进程就一直循环等待,每过几分钟去检查一下代码仓库。如果在最后的创建之后没有人归还任何代码,进程就继续等待。如果代码仓库中有了新的代码,就开始创建。
创建的第一阶段是完全提取仓库中的代码。Starteam已经为我们提供了相当好的Java API,所以切入代码仓库也很容易。守护进程(daemon)会观察五分钟以前的仓库,看最近五分钟里面有没有人归还了代码。如果有,守护进程就会考虑等五分钟再提取代码(以免在别人归还代码的过程中提取)。 [Page]
守护进程将全部代码提取到投石机的一个目录中。提取完成之后,守护进程就会在这个目录里调用Ant脚本。然后,Ant会接管整个创建过程,对所有源代码做一次完整的创建。Ant脚本会负责整个编译过程,并把得到的class文件放进六个jar包里,发布到EJB服务器上。
当Ant完成了编译和发布的工作之后,创建守护进程就会在EJB服务器上开始运行新的jar,同时开始运行BVT测试套件。如果所有的测试都能正常运行通过,我们就得到了一个成功的创建。然后创建守护进程就会回到Starteam,将所有提取出的源代码标记上创建号。然后,守护进程会观察创建过程中是否还有人归还了代码。如果有,就再开始一次创建;如果没有,守护进程就回到它的循环中,等待下一次的归还。
创建结束之后,创建守护进程会给所有向最新一次创建归还了代码的开发者发一个e-mail,汇报创建的情况。如果把创建留在代码归还之后去做,而又不用e-mail向开发者通报创建的情况,我们通常认为这是不好的组织形式。
守护进程将所有的步骤都写在XML格式的日志文件里面。投石车上会运行一个servlet,允许任何人通过它检查日志,以观察创建的状态。(见图1)
屏幕上会显示出创建是否正在运行、开始运行的时间。在左边有所有创建的历史记录,成功的、失败的都记录在案。点击其中的某一条记录,就会显示出这次创建的详细信息:编译是否通过、测试的结果、发生了哪些变化……
分享到:
相关推荐
标题“综合论述SSH的优缺点”指的是对Secure Shell(SSH)协议的全面分析,包括它的优点和不足。SSH是一种网络协议,用于安全地远程登录到服务器,执行命令,传输数据,以及在不安全的网络环境中提供加密通信。SSH...
对于计算机案例研究,可以对比分析bk-ci与其他同类工具(如Jenkins、Travis CI)的优缺点,或者探讨其在特定行业的应用情况和效果。模板建站则可能涉及如何利用bk-ci快速搭建和部署网站项目。 总的来说,bk-ci蓝鲸...
### 软件工程中的测试自动化与持续集成 #### 第一章:软件工程中的测试自动化与持续集成 **软件测试的重要性** 软件测试是确保软件质量和可靠性的关键步骤。通过全面而深入的测试,可以在软件发布前发现并修复...
案例分析可能揭示了在实际操作中如何权衡不同技术的优缺点,以及如何设计出可扩展、可维护的系统架构。 实施阶段通常包括设备采购、安装调试和系统测试。在这一环节,案例可能详细描述了如何进行硬件部署、软件安装...
4. **自动化部署**:结合 GitHub Actions、Travis CI 等持续集成/持续部署(CI/CD)工具,实现自动化构建、测试和部署。这不仅提高了开发效率,还确保了软件质量的一致性和可靠性。 5. **社区参与**:积极参与 ...
4. **定制和集成**:不同的企业有不同的需求,系统可能需要定制或与其他业务系统集成,这可能带来复杂性和额外成本。 5. **持续维护和升级**:CRM系统需要持续的维护和升级,以应对市场变化和技术进步,这也是一项...
OA厂商众多,各有优缺点,选择合适的OA系统对于企业的数字化转型至关重要。以下是对一些常见OA厂商的详细分析: 1. 泛微(www.weaver.com) 泛微采用J2EE开发技术,拥有强大的市场地位和理念,其产品功能齐全,品牌...
6. **可持续性分析:** 可进行能源效率、环境影响等分析,促进绿色建筑的发展。 7. **施工模拟:** 可以模拟施工过程,优化施工计划。 **BIM软件的缺点:** 1. **学习曲线陡峭:** 对用户的技术要求较高,需要专门...
作为中国网络卖家和购物者的首选平台,淘宝网凭借其独特的战略和产品特性,成功地构建了一个全面的商业生态系统。 淘宝网的战略定位是电子商务基础服务提供商,它的市场策略主要针对卖家和买家。对卖家,淘宝采取...
综上所述,淘宝网通过其全面的产品策略和优秀的交易保障制度,成功地建立了中国最大的网络零售市场,吸引了大量买家和卖家,并持续推动着中国电子商务的发展。同时,其开放的API也为第三方开发者提供了创新和拓展...
7. 集成电路制造行业投资战略的类型与选择:报告详细讨论了企业在投资战略中的各种选择,包括重点投资战略、稳定型投资战略和紧缩型投资战略,并分析了其优缺点。 8. 投资战略选择的原则与注意事项:报告探讨了企业...
每种模型都有其适用场景与优缺点,文章中简要介绍了这些模型的基本概念及其在项目管理中的应用。 - **知识点五:沟通管理** 沟通管理对于项目的成功同样至关重要。有效的沟通能够确保团队成员之间信息的准确传递...
4. 测试策略与方法:讨论如何选择合适的测试模式,包括边界扫描测试、功能测试、静态时序分析等,并分析不同测试方法的优缺点。 5. 故障模型和检测覆盖率:介绍常见的故障类型,如短路、开路、参数漂移等,以及如何...
本报告基于社交媒体的内涵、特点、优缺点,从营销概念和特点出发,结合微信营销案例,分析了社交媒体营销的具体应用和传播策略,包括品牌展示、客户维护、业绩提升、服务改善和形象宣传。而传播策略方面则着重于情感...
集成背板的材料选择通常包括聚氟乙烯(Teflon)、聚酯(PET)、聚酰胺(PA)和氟化乙丙烯(FEP)等,这些材料各有优缺点,选择时需根据实际应用环境和成本考虑。 此外,集成背板的设计也至关重要,包括背板的厚度、...
- **典型架构**:如客户端/服务器架构、分层架构、微服务架构等,每种架构都有其适用场景和优缺点。 - **软件架构设计方法**:包括自顶向下、自底向上、基于模式的设计等,选择合适的方法对于构建稳定可靠的系统至关...
在软件研发业务部分(问题8-9),调查问卷关注了软件产品的来源渠道和质量评价,这有助于企业了解产品推广的有效途径以及产品本身的优缺点,以便优化产品开发和市场营销策略。 综上所述,这份调查问卷旨在全面评估...
- 对每个方案的优缺点进行全面的评价,以列表形式展示,便于比较和分析。 7. **结论** - 基于以上分析,得出综合评价结果,选择最优解,并解释选择该方案的原因,同时可能还会提及未选择其他方案的理由,比如风险...
它包括系统开发审计、数据中心和网络通信设施的结构审计、支持其他审计工作、提供增值服务、灾难恢复和业务持续计划审计、系统安全审计、网站信息审计、全面控制审计、系统运营效能审计、投资回报率审计以及供应商...