`
zhang_xzhi_xjtu
  • 浏览: 536935 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

实践中的重构29_不自动的自动化测试

 
阅读更多
测试的精髓之一就是自动化。把一切可以自动化的东西都自动化起来,从而节约宝贵的人力,极大的提高效率。
看一个UnitTest的实现如下:
	@Test
	public void test() {
		Date start = DayUtil.parseDate("20110101");
		Date end = DayUtil.parseDate("20110110");

		Map<Date, DayOrderStat> result = orderQueryService.queryUserOrderStat(
				"normalUserId", start, end);
		result = orderQueryService
				.queryUserOrderStat("emptyUserId", start, end);
		result = orderQueryService.queryUserOrderStat("exceptionUserId", start,
				end);
		Assert.assertNotNull(result);
	}

该UT是一个接口的对应UT代码。原接口如下:
public interface OrderQueryService {

	/**
	 * 按日查找用户的订单统计信息。
	 * 
	 * <pre>
	 * 该方法划分日订单为以下情况:
	 * 1 一日有订单,则返回正常的Day,DayOrderStat对。
	 * 2 一日无订单,则返回Day,null对。
	 * 3 一日订单系统异常,则结果中不包含该日的订单统计信息。
	 * </pre>
	 * */
	public Map<Date, DayOrderStat> queryUserOrderStat(String userId,
			Date start, Date end);
}

当联调过程中发现该接口有异常时,一不小心看到了这个UT。开发人员打开IDE,加上断点,开始单步执行该UT来追踪哪里出现了问题。
看到本应该由UT完成的任务现在是由人工完成,明显的,该UT没有起到UT的作用。
该UT不符合一般UT的编写范式和原则,决定了该UT不能自动化验证方法的实现是否正确,同时,当出现问题时,UT也不能帮助开发快速定位问题。
一般UT的编写范式:
1 建立UT的执行环境。
2 执行要测试的方法。
3 验证结果。
或者基于契约的编写范式:
1 建立UT的执行环境。
2 验证方法调用的前条件满足。
3 执行要测试的方法。
4 验证结果。
这里的UT违反了UT的一个基本原则,隔离性。
一个方法如果有多个执行路径,则不同的执行路径可以用不同的UT来验证。
0
4
分享到:
评论

相关推荐

    软件自动化测试初学者忠告.pdf

    从提供的文件内容来看,本文主要面向软件自动化测试的初学者,并结合自动化测试框架、实践经验和学习方法等给出了一系列忠告和建议。下面将详细梳理文件中提到的知识点。 ### 自动化测试基本概念 - **测试入门**:...

    XUNIT测试模式-测试码重构(英文)

    这些框架包括JUnit(Java)、NUnit(.NET)、PyTest(Python)等,它们都支持自动化测试,使得开发者能够对代码进行持续验证。 测试模式是指在测试过程中经常出现的可重复使用的设计策略,这些模式可以帮助我们编写...

    自动化测试脚本的优化

    在本文中,我们将探讨如何优化自动化测试脚本,以适应不断变化的需求,并提高测试效率和质量。 #### 一、理解原有脚本结构 在开始优化之前,首先需要对现有的自动化测试脚本有一个全面的了解。根据描述,当前的...

    Android平台自动化测试的研究与实践.pptx

    "Android平台自动化测试的研究与实践" Android平台自动化测试是指通过编程语言和测试框架,自动化执行针对Android应用程序的测试用例。自动化测试能够提高测试效率,减少人工成本,并且可以更快地发现和定位问题。...

    测试驱动开发及代码重构

    在实际应用中,TDD配合持续集成和自动化测试工具可以显著提高团队的生产力。例如,使用JUnit、pytest等测试框架进行单元测试,使用Mockito等库模拟依赖关系,以及使用SonarQube进行代码质量检查。 在“源码”和...

    企业级项目的Web自动化测试工程化实践.zip

    在企业级项目开发中,Web自动化测试工程化实践是确保产品质量和提高开发效率的关键环节。这一实践涵盖了多种技术和工具的综合应用,旨在构建一个高效、可靠且可维护的自动化测试框架。以下是对这一主题的详细阐述: ...

    重构_改善既有代码的设计 Java

    通过持续集成和自动化测试,开发者可以在重构后立即验证代码的正确性,降低了引入错误的风险。 在Java语言背景下,书中还探讨了如何利用Java的特性来有效地进行重构,如接口、抽象类的使用,以及如何利用设计模式...

    XUNIT测试模式--测试码重构(英文版)

    本书为使用xUnit框架编写自动化测试提供了权威指南。xUnit是一种广泛使用的单元测试框架家族,包括JUnit、NUnit等,适用于多种编程语言和环境。无论是在敏捷开发环境下还是传统的软件开发生命周期中,本书都为开发人员...

    重构_改善既有代码的设计

    首先,重构之前要确保有一套完整的自动化测试用例,以保证重构不会影响到程序的功能。其次,重构的动作通常要小而频繁,每次只对一小部分代码进行修改。这样做可以避免大量改动带来的风险,同时确保每次修改都有明确...

    NET软件测试自动化之道.pd

    《.NET软件测试自动化之道》是James D. McCaffrey撰写的一本关于.NET测试框架...这本书是.NET软件测试人员不可或缺的参考资料,对于那些希望将自动化测试技术引入自己项目的开发者来说,它将是一本极具价值的指导书籍。

    美团酒旅客户端自动化测试实践.pdf

    【美团酒旅客户端自动化测试实践】 美团酒旅客户端自动化测试的实践主要围绕着解决随着公司成长和业务复杂度增加所带来的挑战。传统的手动测试方式已经难以满足快速迭代的需求,且随着人员更迭,确保产品质量和风险...

    重构_改善既有代码的设计.pdf

    自动化测试可以帮助验证重构后的代码是否仍然符合预期的行为,并且能够在重构过程中及时发现潜在的问题。 #### 重构的挑战与陷阱 **版本控制问题**: 在多人协作的项目中,版本控制是非常重要的。在进行大规模重构...

    软件测试自动化框架

    自动化测试框架由一系列假设、概念和实践组成,旨在简化测试流程。常见的自动化测试框架包括: 1. **录制/回放框架**:几乎所有的自动化测试工具都宣称其易于使用,即使是非技术人员也能通过录制操作流程并回放测试...

    重构_改善既有代码的设计完整版

    Fowler强调了每次重构应小步快跑,确保每次变化都能通过自动化测试,这样可以减少引入错误的风险。同时,他也提倡使用单元测试来为重构提供安全网,确保功能在重构后仍然正确无误。 最后,"验证重构结果"是确保重构...

Global site tag (gtag.js) - Google Analytics