软件自动化测试TDD(测试驱动开发)

《Java测试驱动开发》读书笔记01-TDD工具链

2018-08-14  本文已影响6人  antony已经被占用

本书简介

英文名称:Test-Driven Java Development
作者: Viktor Farcic Alex Garcia
译者: 袁国忠
由人民邮电出版社2017年9月出版,笔者购买的是第一次印刷版本。
笔者最近在公司内部推广开发测试(developer test),也一直想了解TDD与单元测试的异同,以及在TDD下的开发模式与非TDD的差异。看到此书提供了较为丰富的TDD案例,因此,购买了此书。


test-driven jd.jpg

第二章 工具、框架和环境

在第二章中,作者对开发测试的工具链进行了介绍,并就其中某些工具进行了比较。整理如下:

1 代码管理:Git

事实上的代码配置管理标准工具。后端可以是gitlab/github。这个在书中没有展开。

2 虚拟机:Vagrant + Docker

通过这个方案可以在windows下使用docker

3 构建工具 gradle

Gradle作为后来者,样板代码更少,配置文件更简短。集中了maven+Ant的优势,既有Maven的生命周期,以及与Maven依赖库的无缝集成,又可以和ant一样提供强大的功能。
当然在笔者所服务的公司,目前还是以Maven为主。在C#项目中则使用msbuild,而在C++项目中使用Make。

IDE

这个作为程序员吃饭的家伙,JAVA条线当然首推IntelliJ IDEA。文中推荐了社区版。

单元测试框架

作者在这里提出了一个重要的问题: 测试(用例)是什么?如何定义(一个测试用例) ?
笔者也认为,开发一个测试框架,其首要的任务也是回答上述问题。
在测试框架的选择上,JAVA条线的双子星座就是Junit和TestNG。
TestNG在用例组织等功能上毫无疑问是领先的,不过JUnit依旧是GitHUB/Maven Central等平台上的测试框架类的头牌。

断言

Hamcrest vs AssertJ
第一眼看到Hamcrest丰富的Matcher, 就摒弃了Junit自带的Assert。而在看到了AssertJunit漂亮流畅的Fluent Assert后,就从此推荐使用AssertJ作为断言工具了。

代码覆盖率工具

Jacoco vs Cobetura
Cobetrua还在更新! 并且由于出道较早,devops工具链上的集成较好。如笔者在C++项目中使用gcov做覆盖率统计时,就可以通过gcovr来生成cobetura格式的报告,这样就可以实现覆盖率统计结果的统一解析。
当然Jacoco更为易用,目前公司内部的Java项目中也主要以Jacoco作为覆盖率统计工具。
主要的坑来自于Jacoco与Powermock的Instrument冲突。目前只能通过offline-instument来解决,执行起来比较麻烦。

Mock框架

Mockito + Powermock, 简直就是神雕配侠侣。 关于这两者的具体使用,读者可以参考笔者发表的文集。

UI测试与BDD

感兴趣的读者可以参考笔者参与编著的《精通自动化测试框架设计》
关于BDD, 就JBehave/Cucumber而言,如果哪家公司可以由此工具支撑起10K以上的用例,请务必告之。感谢!

上一篇下一篇

猜你喜欢

热点阅读