宝塔服务器面板,一键全能部署及管理,送你10850元礼包,点我领取

优秀单元测试的定义http://www.Sina.com/: http://www.Sina.com /的代码。 此代码调用要测试的http://www.Sina.com/,然后调用此工作单元的部分http://www.Sina.com/的单元测试几乎都是在单元测试框架中创建的。 单元测试制作简单、快速运行、自动化、可靠、可读、可维护、结果稳定。

33558www.Sina.com/:1:对一个工作单元进行的测试。 此测试不完全控制被测试的工作单元,而是使用该单元的一个或多个真正依赖关系,如数据库、系统时间和系统文件

单元测试:从调用系统的公共方法到测试获得明显的最终结果之间,此系统将发生的行为。 一个工作单位可以小到只包括一个方法,也可以大到包括实现某个功能的多个类或方法。

自动化表示调用的公共方法返回一个值。 或者在方法调用前后,系统的状态或动作有明显的变化,该变化可以在不询问专用状态的情况下进行判断; 或者,调用不受测试控制的第三方系统,该第三方系统不返回值或忽略返回值。

工作单元

可靠性是指单体测试本身是正确的。 也就是说,应该失败的时候失败,应该成功的时候成功。 只要保证单元测试的可靠性,开发人员就可以信任该单元测试,不会因为万一而进行调试等其他工作。

在《单元测试的艺术》中,作者展示了简单的原则和技术制作了可靠的测试。

单个最终结果

如果发现是测试的缺陷而不是产品的缺陷(被测试代码的缺陷),则必须立即修改相关的单元测试代码。 如果由于测试的产品代码语义或API更改而导致测试失败,则必须修复测试并使用新的语义; 如果测试名称的含义不明确,或者单元测试的可维护性差,则必须在保证单元测试基本功能的情况下修改测试名称,或者如果同一功能有多个单元测试,请删除重复测试。

集成测试

包含逻辑的测试是指测试代码中包含switch、if/else、for/while等控制流语句。 这类测试可读性差,代码脆弱,测试代码复杂度高,容易含有缺陷,测试结果难以再现。

每次单体测试只测试一个关注点

关注点之一是工作单位的最终结果。 返回值、更改系统状态和对第三方对象的调用。 测试多个关注点不利于测试命名,而在许多单元测试框架中,一个失败断言抛出特殊类型的异常,不执行后续代码,不利于收集测试失败的原因。

区分单元测试和集成测试

通过代码评审确保代码覆盖率

确保代码审查、测试审查和测试优秀并涵盖所有代码,既可以避免简单愚蠢的错误,也可以从持续学习中获益。

工作单元

单元测试可以看作是来自xfdsn之路的故事。 这个故事讲给新一代开发者听,故事的内容是这个APP应用程序的构成及其流程。 既然是故事,就需要形象生动、容易理解。 可读性是一种帮助其他开发人员了解要维护产品代码和测试的工作的方法。

单元测试的可读性其实与代码的可读性在很多方面相似,下面我们将逐一讨论这些方面。

最终结果

合理命名测试的主要目的是让以后的开发人员摆脱阅读代码的负担来理解测试。 测试名称必须由三部分组成:被测试方法名称、测试场景、用于测试的条件、预期行为和被测试方法的最终结果。

编写可靠的测试

单元测试除了主要测试功能外,还为API提供某种形式的文档。 合理地命名变量可以帮助阅读测试的人尽快了解验证什么。 这样,您就可以更好地理解您希望在产品代码中实现什么样的功能。

断言与操作的分离

避免滥用setup和teardown

例如,如果在setup中准备了stub或mock对象,那么读测试的人就不会注意到在测试中使用了模拟对象,也就不知道这些模拟对象在期待什么。

依据实际情况合理地删除或修改单元测试

可维护性是大多数单元测试面临的最大挑战。 随着时间的推移,单元测试越来越难维护和理解,如果测试的代码发生了一些小的变化,某个测试似乎就会失败。 那么,如何将可维护性成本降至最低?

避免在单元测试代码中包含逻辑

专用方法可以视为系统内部合同,该内部合同是动态的,并且在系统重建时随时可能修改,因此对这些内部合同的单元测试也很可能失败。 然后,内部合同最终由一个公共合同(公共方法、整体功能)调用。 也就是说,任何私有方法通常都是更大工作单元的一部分。

编写可读的测试

可以使用辅助功能方法或setup解决重复代码问题

br>   ●实施测试隔离
  测试隔离是指每个测试都只生活在自己的小世界中,它与其他测试之间没有任何依赖关系,甚至不知道其他测试存在。
  下面列举几种常见的测试隔离的反模式。
  1、测试结果依赖测试执行的顺序
  2、测试调用其他测试方法
  3、测试中使用的共享资源(内存或外部资源)没有得到清理或回滚
  ●避免对不同关注点多次断言,尽量使用参数化测试或者对每个关注点设计单独的测试用例
  ●避免过度指定
  常见的过度指定的例子
  1.对系统内部契约进行断言
  2.使用过多的模拟对象
  3.精确匹配

转载:http://www.51testing.com/html/72/n-3721672.html