单元测试基础知识

发表于:2009-7-08 14:19

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

 作者:随飞    来源:51Testing博客转载

  如何才是一个好的单元测试

  好的测试应该具有的品质是:A-TRIP(合称)

  ——Automatic 自动化

  ——Thorough 彻底的

  ——Repeatable可重复

  ——Independent独立的

  ——Professional 专业的

  ● Automatic自动化:调用自动化、检查结果自动化

  ● Thorough 彻底的

  测试所有可能会出现问题的情况,一个极端是,对于每行代码、代码可能到达的分支,每个可能抛出的异常等等,都可以作为测试的对象。另一个极端是,你仅仅测试最可能的情况---边界条件、残缺和畸形的数据等等。然而这些都基于项目需求的决策问题。

  这些所说的归纳为“代码覆盖率”。

  ● Repeatable 可重复

  测试应该独立于所有其他的测试,而且必须独立于周围的环境。目标只有一个,就是测试应该能够以任意的顺序一次又一次的运行,并且产生相同的结果。如果结果不同,则存在BUG。

  ● Independent 独立的

  编写测试时,确保一次只测试了一样东西,但并不表示一个TestMethod内只能使用一个Assert,而是一个测试函数应该专注于产品代码中的一个函数,或者组合起来并共同提供某个特性的一组函数。

  ● Professional 专业的

  测试代码必须同产品代码相同的风格来编写。这意味着你需要抽取出共同且重复的代码,并把它们放到一个功能类之中,从而可以复用;单元测试的代码一样讲究------维护封装,DRY原则,降低耦合。

  何时需要Mock对象

  ●  真实对象具有不可确定的行为(产生不可预测的结果,如股票的行情)

  ●  真实对象很难被创建(比如具体的web容器)

  ●  真实对象的某些行为很难触发(比如网络错误)

  ●  真实情况令程序的运行速度很慢

  ●  真实对象有用户界面

  ●  测试需要询问真实对象它是如何被调用的(比如测试可能需要验证某个回调函数是否被调用了)

  ●  真实对象实际上并不存在(当需要和其他开发小组,或者新的硬件系统打交道的时候,这是一个普遍的问题)

  Mock对象的三个步骤

  1.      原型

  ClassA调用 ClassB的Method()

  2.      使用一个接口来描述这个对象

  ClassA 通过接口调用ClassB的Method

  3.      以测试为目的,在mock对象中实现这个接口

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号