《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一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分钟运行一次,所以经常同时测试几个新的检入。

相关文章
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
机器学习/深度学习 人工智能 监控
软件测试中的自动化测试策略与最佳实践##
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和加速产品上市的关键工具。本文将探讨自动化测试的重要性,分析不同类型的自动化测试工具和框架,并深入讨论实施自动化测试的最佳实践。通过案例研究和数据分析,我们将揭示如何有效整合自动化测试到软件开发生命周期中,以及它如何帮助团队提高测试效率和覆盖率。 ##
333 1
|
人工智能 API 开发者
HarmonyOS Next~鸿蒙应用框架开发实战:Ability Kit与Accessibility Kit深度解析
本书深入解析HarmonyOS应用框架开发,聚焦Ability Kit与Accessibility Kit两大核心组件。Ability Kit通过FA/PA双引擎架构实现跨设备协同,支持分布式能力开发;Accessibility Kit提供无障碍服务构建方案,优化用户体验。内容涵盖设计理念、实践案例、调试优化及未来演进方向,助力开发者打造高效、包容的分布式应用,体现HarmonyOS生态价值。
964 27
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
1347 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
人工智能 小程序 前端开发
【一步步开发AI运动小程序】十九、运动识别中如何解析RGBA帧图片?
本文介绍了如何将相机抽取的RGBA帧图像解析为`.jpg`或`.png`格式,适用于体测、赛事等场景。首先讲解了RGBA图像结构,其为一维数组,每四个元素表示一个像素的颜色与透明度值。接着通过`uni.createOffscreenCanvas()`创建离屏画布以减少绘制干扰,并提供代码实现,将RGBA数据逐像素绘制到画布上生成图片。最后说明了为何不直接使用拍照API及图像转换的调用频率建议,强调应先暂存帧数据,运动结束后再进行转换和上传,以优化性能。
|
索引
【Flutter 开发必备】AzListView 组件全解析,打造丝滑索引列表!
在 Flutter 开发中,AzListView 是实现字母索引分类列表的理想选择。它支持 A-Z 快速跳转、悬浮分组标题、自定义 UI 和高效性能,适用于通讯录、城市选择等场景。本文将详细解析 AzListView 的核心参数和实战示例,助你轻松实现流畅的索引列表。
755 7
|
数据可视化 测试技术 API
前后端分离开发:如何高效调试API?有工具 vs 无工具全解析
在前后端分离的开发模式中,API 调试的效率直接影响项目的质量和交付速度。通过本文的对比分析,我们可以看到无工具调试模式虽具备灵活性和代码复用能力,但在操作便利性和团队协作上稍显不足。而传统的外部调试工具带来了可视化、高效协作与扩展性,却可能存在工具切换带来的开发链路断层问题。Apipost-Hepler 融合了两者的优势,让开发者无需离开熟悉的 IDEA 环境,就能享受可视化调试工具的强大功能。
549 5
|
移动开发 前端开发 JavaScript
从入门到精通:H5游戏源码开发技术全解析与未来趋势洞察
H5游戏凭借其跨平台、易传播和开发成本低的优势,近年来发展迅猛。接下来,让我们深入了解 H5 游戏源码开发的技术教程以及未来的发展趋势。
|
存储 人工智能 程序员
通义灵码AI程序员实战:从零构建Python记账本应用的开发全解析
本文通过开发Python记账本应用的真实案例,展示通义灵码AI程序员2.0的代码生成能力。从需求分析到功能实现、界面升级及测试覆盖,AI程序员展现了需求转化、技术选型、测试驱动和代码可维护性等核心价值。文中详细解析了如何使用Python标准库和tkinter库实现命令行及图形化界面,并生成单元测试用例,确保应用的稳定性和可维护性。尽管AI工具显著提升开发效率,但用户仍需具备编程基础以进行调试和优化。
1105 9

热门文章

最新文章

推荐镜像

更多
  • DNS