分享

有关持续集成过程中提交测试的优秀实践

 东北十三少 2020-10-16

持续集成过程中,在代码提交到持续集成服务器后,需要进行提交测试。为了更加高效地完成提交测试,我们可以参考下列实践:

  1. 避免用户界面

为了追求快速提交和反馈,提交测试应以单元测试为主,避免对用户界面进行测试。因为用户界面测试会花费大量的时间。一是由于界面测试会涉及到多个软件部件,这就需要我们花很多时间和精力去准备,才能让测试运行起来;二是界面测试需要手工操作的,而手工操作的速度与自动化测试相比,是相当慢的。

  1. 使用依赖注入

依赖注入(或控制反转)是一种基于面向对象的设计模式,用于描述如何从对象外部建立对象间的关系。使用依赖注入可以让测试变得更容易。

  1. 避免使用数据库

如果提交测试需要调用数据库,将会极大延长测试的时间。因为需要提前准备数据库中的数据,而且由于需要重复测试,要确保每次测试的数据一致还需要清库等更多的操作。所以,提交测试要避免调用数据库。如果你的单元测试不得不调用数据库的话,那可能是你的代码在复杂性隔离方面做得不够好。

  1. 在单元测试中避免异步

异步行为会令单元测试变得困难。要避免单元测试中的异步行为,最简单的办法就是当一个单元测试用例运行到异步点时,将其切分出来作为另一个测试用例再开始执行。

  1. 使用测试替身

使用测试替身是单元测试的常见技术,而且它也是快速完成单元测试的技术。

  1. 时间的伪装

时间问题是自动化测试需要面对的问题,因为我们总会遇到一些需要定时或延时处理的功能。所以,如果你的代码将时间和真实的系统时间绑定的话,这些功能的单元测试会很难进行。

所以,在代码中我们应将对时间的请求抽象到一个类中。比如,使用依赖注入把用到的系统时间行为注入到包装类中。这样我们就可以为这个类的行为进行打桩或模拟,完成单元测试。

  1. 妙招

除了以上几个提交测试的优秀实践之外,还有两个小妙招儿能加快提交测试的运行。一是将提交测试分成多个套件,在多台机器上并行执行这些套件。记住:

计算能力是廉价的,而人力是昂贵的。及时得到反馈比准备几台服务器的成本要有价值得多。

二是不断优化用于提交测试的测试用例,将那些运行时间较长且不易失败的测试放到验收测试阶段运行。

这正是:

使用替身和依赖,减少测试时间长

不断优化和改进,提交测试有模样

参考书目:持续交付:发布可靠软件的系统方法,作者:[英]Jez Humble,David Farley,译者:乔梁,出版社:人民邮电出版社

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多