《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一1.4 利用验收测试驱动开发,使用FitNesse测试GUI

简介: 本节书摘来自华章出版社《 自动化测试最佳实践:来自全球的经典自动化测试案例解析 》一 书中的第1章,第1. 4 节,作者:(英)Dorothy Graham Mark Fewster 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.4 利用验收测试驱动开发,使用FitNesse测试GUI
现在已经是我们自动化之旅的第8个月了,程序员已经建立了一个自动化单元测试的实用库。对于应用程序的核心区域我们已经进行了冒烟测试,覆盖微量代码的大约100个JUnit测试已经完成了。但是中间层还什么都没有,TDD此时变成了一个空壳。现在我们开始对自动化测试金字塔的中间层进行填充。
1.4.1 内存内测试
我们的金融理财产品有许多复杂的算法,这可以通过在内存中提供输入来进行测试。与单元测试相比,这种测试的级别要高很多,但我们还是不想通过GUI来进行测试,因为其速度慢、成本高。我们发现可以很迅速、方便地编写FitNesse夹具(fixture)来自动进行这类测试。在客户测试层次,我们开始用FitNesse测试来驱动新的用户故事的开发。这些测试使用夹具在内存中构建测试输入,并把这些输入发送到应用层代码,就如同产品在实际使用时进行的输入一样。然后夹具会返回代码的实际输出,并把它与FitNesse表中的期望结果进行对比。
测试人员和客户填写FitNesse测试用例,之后程序员用夹具来自动运行它们。这意味着我们需要交流!提高团队的交流能力是使用这种工具进行自动化测试的最大好处之一。我们测试人员与产品所有者和其他利益相关者坐在一起分析每个用户故事预期的和非预期的行为。我们将这些用户故事转化为FitNesse测试用例表,并与客户核对以保证当测试用例通过测试的时候能够满足客户的要求。我们与开发人员核对测试,以保证我们清楚需求并保证测试设计与代码设计兼容。开发人员编写夹具来自动运行测试。这一过程在单个用户故事的很多小的迭代中不断重复,直到开发和测试都完成。
1.4.2 使用数据库的测试
我们的应用是数据密集型应用,我们想自动运行更加端到端(end-to-end)的测试。我们也可以使用FitNesse在数据库中构建测试数据,并使用遗留代码在它上面运行,以此来测试遗留代码。
这种类型的测试脚本编写和维护都更加昂贵。作为FitNesse的初学者,我们犯了一些错误,如,不知道将测试组件模块化,而这可以通过FitNesse中现有的部件来完成。我们彻底违反了代码设计中的“不要重复自我”准则。例如,在几十个不同的测试页面中,有包含同样员工信息的表,如果又有一列新数据需要添加到员工信息表中,那么在每个测试页面中都要加进去,这很糟糕。等到我们知道如何正确去做的时候,又遇到了一个更难以处理的麻烦。
【经验教训】
在前期进行工具使用的培训,之后就可以避免因工具使用不熟练而造成的巨大的时间浪费。
我们将每个能想到的测试用例都进行了自动化,包括发生几率低、影响小的边缘测试用例,并把它们都放在自动回归测试套件(test suite)里面。上述过程花费的时间并不长,但是接下来,这个测试套件要花费大量时间和主机功率(machine power)来运行,维护成本也随之提高了。所以,我们要学会慎重选择测试用例,确保它们能提供充分的测试覆盖,并只将这些测试用例放在回归测试套件中。
【小窍门】
精化回归测试套件可以在保证收益的同时降低维护费用。
正如在产品应用代码中所做的那样,我们现在不断地重复访问和重构FitNesse测试用例,以保证我们所需要的测试覆盖,同时不会过多地延长反馈周期或者花费太多时间维护测试。
【真知灼见】
经常检查自动化测试用例以保证它们是有效的。
1.4.3 使用FitNesse测试的好处
我们的FitNesse测试提供了比GUI测试套件更快的反馈,尽管比JUnit测试要慢很多。FitNesse测试套件需要60 ~ 90分钟来运行,而JUnit测试的运行时间仅仅只需要不到8分钟。像GUI测试脚本那样,我们将FitNesse测试集成到构建过程中,并且在其中运行。一开始,我们只在晚上运行这种“完全构建”(full build),但这无法提供及时的反馈,并且如果测试失败的话,我们只有在第二个晚上才能知道问题是否修复了。我们投入了更多的硬件,这样我们就可以“连续地”运行单元级别上的所有测试的完全构建。如同运行单元级别测试的构建一样,这是为了使源代码控制每接收到一次检入就能运行。大概需要90分钟运行一次,所以经常同时测试几个新的检入。

相关文章
|
8月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
人工智能 自然语言处理 算法
AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
1634 0
AI智能混剪视频大模型开发方案:从文字到视频的自动化生成·优雅草卓伊凡
|
12月前
|
传感器 人工智能 监控
通义灵码智能体模式在企业级开发中的应用:以云效DevOps自动化流程为例
通义灵码智能体模式具备语义理解、任务闭环与环境感知能力,结合云效DevOps实现CI/CD异常修复、测试覆盖与配置合规检查,大幅提升研发效率与质量。
508 0
|
数据采集 机器学习/深度学习 人工智能
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
运维人的“福音”?AI 驱动的自动化网络监控到底香不香!
1309 0
|
9月前
|
人工智能 安全 Devops
AI 驱动的 DevOps:通过智能命令执行实现基础设施自动化
本文探讨了如何利用能够根据自然语言提示执行命令、管理基础设施和自动部署的 AI 技术,来革新 DevOps 流程。通过模型上下文协议(MCP),AI 助手不仅能回答问题,还能直接操作终端、编辑文件并管理开发环境,从而简化复杂的 DevOps 任务,提高效率并降低错误率。
743 3
|
10月前
|
人工智能 运维 安全
运维老哥的救星?AI 驱动的自动化配置管理新趋势
运维老哥的救星?AI 驱动的自动化配置管理新趋势
448 11
|
10月前
|
JSON 缓存 供应链
API 接口驱动 1688 采购自动化:从商品获取到下单支付的全流程贯通
在B2B电商采购中,1688开放平台通过API实现商品筛选、比价、下单、支付及物流跟踪的全流程自动化,大幅提升采购效率,降低人工成本与错误率。企业可无缝对接ERP系统,实现数据驱动决策,显著优化采购周期、成本与风险管控,助力数字化转型。
|
人工智能 Java 定位技术
Java 开发玩转 MCP:从 Claude 自动化到 Spring AI Alibaba 生态整合
本文详细讲解了Java开发者如何基于Spring AI Alibaba框架玩转MCP(Model Context Protocol),涵盖基础概念、快速体验、服务发布与调用等内容。重点包括将Spring应用发布为MCP Server(支持stdio与SSE模式)、开发MCP Client调用服务,以及在Spring AI Alibaba的OpenManus中使用MCP增强工具能力。通过实际示例,如天气查询与百度地图路线规划,展示了MCP在AI应用中的强大作用。最后总结了MCP对AI开发的意义及其在Spring AI中的实现价值。
3145 9
|
人工智能 自然语言处理 语音技术
FilmAgent:多智能体共同协作制作电影,哈工大联合清华推出 AI 驱动的自动化电影制作工具
FilmAgent 是由哈工大与清华联合推出的AI电影自动化制作工具,通过多智能体协作实现从剧本生成到虚拟拍摄的全流程自动化。
3444 13
FilmAgent:多智能体共同协作制作电影,哈工大联合清华推出 AI 驱动的自动化电影制作工具

热门文章

最新文章

推荐镜像

更多
  • DNS