01.自动化测试框架

在学习自动化测试或者实践自动化测试时,我们一定会对一个名词不陌生,那就是“自动化测试框架”。

而有些人也将 Selenium、Appium 这样的工具也称之为“自动化测试框架”,那么到底自动化测试框架如何理解呢?

软件工程中的框架(framework),特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。

在此结构上可以根据具体问题扩展、安插更多的组成部分(升级),从而更迅速和方便地构建完整的解决问题的方案。

根据以上框架的定义引申到自动化测试领域,我们可以定义自动化测试框架包括如下功能:

(1) 日志组件

记录和管理日志,方便定位问题,如 Log4j、logging 模块等;

(2) 测试报告

管理与生成测试报告,快速得到测试结果,如 Allure、HtmlReport 等;

(3) 测试静态资源

如配置文件、引用的其他静态资源管理,实现配置与测试脚本分离;

(4) 测试用例管理与执行

如 Java 语言体系 TestNG、Junit,Python 语言体系 UnitTest、Pytest 等;

(5) 测试数据管理

保存用例参数化数据,如可采用 Excel、YAML、CSV 格式文件,实现测试脚本与测 试数据分离;

(6) 公共模块(Common)

保存用例公共方法、通用操作;

(7) 驱动模块(Driver)

底层执行自动化测试引擎,如 Selenium Webdriver 网页端测试库、Appium client 移动端测试库、Requests/REST-assured 接口测试库。

其他辅助功能:

除了上述自动化测试框架基本组成成分之外,自动化测试框架还可以有更多其他的辅助功能,比如并行执行、失败重试、异常处理以及通过持续集成平台构建(如 Jenkins)。

总的来说,一个完善的自动化测试框架应该是具备高扩展性、可维护性、稳定性。如 Selenium、Appium 只是具备上述框架的部分功能而已,所以我们在选择自动化测试框架时更多的是多个工具/库的组合,

比如:Selenium+TestNG+Allure+Jenkins,Appium+TestNG+Allure+Jenkins 等等。

02.测试框架技术选型

目前常见的自动化测试类型包括接口自动化和 UI 自动化,目前市面上针对接口、UI 层面的自动化测试工具/框架有很多选择。

在进行技术选型之前首先要分析项目的架构和类型,如果项目主要通过接口的形式提供给其他服务使用,我们可以使用接口自动化。对于项目既有后端也有前端,在接口自动化层面的质量保证基础上再采用 UI 自动化。

接口自动化

目前市面上接口自动化测试技术都已经非常成熟,以下介绍几款比较主流的技术:

(1) Jmeter+Ant/Maven+Jenkins

Jmeter 由 Java 开发并开源,并且提供了可视化界面。通过 Jenkins 持续集成平台集成 Maven 或 Ant 插件,再通过 Maven 或 Ant 构建 Jmeter 脚本可以满足自动化测试持续集成。熟悉 Java 语言的情况下还可以对 Jmeter 做二次开发。

(2) Postman+Newman+Jenkins

Postman 是非常多测试人员会选择使用的一款接口测试工具,并且很多开发人员也会使用它对接口进行调试,上手简单并且功能强大。通

过 newman 可以支持命令行方式调用 Postman 测试用例执行,并且还可以通过 Jenkins 平台结合 newman 进行持续集成。

(3) Robotframework+RequestsLibrary+Jenkins

Robotframework(简称 RF),是一款基于关键字驱动的测试框架,主要通过封装关键字进行调用,使用 RequestsLibrary 测试库可以进行接口测试,RF 不需要懂编程语言也可以编写自动化测试用例。

(4) Java+REST-assured+TestNG+Jenkins

Java 语言体系中的 REST-assured 作为目前最流行的接口测试框架,基于 BDD 语法风格让编写接口测试用例变得非常简单,内置非常强大的功能如 hamcrest 断言及 Gpath 响应解析等,使用 TestNG 测试框架我们可以管理及执行测试用例。

(5) Python+Requests+Pytest+Jenkins

在 Python 语言体系中 requests 模块基于标准库 urllib 进行封装,支持其几乎所有特性,是目前最火的 python 语言接口测试库。

Pytest 同样属于 python 中的第三方单元测试库,相比标准库 Unittest 更加强大。

Web 自动化

目前应用最主流的的 Web 自动化框架还是 Selenium,其内置的 Selenium Webdriver 组件通过 JSON wire protocol 协议能够支持多款浏览器的自动化测试,包括 Chrome、Firefox、IE、Safari 等等。

Selenide 及 Katalon 这些自动化测试工具基于 Selenium 构建封装,其内部核心还是 Selenium Webdriver。

Java 语言技术栈:

Java+Selenium+TestNG+Jenkins

Python 语言技术栈:

Python+Selenium+Pytest+Jenkins

移动端自动化

移动端使用最为广泛的应该就是 Appium 了,Appium 是一个开源的自动化测试框架,支持 Android 和 iOS 上的 Web App、Native App 和 Hybrid App 的自动化测试。

Appium 基于 Selenium Webdriver 并添加了移动端相关的 API。

Java 语言技术栈:

Java+Appium+TestNG+Jenkins

Python 语言技术栈:

Python+Appium+Pytest+Jenkins

持续集成

自动化测试作为持续集成的重要一环,当开发部署新功能或更新功能时,持续集成平台运行自动化测试能够快速提供质量和定期反馈,目前成熟的持续集成平台非 Jenkins 莫属。

下面是测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

技术选型都做不好,难怪自动化做得这么费力...相关推荐

  1. 为什么大家都做不好社交这件事?

    来自:Louis徐玮 人是群体动物,社交是底层需求.这么多年以来,人类底层需求从来没变过.互联网的产品经理看到了,想把社交这件事搬到互联网上.谁只要垄断了社交,上亿市值不是梦.但似乎大家都没怎么做成. ...

  2. 一直帮助别人,自己的事都做不好 其实也是非常自私的一种行为

       "我有很长时间都在本末倒置的做事情,就是当别人让我帮助他办事的时候,我会先停下自己的事,然后帮助他,帮完之后再做自己的事,我相信大部分人都不会向我这样做事情.久而久之,自己感到非常的累 ...

  3. 总感觉自己什么都不会,做什么都做不好怎么办?

    明明做过很多事,明明会很多技能,为什么总感觉自己什么都不会?明明很认真做事,明明已经很仔细了,为什么做什么都做不好? 其实"什么都不会"和"什么都做不好"可以当 ...

  4. 90%的 CTO 都做不好绩效管理?看看这个十年 IT 老兵都有什么绝活?

    十多年从业经历,从 2001 年开始带团队到现在,我几乎经历过所有的 IT 角色.2010 年,我随创始团队筹建国美在线至今,经历了从几百单到现在日均百万订单,从只有家电品类到现在全品类.金融.大数据 ...

  5. 90%的 CTO 都做不好绩效管理

    IT 技术团队的绩效考核是比较头痛的事情.从技术员工的角度来讲,我和大家一样是很反感绩效考核的,主要原因是技术绩效到底怎样去量化是个难点.但是从管理的角度讲,技术团队必须要有绩效管理机制. 技术团队绩 ...

  6. Java 数据库连接池的技术选型都应考虑哪些要素

    为什么80%的码农都做不了架构师?>>>    数据库连接池是一个牵涉面很广的话题,对于大型系统,数据库连接池的好坏,关系到系统的性能和稳定性,因此,选好数据库连接池,是系统在架构时 ...

  7. 一线互联网技术总监的忠告:我们精通那么多技术为何还是做不好一个项目?

    4.5 症结 3:抽象不够.逻辑纠缠--High Level 业务逻辑和 Low Level 实现逻辑纠缠 当我们说"代码中包含的业务逻辑"的时候,我们到底在说什么?业界并没有一个 ...

  8. 如果软件测试都做不好,你还想做开发?

    软件测试工作和软件开发有什么区别?下午有个小白和我聊天的时候讲到了,实际上他现在还没有毕业,但是出去面试找工作的时候,软件开发他找了,一直没有面试上,但是软件测试这个岗位他不知道做什么,却直接就能应聘 ...

  9. 没错,那帮实习生什么都做不好

    PMCAFF(www.pmcaff.com):互联网产品社区,是百度,腾讯,阿里等产品经理的学习交流平台.定期出品深度产品观察,互联产品研究首选. 外包大师(www.waibaodashi.com): ...

最新文章

  1. SQL点滴5—产生时间demention,主要是时间转换
  2. 还是自己写的东西比较放心
  3. 集合框架(一) ----------Map集合遍历的方法
  4. syslinux引导扇区不支持ntfs文件系统_磁盘与文件系统
  5. Docker资源汇总
  6. C++提高部分_C++函数模板_基本用法---C++语言工作笔记081
  7. SVM与feature
  8. [PHP]Yii rules常用规则
  9. 计算机网络课设之TCP通讯录
  10. pytorch+cuda+cudnn下载、安装和配置
  11. 本人见过的最有用的日志!不来转藏肯定后悔
  12. 基于采样的路径规划方法
  13. 如何从uboot中推算路由器flash烧写地址
  14. FPGA学习笔记-IP核
  15. 1962年 电影版 越剧红楼梦 剧本
  16. 什么是动态页空间?什么静态空间?
  17. hdu5514 Frogs(容斥原理)
  18. Word目录排版,页码格式转换
  19. 怎样在Win7桌面上显示“我的电脑”
  20. 发一些收藏的收费MD5

热门文章

  1. 17.如何正确使用TCP
  2. 剪映电脑版_插上手机秒变2K屏笔记本!TNT go扩展本评测:欢迎使用下一代电脑...
  3. SSH医院门诊就约系统答辩PPT免费下载
  4. 计算机专业本科毕业答辩问题及回答
  5. shell 进入hadoop_shell启动hadoop集群
  6. java httpurlconnection 设置编码_java – 通过HttpURLConnection发送UTF-8字符失败
  7. 乐山计算机学校新歌王,星歌王第二季乐山市计算机学校专场赛决赛完美落幕!...
  8. 将windows c盘安装在linux,将WindowsC盘hda1安装在Linux文件系统的/winsys目录下,命令是()。...
  9. Python+OpenCV:图像快速角点检测算法(FAST Algorithm for Corner Detection)
  10. 架构之旅~底层提供一个统一的GetModel()的重要性