当前位置: 首页 > news >正文

软件测试之UI自动化测试

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

1、about自动化测试

定义:把人为驱动的测试转化为机器执行的一种过程,重点在于持续集成这个概念;

优势:节约人力和时间成本;

测试金字塔:

图片

如上图所示,敏捷大师Mike Cohn提出该概念,然后由Martin Fowler大师在此基础上提出了测试分层概念,以区别于传统的自动化测试。

2、自动化测试分层

单元自动化测试(数据处理层):指对软件中最小的可测试单元进行检查和验证,一般需要借助单元测试框架,如java的Junit、TestNG,python的unittest,常见的手段是code review等;

接口自动化测试(业务逻辑层):主要检查验证模块间的调用返回以及不同系统、服务间的数据交换,常见的接口测试工具有postman、jmeter、loadrunner等;

UI自动化测试(GUI界面层):UI层是用户使用产品的入口,所有功能通过这一层提供给用户,测试工作大多集中在这一层,常见的测试工具有UFT、Robot Framework、Selenium、Appium等;

性价比:按照测试金字塔模型以及投入/产出比,越向下,回报率越高;

Google的自动化分层投入占比:

小测试(Unit):占比70%;

中测试(Service):占比20%;

大测试(UI):占比10%;

自动化测试面临的挑战:面临的最大挑战就是变化,因为变化会导致测试用例运行失败,所以需要对自动化脚本不断debug,如何控制成本、降低成本是对自动化测试工具以及人员能力的挑战。

3、什么样的项目适合自动化测试

图片

如上图所示,真正工作中无法全部满足以上条件,所以需要作出权衡,一般来说,只需要满足以下几点,就可以对项目开展自动化测试(图中红色框标注的选项):

①需求稳定,不会频繁变更

自动化测试最大的挑战就是需求的变化,而自动化脚本本身就需要修改、扩展、debug,去适应新的功能,如果投入产出比太低,那么自动化测试也失去了其价值和意义;

折中的做法是选择相对稳定的模块和功能进行自动化测试,变动较大、需求变更较频繁的部分用手工测试;

②多平台运行,组合遍历型、大量的重复任务

测试数据、测试用例、自动化脚本的重用性和移植性较强,降低成本,提高效率和价值;

③软件维护周期长,有生命力

自动化测试的需求稳定性要求、自动化框架的设计、脚本开发与调试均需要时间,这其实也是一个软件开发过程,如果项目周期较短,没有足够的时间去支持这一过程,那自动化测试也就不需要了;

④被测系统开发较为规范,可测试性强

主要出于这几点考虑:被测试系统的架构差异、测试技术和工具的适应性、测试人员的能力能否设计开发出适应差异的自动化测试框架;

4、常见的自动化测试工具简介

UFT(Unified Functional Testing)

即原来的QTP(Quick Test Professional Software)与ST(Service Test)合并而来,由HP公司开发,是一个企业级的商业自动化测试工具,提供了强大易用的录制回放功能,

同时兼容对象识别模式与图像识别模式,支持B/S和C/S两种架构的软件测试;

Robot Framework

一款基于python语言编写的自动化测试框架工具,具备良好的扩展性,支持关键字驱动,支持多种类型的客户端和接口,可进行分布式测试;

Selenium

应用于web的自动化测试工具,支持多平台、多浏览器、多语言来实现自动化,优点如下:

①开源、免费;

②多浏览器支持:chrome、Firefox、IE、Edge等;

③多平台支持:Linux、Windows、MAC;

④多语言支持:java、python、Ruby、C#、JavaScript、C++;

⑤对web界面有良好的支持;

⑥简单(API简单)、灵活(开发语言驱动);

⑦支持分布式测试用例执行;

5、做UI自动化测试,需要什么技能

①前端相关技术

HTML、XML、JavaScript、TCP/IP协议等

②一门编程语言

就像前面说的,selenium支持多种语言,根据个人情况以及项目的开发语言酌情选择;

③合适的工具选型

比如selenium,比如UTF等;

④需求分析

项目类型,特质,生命周期,是否适合开展自动化测试等;

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

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 被审稿人批得体无完肤?参考文献这样引用就对了!
  • 抠像拍照技术在展厅设计中的应用,实现了哪些新颖的互动体验?
  • uniapp vite3 require导入commonJS 的js文件方法
  • mysql可重复读不能解决幻读吗?
  • 安宝特科技 | AR眼镜在安保与安防领域的创新应用及前景
  • 实时地图+瞬移,黑神话地图工具来了
  • LLM模型:代码讲解Transformer运行原理
  • 快速排序的深入优化探讨
  • RedisCache存入redis的数据key为何name和id的分隔符是两个冒号::
  • 2024年高教社杯全国大学生数学建模竞赛A题思路(2024数学建模国赛A题思路)
  • 【Effective Java】多构造器参数使用构建器 (快速上手)
  • 【HuggingFace Transformers】OpenAIGPTModel源码解析
  • MySQL学习--加强
  • MATLAB算法实战应用案例精讲-【人工智能】数据集市(概念篇)
  • 电子发射与气体导电
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • Android Studio:GIT提交项目到远程仓库
  • AngularJS指令开发(1)——参数详解
  • CentOS7 安装JDK
  • java8 Stream Pipelines 浅析
  • Mybatis初体验
  • react 代码优化(一) ——事件处理
  • windows下使用nginx调试简介
  • 测试开发系类之接口自动化测试
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 力扣(LeetCode)56
  • 使用权重正则化较少模型过拟合
  • 你对linux中grep命令知道多少?
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • 阿里云服务器如何修改远程端口?
  • 湖北分布式智能数据采集方法有哪些?
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​​​​​​​​​​​​​​Γ函数
  • ​flutter 代码混淆
  • #传输# #传输数据判断#
  • #数学建模# 线性规划问题的Matlab求解
  • (007)XHTML文档之标题——h1~h6
  • (1)无线电失控保护(二)
  • (C语言)fread与fwrite详解
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (笔试题)分解质因式
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (三) diretfbrc详解
  • (一)Linux+Windows下安装ffmpeg
  • .NET C# 使用 iText 生成PDF
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET Framework杂记
  • .NET 使用 XPath 来读写 XML 文件
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • .NET成年了,然后呢?
  • .net项目IIS、VS 附加进程调试