Harry Wang
2008
10
07

Drupal的单元测试介绍

Blog
created on 周四, 2008-07-10 14:58 Drupal in a test tube

最近公司准备尝试使用Drupal单元测试工具用来辅助QA和debug, 我对这方便也挺感兴趣,所以就主动要求加入了这个项目--测试相关工具. 以前虽然用过PHP的单元测试工具,但是那时候需求不多,也就没有太深入了解她, 正好借这次机会好好补一下相关知识.

什么是单元测试

单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list 中去,然后确认该值出现在list 的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。
    单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。

为什么要使用单元测试


开发人员, 包括Drupal开发人员, 倾向于使用常规方法来测试代码的逻辑或者功能错误。但是代码本身执行没有错误并不意味着代码功能上也完全正确. 幸运的是我们有单元测试. 实现单元测试就是为了证明这段代码的行为和我们期望的一致。

单元测试有下面的这些优点:

以下摘自testage.net

  1. 它是一种验证行为。
程序中的每一项功能都被测试以验证它的正确性。它也为以后的开发提供支援。就算是开发后期,我们也不用担心这个过程中会破坏重要的东西从而轻松的增加功能或更改程序结构。所以它为代码的重构提供了保障。这样,我们就可以更自由的对程序进行改进。
  2. 它是一种设计行为。
编写单元测试将使我们从调用者观察、思考。特别是测试驱动开发(test-first),迫使我们把程序设计成易于调用和可测试的,即迫使我们解除软件中的耦合。

  3. 它是一种编写文档的行为。
单元测试是一种无价的文档,它是展示函数或类如何使用的最佳文档。这份文档是可编译、可运行的,并且它保持最新,永远与代码同步。


单元测试往往可以利用脚本来自动运行, 他们是开发, 创建,部署中不可或缺的一部分. 你可以在提交到版本库之前运行测试,也可以在增加功能后运行测试来确保新增功能不会对影响到原有功能, 也可以在把开发环境中的程序部署到Staging环境后运行测试,这样可以减少反复测试的时间.

Drupal提供了哪些测试工具?

Drupal中最主要的测试工具是SimpleTest模组, 这个模组是常规PHP单元测试工具SimpleTest项目的一个Drupal扩展. 这个Drupal模组增加了很多针对Drupal可供方便使用的单元测试功能. 例如它可以创建新用户,新Node, 设定配置变量,提交Drupal表单.

如何设置SimpleTest模组

lullabot的作者Robert Douglass已经写了一个很棒的介绍SimpleTest文章,这里我将引用他的部分文章:

想要在Drupal中运行单元测试, 就先要去下载安装一个SimpleTest模组的最新版本, 但注意,不要在生产环境中安装这个模组.因为运行测试会改变数据库的状态, 并且这个模组只是为了开发和Staging为目的而设计的, 在生产环境中运行SimpleTest可能会导致数据丢失或一些不可预期的错误.

这个Drupal的模组依赖SimpleTest库, 可以在Sourceforge.net下载. 最新的版本是simpletest_1.0.1. 下载下来的压缩文档解压倒simpletest模组目录下即可.

回复

此内容将保密,不会被其他人看见。
  • 行和段被自动切分。
  • Avast! This website be taken over by pirates on September 19th. Yarr!
  • Allowed HTML tags: <a> <p> <br> <i> <b> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Glossary terms will be automatically marked with links to their descriptions
  • 网页地址和电子邮件地址将会被自动转换为链接。

更多格式化选项信息