【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选

这篇具有很好参考价值的文章主要介绍了【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、UI自动化测试用例剖析

让我们先从分析一端自动化测试案例的代码开始我们的旅程。以下是我之前写的一个自动化测试的小Demo。这个Demo基于Selenium与Java

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

自动化测试小Demo

它要测试的东西其实是要看一下百度搜索能不能返回兴业银行的官网。我们分析一下这段代码都包含些什么东西。

第一,这段代码包含了定位符。

熟悉Selenium的都知道,inpubBox和searchButton就是网页的元素,通过By.id实例化,然后driver在findElement 的时候是通过他们的id,就是”kw”和”su”找到他们的。所以”kw” 和”su”就是他们的定位符。

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

定位符

第二,这段代码包含测试数据。

“兴业银行”,“兴业银行欢迎您”就是测试要输入的数据。

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

测试数据

第三部分没前面两部分那么直观。

这段代码在基于”kw”找到inputBox后,往里填入“兴业银行”四个字,然后点击了searchButton提交搜索申请,然后在搜索结果里面寻找“兴业银行欢迎您”的text,然后以是否找到这个text作为assert的标准。这些测试步骤反映的是真实的业务逻辑, 并且不能随意更换顺序。所以第三部分是业务逻辑。

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

业务逻辑

第四部分是业务逻辑里面的每一个步骤的具体操作

例如输入某段文字,或者点击一个按钮等。具体到我们的例子就是sendKeys和click。

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

具体操作

第五部分就是如果把前面四部分都抽出去后,测试代码剩下的东西

基本上就是一些负责准备或者是清理的代码,例如初始化driver等。我把它称为代码骨架。

经上分析,一个自动化测试用例由五部分组成:定位符、测试数据、业务逻辑、具体操作、代码骨架。

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

UI自动化测试结构

二、数据驱动的自动化测试

如果把测试数据抽取出去,通过数据的改变驱动自动化测试的执行,最终引起测试结果的改变,就是数据驱动的自动化测试。说白了,就是测试数据参数化

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

数据驱动

数据驱动的自动化测试适合测试场景与业务逻辑相对简单,变化不是特别大,但是测试数据对测试结果影响大的情景,或者是需要通过大量不同的测试数据对相同的测试场景展开测试的情景。它实现的方式比较简单,但由于业务逻辑还是镶嵌于测试代码里面的,业务逻辑与测试代码还是强耦合的,一旦业务场景发生改变,需要修改测试代码来适应业务的变化。

想要隔离业务对测试代码的影响,就必须使用关键字驱动的方法。

三、关键字驱动的自动化测试

简单来说,关键字驱动的自动化测试,就是在数据驱动的基础上,把具体操作抽取到代码以外,通过具体操作的改变来驱动测试的执行。

这里的说的关键字其实就是具体的操作,例如例子里面的sendKeys和click。但由于具体操作(关键字)是基于业务逻辑的,要想把关键字抽取,业务逻辑也得一同抽取,才能实现真正的关键字驱动。同时,具体操作的对象是定位符定位的元素,所以定位符也必须得一同抽取出代码意外,才能完全隔离业务对代码的影响。

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

关键字驱动

基于关键字驱动的自动化测试适合业务场景复杂,测试步骤繁多的情景,又或者是希望搭建统一测试平台的情景。它最大的优点是使不懂编程的业务人员可以在不需要读懂代码的情况下,通过更改配置,自由添加新的测试用例或修改现有的测试用例。这一点在敏捷开发里面相当实用,可以把业务卷入到测试当中,让测试用例的准备工作尽可能提前;另外,测试代码与要测试的业务逻辑完全隔离,同一份测试代码可以复用于不同的测试场景,较少了重复开发的成本。但是,它也不是完全没有缺点。

首先,并不是所有场景都需要基于关键字驱动的,有些场景数据驱动的方法能解决的话就应该果断选用数据驱动,而不应该过度设计;

第二,由于业务逻辑与代码隔离了,代码的可读性将大大降低,单纯的代码基本没有业务含义,要想通过读测试代码来了解业务,基本是不可能了。牺牲了代码的可读性来换取可重用性。

第三,由于代码复用了,每一个测试用例的执行都相当于一次全新的测试,这意味着如果不加额外处理,测试报告将被互相覆盖,永远都只保留最后一个测试用例的执行结果。

四、关键字驱动的自动化测试例子

这是我很早之前写的一个关键字驱动的自动化测试的Demo。基本的想法是把定位符、测试数据、业务逻辑、具体操作多抽取到一个叫做testCase.properties的文件。

Parameter用于存贮从testCase.properties读出来的属性,主测试类TestBankIndex通过读取这个文件来驱动测试的执行。关键字所对应的具体操作放在了PageAction里面。

在testCase.Properties里面,通过testCaseNameList来定义测试用例名字,中间用|分割开。testCaseNameList以下,是每一个测试用例的具体测试步骤。每个测试步骤名字以测试用例名字作为前缀,并且其排列顺序就是测试步骤的顺序。然后测试步骤的值以测试所需的操作(关键字)、定位方式、定位表达式、测试数据、超时时间排列得来,中间以|分割。这里有一个比较特别的是断言。如果是断言的话,会有Keyword,用于断言的判断。

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

testCase.Properties

Parameter用于存储testCase.Properties的属性

它其实只是一个简单的Java Bean。

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

Parameter

PageAction用于定义每个关键字对应的具体操作

我们以search方法为例,通过传入Parameter来获取search需要的元素定位于要输入的搜索文本,然后执行真正的搜索操作,并等待特定的时间。

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

PageAction

TestBankIndex是主测试类

但实际上里面就一个testEachCase方法。里面大量使用Java 反射机制来实例化和执行方法。所以,testEachCase在执行的时候,它不到最后一刻都不知道它要运行哪个测试用例与执行什么操作的,这些完全在testCase.properties里面定义。

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试
TestBankIndex 

基本上就是这样。代码没时间优化,很多地方都写的不是很规范,也没有单元测试;测试报告覆盖的问题也没有处理;testCase.properties过于重量级了,什么都往里塞。还没有UI,不方面操作。但作为一个MVP,基本上实现了UI自动化测试框架所需要的功能。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末领取】


     【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图+全套资料】


一、Python编程入门到精通

二、接口自动化项目实战  

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

三、Web自动化项目实战

四、App自动化项目实战  

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

五、一线大厂简历

六、测试开发DevOps体系  

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

七、常用自动化测试工具

八、JMeter性能测试  

【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选,软件测试工程师,软件测试,自动化测试,自动化,运维,职场和发展,自动化测试,软件测试,程序人生,功能测试

九、总结(文末尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到! 文章来源地址https://www.toymoban.com/news/detail-645297.html

到了这里,关于【软件测试】UI自动化框架,数据驱动 vs 关键字驱动怎么选的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【饭谈】ChatGpt如果让软件ui都消失的话,那ui自动化测试该何去何从?

    【饭谈】ChatGpt如果让软件ui都消失的话,那ui自动化测试该何去何从?

    “未来的软件长什么样?” 一位妹子产品经理问我:“你说说未来的软件ui是什么样的?听到这个问题我先是诧异了一下,随即陷入了沉思。” 我看着眼前的产品经理,她是一位比较年轻干练的女强人类型,1.65的身材不到100斤的体重显得格外瘦弱,精致的面庞总是让同事们

    2024年02月05日
    浏览(11)
  • 自动化测试 ——自动卸载软件

    自动化测试 ——自动卸载软件

    在平常的测试工作中,经常要安装软件,卸载软件, 即繁琐又累。 安装和卸载完全可以做成自动化。 安装软件我们可以通过自动化框架,自动点击Next,来自动安装。 卸载软件我们可以通过msiexec命令行工具自动化卸载软件 平常我们手动卸载软件都是到控制面板中的\\\"添加/删除

    2024年02月08日
    浏览(12)
  • 【软件测试】自动化测试selenium

    【软件测试】自动化测试selenium

    目录 一、什么是自动化测试 二、Selenium介绍 1、Selenium是什么 2、Selenium的原理 三、了解Selenium的常用API 1、webDriver API   1.1、元素定位 1.1.1、CSS选择器 1.1.2、Xpath元素定位 1.1.3、面试题  1.2、操作测试对象 1.3、添加等待  1.4、打印信息  1.5、浏览器的操作 1.6、键盘事件 1.7、鼠

    2024年01月17日
    浏览(13)
  • 软件测试 -- 自动化测试(Selenium)

            在这里记录一下  自动化测试 -- Selenium 的一些基础知识点,只记录方法。 Selenium 浏览器操作 Selenium 元素定位(包含 Web 表单) findElement 和 findElements         findElement 和 findElements 都可以用于定位元素,它们都需要传入一个 By 类型,但是他们的返回值不同,区

    2024年04月22日
    浏览(36)
  • 【软件测试/自动化测试】WebDriver+Selenium实现浏览器自动化

    【软件测试/自动化测试】WebDriver+Selenium实现浏览器自动化

    前言 使用场景 原理 环境准备  开发 First Script WebDriver API 浏览器 元素 总结 Selenium是一款可以自动化操作浏览器的开源项目,最初的目的是浏览器功能的自动化测试,但是随着项目的发展,人们根据它的特性也用来做一些更多的有意思的功能而不仅仅是UI的自动化测试工具。

    2024年02月08日
    浏览(32)
  • 第八章 软件测试自动化

    通过本章的学习,了解自动化测试应考虑的各种因素及如何衡量自动化测试成本,掌握自动化测试和手工测试的优缺点,能正确选择软件测试策略,了解测试工 具的分类和使用目的,熟悉常用的测试工具,了解自动化测试的过程。 (一)自动化测试概述(一般) 理解:自动

    2024年02月08日
    浏览(13)
  • 软件测试 自动化测试selenium API

    软件测试 自动化测试selenium API

    1.1.1 CSS 选择器定位元素 CSS 选择器 就是一个语法 浏览器 (ctrl + f)可以进行选择 类选择器:.class值(.s_ipt) id 选择器:#id值(#kw) 父类选择器 子类选择器:父类选择器表达式 子类选择器表达式 标签选择器:标签名(form) 1.1.2 XPath 定位元素 XPath 是一种在XML 文档中定位元

    2024年04月28日
    浏览(15)
  • 软件测试 自动化测试selenium篇(一)

    软件测试 自动化测试selenium篇(一)

    目录 一、什么是自动化测试  单元测试  接口自动化  UI自动化 二、如何实施自动化测试  自动化测试需要了解的技能 三、selenium介绍 webdriver的工作原理:  四、Selenium+Java环境搭建                    验证环境是否搭建成功 创建java项目,添加pom文件中添加依赖 常见问题

    2024年02月07日
    浏览(15)
  • 【软件测试】python+selenium自动化测试

    【软件测试】python+selenium自动化测试

    一、什么是自动化测试 自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最 后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 单元测试 java的单元测试框架是Junit,在这里不再赘述。 接口自动化 接口测试就是

    2023年04月09日
    浏览(14)
  • 软件测试之单元测试自动化入门基础

    软件测试之单元测试自动化入门基础

    所谓的单元测试(Unit Test)是根据特定的输入数据,针对程序代码中的最小实体单元的输入输出的正确性进行验证测试的过程。所谓的最小实体单元就是组织项目代码的最基本代码结构: 函数,类,模块 等。在Python中比较知名的单元测试模块: unittest pytest doctest nose 所谓的测试

    2024年02月03日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包