我们测试人员利用 PHPUnit 这个框架进行 API 接口测试,从 2015 年 4 月到 9 月之间的半年时间里,从学习 PHP 语言开始(之前没有编程基础),到能自动测试 30 多个 Web API 接口,无论从个人成长上来说,还是从测试效率、测试效果上来,都是非常值得的,因为跨出了艰难的一步。
编程技能对于测试人员是一个重要的技能,通过学习编程来解决持续集成问题,进而改进过程协同,有效地帮助开发人员发现他们不易发现的问题;促进对开发理解的同时,潜移默化地传播测试理念给开发同学,坚定且具有说服力。
注意:利用 PHPUnit 进行 API 接口测试,并不替代开发人员自己的单元测试。
PHPUnit
PHPUnit is a programmer-oriented testing framework for PHP.
一个原则是及时升级到主流稳定版本,当下:PHPUnit 5.6(支持 PHP 5.6 和 PHP 7)。PHPUnit 代码托管在 GitHub PHPUnit 上。
注:
PHP 版本:/usr/local/php/bin/php -v
或 /usr/local/php/sbin/php-fpm -v
PHPUnit 版本: class PHPUnit_Runner_Version defines the current version of PHPUnit.(Runner/Version.php)
两个要点
- 准备测试数据
准备测试数据,除了做桩的数据,和测试代码配合,做到基本的分支覆盖;
通过 Excel 或者 Sublime 可以快速准备好测试数据;
从数据角度,可以分为:建库数据、启动数据、演示数据、测试数据; - 编写测试代码
测试代码用来实现测试用例。可以考虑将测试用例的核心思路合并到API 测试代码的函数前的注释说明中,而不必再像之前那样将测试用例记录在 Testlink 或者禅道里面),以进一步体现代码的重要程度,体现其可自动重复执行的优势。测试代码写出来后,和功能代码一样,都是需要不断维护的,这个要有清醒的认识。
测例的组织
测例写出来后,要能经常地被执行才有可能发现问题,如果能时不时地报告一下确实发现了问题,那就很有意义了。
如何把各个测例有效地组织起来?我个人的建议是:使用 XML 来组织 Test Suite 是比较方便的。