单元测试与代码的动态行为和静态行为

发表于:2009-7-06 14:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:李云    来源:51CTO博客

  这一问题的引出是来自我们的软件发布流程的。我们的产品运行的是Monta Vista或是WindRiver Linux(后面称之为目标环境),而开发环境是Fedora Linux(后面称之为主机环境)。我们对于单元测试都会在主机环境上完成,然后,在目标环境上并不做单元测试,而只是做Sanity Test(你可以理解为功能测试)。一开始,我并没有发现我们在发布产品前并不在目标环境下做单元测试的,后来无意的交谈中我发现了这一与我所想像的不一致的现象,即,我认为产品在发布前应当在目标环境下做单元测试。

  说到这,有人可能会想,单元测试应当一旦做过,就证明了其正确性,为什么还要在这里所说的目标环境下再做测试呢?是的,这一问题也同样出自于我们的一个软件工程师。在问我的当时,我并没有想好如何回答。于是,在开车回家的路上,我就在思考“这是一个对于单元测试的理解比较普遍的问题,如何去表述让别人一下子能明白单元测试还得在目标环境中再做”。思考的结果就是这里要提出的代码的动态和静态行为概念。

  动态行为是指代码具有一定的响应能力的行为,比如,一个对于线程进行封装的类,其行为应当就是动态的。另一个例子,就是Socket通讯问题,我们需要对连接进行测试,此时其所表现出来的也是动态行为。对于动态行为的代码,其在不同的操作系统中表现有可能是不同的。

  与动态行为不同的是,静态行为只是被动的计算或是组织数据结构。比如,一个MD5的计算函数,其行为就是静态的,这种行为不论你是在任何操作系统或是处理器上运行,其结果都是一样的。

  有了这两个概念,我不知是不是有助于我们去分析,我们所写的代码是否应当在不同的环境下做单元测试。借用这两个述语我们得到如下的陈述:如果全部代码都只有静态行为,那么只要在一种环境下做单元测试就行了;如果代码包括动态行为,那么我们必须在所有可能运行的环境下做单元测试。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号