(翻译)选择测试自动化框架

AI驱动测试生成:Midscene.js提升前端自动化测试效率 自动化测试是现代软件开发中保障代码质量、防止回归错误的关键环节,其核心原理在于通过脚本模拟用户操作来验证应用行为。传统测试脚本编写面临耗时、重复和维护成本高的挑战,尤其对于UI交互复杂的前端应用。AI代码生成技术通过理解自然语言描述的测试场景,自动转化为可执行测试代码,实现了从命令式到声明式的思维转变,显著提升了测试开发效率。这一技术特别适用于表单验证、用户流程等模式化场景,能够与Jest、Testing Library等主流测试框架无缝集成。Midscene.js作为AI驱动的测试用例生成工具,正是这一理 阅读详情
选择测试自动化框架
 
--- 原著Mike Kelly《Choosing a test automation framework》
---Kiki翻译于2005/6/16
 
一种测试自动化框架(test automation framework)是由一些假设,概念和为自动化软件测试提供支持的实践组成的一个集合。这篇文章描述并演示了5种基本的框架。
 
基于只使用一种捕获工具例如IBM Rational® Robot来录制并且回放测试用例而得出自动化测试工作量是有缺陷的。只使用一种捕获工具来运行复杂且巨大的测试是非常耗费时间和昂贵的。因为这些测试是随机创建的,他们的功能性是很难追踪和重现,而且维护成本也是非常昂贵的。
对于一个刚刚起步的自动化测试小组,更好的选择是使用一种测试自动化框架,它已经定义好了由一些假设,概念和制定工作平台或为自动化测试提供支持的实践组成的集合。在这篇文章中我试着将一些我熟悉的测试自动化框架-特别是测试脚本模块化,测试库构架,关键字驱动/表格驱动测试,数据驱动测试和混合的测试自动化。我并不会评价哪一个框架更好或更差,而只是提供了一些关于他们的描述和演示,所适用的地方和如何使用IBM Rational工具集实现的一些技巧。
 
测试脚本模块化框架(The Test Script Modularity Framework)
测试脚本模块化框架需要创建能够代表测试下应用程序(application-under-test)的模块,零件(Section)和函数的小的,独立的脚本。然后用一种分级的方式将这些小脚本组成更大的测试,实现一个特定的测试用例。
在我将提及的所有的框架中,这种框架应该是最容易精通且掌握的。就在一个部件前面构建一个抽象层以掩藏应用程序其他的部件方面,它是一个很著名的编程策略。它把应用程序从在部件的修改中隔离开来并规定了在应用程序设计中的模块性。为了提高自动化测试套件(test suite)的可维护性和可测量性,测试脚本模块化框架应用了抽象或封装的原则。
为了演示这种框架的应用,我以自动化Windows计算器程序中的测试其基本功能(加,减,乘和除)的一个简单测试用例(如图)为例。
脚本层次结构的最下层是独立的加减乘除的脚本。下面的第一个脚本是加法,第二个是减法。
 
 
然后在层次结构中下一级的两个脚本用来代表视图菜单中的标准视图和科学视图。就像下面的关于标准视图的脚本中表现的一样,这些脚本调用了我们在之前创建的脚本。
 
最后,在层次结构中最顶层的脚本应该是用来测试应用程序不同视图的测试用例。
 
 
从这个简单的例子中你可以了解到这种框架是如何产生高度的模块化并且增加测试套件的全面的可维护性。如果以后计算器上的某一个控制键被移动了,你所需要改变的只是底层调用这个控制键的脚本,而不是测试这个控制键的所有测试用例。
 
测试库构架框架(The Test Library Architecture Framework)
测试库构架框架和测试脚本模块化框架非常相似,有着同样的优势,但是它把测试下的应用程序分成过程和函数,而不是脚本。这种框架要求创建代表测试下应用程序模块,零件和函数的库文件(SQABasic libraries, APIs, DLLs等等)。然后这些库文件被测试用例脚本直接调用。
为了演示这种框架的应用,我将自动化同上的测试用例,但使用了一个SQABasic的库文件。这个库文件包括执行操作的一个函数。以下是头文件(header file (.sbh))和库文件(library source file (.sbl))。
 
使用这个库文件,产生以下测试用例脚本。
 
从这个例子中,你能够看到这种框架也产生了高度的模块化,同样增加了测试套件的全面可维护性。就像在测试脚本模块化一样里,如果计算器中的一个控制键移动了,你所要做的只是更改库文件,这样同时也更新了所有调用控制键的脚本。
 
关键字驱动或表驱动测试框架(The Keyword-Driven or Table-Driven Testing Framework)
关键字驱动和表格驱动测试是一种独立于应用程序的自动化框架,它们是可以互相替换的术语。这种框架要求开发于用来运行的自动化工具,驱动测试下应用程序和数据的测试脚本代码相独立的数据表和关键字。关键字驱动测试看上去非常象手工测试。在关键字测试里,应用程序的功能特性被写在表格和每个测试的详细指引里了。
如果要映射出手工测试Windows计算器功能过程中用鼠标执行的操作,我们可以创建如下的表格。” Window”一列包含了我们执行鼠标操作的应用程序窗口的名字(在这个例子中,他们都发生在计算器窗口里)。” Control”一列指出了鼠标点击的控制键的类型。” Action” 一列列出了鼠标的操作(或是测试人员的)。”Arguments”列指出了特定的控制键(1, 2, 3, 5, +, -等)

Window
Control
Action
Arguments
Calculator
Menu
View, Standard
Calculator
Pushbutton
Click
1
Calculator
Pushbutton
Click
+
Calculator
Pushbutton
Click
3
Calculator
Pushbutton
Click
=
Calculator
Verify Result
4
Calculator
Clear
Calculator
Pushbutton
Click
6
Calculator
Pushbutton
Click
-
Calculator
Pushbutton
Click
3
Calculator
Pushbutton
Click
=
Calculator
Verify Result
3
 这个表格代表了一个完整的测试,为了表示一系列测试可以根据需要增加。一旦你创建了数据表,你就可以简单地编写用来读取每一个步骤的程序或脚本集,基于Action字段中的关键字执行步骤,完成错误检查,然后记录任何相关的信息。这种程序或脚本集看上去象下面的伪代码:
 
Main Script / Program
Connect to data tables.
Read in row and parse out values.
Pass values to appropriate functions.
Close connection to data tables.
Menu Module
Set focus to window.
Select the menu pad option.
Return.
Pushbutton Module
Set focus to window.
Push the button based on argument.
Return.
Verify Result Module
Set focus to window.
Get contents from label.
Compare contents with argument value.
Log results.
Return.

从这个例子里你可以看到为了生成许多的测试用例,这种框架只要求非常少的代码。用数据表生成不同的测试用例却可以重用相同的代码。IBM Rational工具集可以通过使用交互式的文件读取,查询或数据池延伸开来,或者你可以连同IBM Rational一起使用其他的工具(免费,其他的开发工具等)来构建这种类型的框架。
 
数据驱动测试框架(The Data-Driven Testing Framework)
数据驱动测试是测试从数据文件(数据池,ODBC源,cvs文件,Excel文件,DAO对象等)中读取输入和输出数值并载入到捕获的或手工编码的脚本中变量里的一种框架。在这种框架里,输入数值和输出验证数值都使用变量。在测试脚本中编写贯穿程序的导航,数据文件的读取,记录测试状态和信息的日志的代码。
测试用例包含在数据文件里而不是在脚本里的方面上,这种框架和表格驱动测试有些相似;脚本只是一种“驱动器”(driver)或传送数据的机制。尽管导航的数据不包含在表结构中,但和表格驱动测试还是不同的。在数据驱动测试里,只有测试数据包含在数据文件中。
如果使用SQABasic语言和IBM Rational的数据池功能,IBM Rational工具集里有自带的数据驱动功能。为了演示这种框架的使用,我们将测试一个简单应用程序中的订单表格。
 
 
如果我们录制这个窗口中的数据输入,得到以下脚本:
 
 
我们可以使用数据池来设置测试有效和无效信用卡号和过期日期的测试用例。例如,下图中是用于测试数据字段的测试用例中的数据池,
 
 
为了接收这些数据,我们修改脚本如下:
 
 
为了使用数据池,我增加了SQABasic命令,还增加了“While”循环来处理在数据池中每一行数据。我必须说明一下在“If…Then”语句中的Ucase(SQABasic命令)函数。Ucase用于将参数(在这个例子里是指数据池返回的数值)全部转换成大写。这种方法不是大小写敏感的,所以代码更强壮。
这个框架趋向于减少你为了实现所有测试用例而需要的全部的脚本数量,并且在开发绕开错误的办法(Workaround)和维护方面提供了最好的灵活性。和表格驱动测试非常相似的是,表格驱动测试只需要非常少的代码就可以产生大量的测试用例。用IBM Rational工具集实现这种框架是非常容易,并且它也提供了大量的关于指引和例子的详细文档。
 
混合的测试自动化框架(The Hybrid Test Automation Framework)
最常见的已实现的框架是上述技术的组合,抽取它们的优点,剔除其弱点。这种混合的测试自动化框架是发展时间较长且应用项目最多的框架。下图可以让你对如何用IBM Rational工具集组合不同的框架有初步的认识。
 
总结
我描述了自动化测试小组可以考虑使用的5种测试自动化框架,而不是依赖某一种捕获工具。你可以使用一种或它们之间的组合。你可以通过嵌套测试脚本实现模块化并使用SQABasic库文件来实现功能和过程。不管你选择哪一种数据驱动技术,你都可以使用数据池,或者你还可以扩展Robot来处理其他数据存贮类型。应用最好的框架的窍门和解决他们的唯一方法是投入进去并开始使用它们。
自动化中的多语言测试 多语言测试是确保软件应用程序在不同语言环境下的正确性和一致性的过程。前提:为了更好配合前端、后端、运营同学等工作。1、记录未翻译缺陷的文档最好采用云文档。可以支持多人同时修改,减少等待时间。2、附上文字描述/未翻译文字以及截图,方便快速定位问题。 阅读详情

相关推荐

Choosing a test automation framework

Choosing a test automation framework

如何判断什么是好的Automation Framework?

如何判断什么是好的Automation Framework? 1. 首先, Automation Framework必须健壮。     对于遇到的异常处理要好。 2. 移植性要好。 3. 需要有很多外围工具。     自动部署自动化的工具。 就想到这些,如果还想到其他的再更新。

飘留一丝清香 963

自动化测试框架杂谈(英文)

如何搭建自动化测试框架,以及需要注意的问题,自动化测试用例如何书写...

翻译服务自动化测试框架搭建指南

UI 与 API 双覆盖:Playwright 一栈打通前后端测试,降低维护成本。语义断言优于字面匹配:避免因细微表达变化导致误报。环境一致性至关重要:锁定和可避免版本冲突引发的解析异常。自动化 ≠ 完全替代人工:复杂语境(如成语、俚语)仍需人工抽检。

weixin_26854475的博客 869

批量转javaGBK编码文件到UTF-8

eclipse下批量转java GBK编码文件到UTF-8,java类,非可执行文件,在eclipse下运行即可

【YOLOv7-环境搭建】PyTorch安装后输出版本显示No module named ‘Torch’的解决方法

【YOLOv7-环境搭建】PyTorch安装后输出版本显示No module named ‘Torch’的解决方法:①检查PyCharm导入的环境是否错误②添加Torch包

qq_59942266的博客 4970

从零搭建完整python自动化测试框架(UI自动化和接口自动化 )——持续更新

本自动化测试框架采用python + unittest 的基础来搭建,采用PO模式、数据驱动的思想,通过selenium来实现WEB UI自动化,通过request来实现接口自动化。移动终端的自动化也可在该框架基础上去构建补充。

sunjice的博客 14万+

告别sgmediation!Stata中介效应分析新选择:mediation包完整操作指南

本文介绍了Stata中介效应分析从传统sgmediation命令向mediation包的范式升级。重点阐述了如何使用medeff和medsens命令进行更严谨的因果推断,并执行关键的敏感性分析,以评估结果对未观测混杂的稳健性,为学术研究提供发表级的分析工具。

redis7keeper的博客 1160

python自动化测试—Python自动化框架及工具

​ 本系列选择的测试语言是 python脚本语言。由于其官方文档已经对原理有了比较清楚的解释,本文就不做一些多余的翻译工作了。偏向于实战部分,而且为了偏向实战,也会结合 IDE 工具和项目组织来进行讲解。

xiaojieceo的博客 1269

No Target Connected 错误时的一种情况

STM32的SWD烧录模式No Target Connected 错误的一种情况 STM32的SWD烧录模式No Target Connected 错误时的一种处理情况 这是我第一次烧板子的时候遇到的问题,在给板子download的时候出现了“No Target Connected”的错误,这里讲一种解决方法。不一定适用于全部状况,但是可以作为一种纠错方法。 打开 Options for Target… 1.首先点击Options for Target…这个像魔棒一样的按键打开,会出现这个页面 2.点击

Logan_CodeGou的博客 1万+

RenderDoc实战:5分钟搞定安卓Vulkan应用抓帧(含常见连接失败排查)

本文详细介绍了如何使用RenderDoc工具对安卓Vulkan应用进行抓帧分析,包括环境配置、完整抓帧流程及常见连接问题的解决方案。通过实战案例和高级技巧,帮助开发者快速定位渲染问题和性能瓶颈,提升移动图形开发效率。

weixin_28318011的博客 285

天外客翻译机端到端测试自动化方案

本文介绍天外客翻译机的端到端自动化测试方案,融合Pytest、Appium与自研SDK,构建多模态验证体系。通过设备集群实现高并发测试,结合ASR、日志、UI与网络数据联合断言,显著提升测试效率与质量拦截能力,支撑CI/CD流程中的精准发布决策。

weixin_33431149的博客 786

Dify 第 19 篇 手把手教你开发 Dify 插件:从零实现一个时间工具

本文介绍了Dify平台的插件开发机制和流程。Dify支持多种插件类型,包括模型、工具、数据源等,可通过CLI工具快速开发插件。文章详细讲解了如何安装Dify CLI工具,并演示了从零开发一个获取系统时间插件的完整过程,包括项目初始化、文件解读和打包部署。通过该教程,开发者可以快速掌握Dify插件开发的核心要点,实现自定义功能扩展。

甘蓝的专栏 2451

从零搭建完整python自动化测试框架(UI自动化和接口自动化

页面定义方式PO对象定义:京东主页面定义了搜索框和搜索按钮,以name为关键字,定义元素定位方式和执行的动作。{'name': 'search_ipt', 'desc': '搜索框', 'by': (By.ID, u'key'), 'action': 'send_keys()'},{'name': 'search_btn', 'desc': '搜索按钮', 'by': (By.CLASS_NAME, u'button'), 'action': 'click()'},测试数据定义方式。

weixin_67553250的博客 5006

【Claude】组织级认证限制报错已解决(4 种)

报错被禁用的是什么谁能解除应急方案整个 Console 组织Anthropic 支持换账户 / 订阅凭证API key 认证方式你的组织管理员用订阅/login订阅 OAuth 登录你的组织管理员用 API keyRoutines 功能你的组织所有者手动计划任务替代共同排查模式/status确认当前凭证;检查环境变量;看清报错消息里命名的是什么(key?组织访问?),对症清除;管理员层面的限制,找管理员解锁。

博客 1万+

学Simulink--基础微电网场景实例:基于Simulink的微电网并网/孤岛无缝切换控制仿真

本文完成了基于 Simulink 的微电网并网/孤岛无缝切换控制仿真,实现了:✅ 构建含双模式逆变器的微电网模型✅ 实现预同步 + Stateflow 逻辑的智能切换✅ 验证计划与非计划切换的性能边界✅ 证明“无缝”在工程上是可实现的。

amy_mhd的博客 103

前端自动化测试框架:如何选择最适合你的方案

前端自动化测试是指使用代码或工具来模拟用户在浏览器上的操作,以检验网页或应用程序的功能和性能是否符合预期。前端自动化测试可以提高开发效率,减少人工错误,保证软件质量和用户体验。

m0_75277660的博客 916

OpenClaw实战系列02:企业微信接入完全指南

本文详细介绍了如何将OpenClaw与企业微信对接,实现智能机器人功能。主要内容包括:企业微信侧创建智能机器人或自建应用,获取必要凭证和权限;OpenClaw侧安装配置企业微信插件,设置通信通道;完成双向验证并进行功能测试。文章提供了详细的配置步骤、常见问题排查方法和进阶玩法,帮助用户在30分钟内完成对接。关键点包括:确保URL可访问、Token一致、网关正常运行,以及针对不同部署环境(云服务器/内网)的配置差异。

PeterPan的博客 3814

评四种常用的自动化测试框架

一直想仔细研究框架,写个流水账似的测试程序不难,写个低维护成本的测试框架就很难了,所以研究多种测试框架还是很有必要的,知道孰优孰劣,才能在开始编写框架的时候打好基础,今天读到了KiKi Zhao的翻译文章,觉得很是不错,写了一点学习心得,有不正确之处,请指出。中文原文地址:http://www.cnblogs.com/nckiki/articles/244202.html英文原文地址:ht

Roger Ge 的专栏 3万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: 安装测试指南
下一篇: 一些典型的测试方面的误解(7/1更新)
imlogic
博客等级 码龄22年 162粉丝 75原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值