中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
利用单元测试在每个层上对PHP代码进行检查(4)
作者:佚名 时间:2007-09-26 14:46 出处:51cto 责编:月夜寒箫
              摘要:利用单元测试在每个层上对PHP代码进行检查(4)

编写哪些测试以及如何编写这些测试

在编写测试时,我喜欢覆盖以下情况:

◆所有正面测试

这组测试可以确保所有的东西都如我们期望的一样工作。

◆所有负面测试

逐一使用这些测试,从而确保每个失效或异常情况都被测试到了。

◆正面序列测试

这组测试可以确保按照正确顺序的调用可以像我们期望的一样工作。

◆负面序列测试

这组测试可以确保当不按正确顺序进行调用时就会失败。

◆负载测试

在适当情况下,可以执行一小组测试来确定这些测试的性能在我们期望的范围之内。例如,2,000次调用应该在2秒之内完成。

◆资源测试

这些测试确保应用编程接口(API)可以正确地分配并释放资源——例如,连续几次调用打开、写入以及关闭基于文件的API,从而确保没有文件依然是被打开的。

◆回调测试

对于具有回调方法的API来说,这些测试可以确保如果没有定义回调函数,代码可以正常运行。另外,这些测试还可以确保在定义了回调函数但是这些回调函数操作有误或产生异常时,代码依然可以正常运行。

这是有关单元测试的几点想法。有关如何编写单元测试,我也有几点建议:

◆不要使用随机数据

尽管在一个界面中产生随机数据看起来貌似一个好主意,但是我们要避免这样做,因为这些数据会变得非常难以调试。如果数据是在每次调用时随机生成的,那么就可能产生一次测试时出现了错误而另外一次测试却没有出现错误的情况。如果测试需要随机数据,可以在一个文件中生成这些数据,然后每次运行时都使用这个文件。采用这种方法,我们就获得了一些“噪音”数据,但是仍然可以对错误进行调试。

◆分组测试

我们很容易累积起数千个测试,需要几个小时才能执行完。这没什么问题,但是对这些测试进行分组使我们可以快速运行某组测试并对主要关注的问题进行检查,然后晚上运行完整的测试。

◆编写稳健的API和稳健的测试

编写API和测试时要注意它们不能在增加新功能或修改现有功能时很容易就会崩溃,这一点非常重要。这里没有通用的绝招,但是有一条准则是那些“振荡的”测试(一会儿失败,一会儿成功,反复不停的测试)应该很快地丢弃。

结束语

单元测试对于工程师来说意义重大。它们是敏捷开发过程(这个过程非常强调编码的作用,因为文档需要一些证据证明代码是按照规范进行工作的)的一个基础。单元测试就提供了这种证据。这个过程从单元测试开始入手,这定义了代码应该实现但目前尚未实现的功能。因此,所有的测试最初都会失败。然后当代码接近完成时,测试就通过了。当所有测试全部通过时,代码也就变得非常完善了。

我从来没有在不使用单元测试的情况下编写大型代码或修改大型或复杂的代码块。我通常都是在修改代码之前就为现有代码编写了单元测试,这样可以确保自己清楚在修改代码时破坏了什么(或者没有破坏什么)。这为我对自己提供给客户的代码提供了很大的信心,相信它们正在正确运行——即便是在凌晨3点。

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有