几种常见的自动化测试框架

在软件测试领域,自动化测试框架有很多,这里主要介绍几种常用的自动化测试框架。

1.pytest

pytest 是 Python 的一种单元测试框架,与 Python 自带的 unittest 测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高。主要有以下几个特点:

  • 简单灵活,容易上手。
  • 支持参数化。
  • 能够支持简单的单元测试和复杂的功能测试,还可以用来做 selenium / appnium 等自动化测试、接口自动化测试(pytest+requests)。
  • pytest 不是 python 内置库,需要单独安装。

使用 pytest 编写用例,必须遵守以下规则:

  • 测试文件名必须以 test_ 开头或者 _test 结尾(如:test_ab.py)
  • 测试方法必须以 test 开头。
  • 测试类命名以 Test 开头。

2.Junit

Junit 是一个 Java 语言的单元测试框架。它由 Kent Beck 和 Erich Gamma 建立,逐渐成为源于 Kent Beck 的 sUnit 的 xUnit 家族中最为成功的一个。 Junit 有它自己的 JUnit 扩展生态圈。多数 Java 的开发环境都已经集成了 Junit 作为单元测试的工具。

Junit 是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架(regression testing framework)。Junit 测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit 是一套框架,继承 TestCase 类,就可以用 Junit 进行自动测试了。

3.selenium

Selenium 是一个用于 Web 应用程序测试的工具。支持的浏览器包括 IE、Mozilla Firefox、Mozilla Suite 等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。Selenium 是一套完整的 web 应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium 的核心 Selenium Core 基于 JsUnit,完全由 JavaScript 编写,因此可以用于任何支持 JavaScript 的浏览器上。Selenium 可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决 JavaScript 渲染问题。

selenium 1.0 包括以下两部分:selenium server、 Client Libraries 组成。

Selenium 2 将浏览器原生的 API 封装成 WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样。

4.Appium

appium 是当前移动平台上主流的自动化测试工具之一。

appium 是一个合成词,分别由 “application” 的前三个字母和 “Selenium” 的后三个字母组成。application 为 “应用”,我们一般把移动平台上的应用简称为 App。Selenium 是当前主流的 Web UI 自动化测试工具。appium 与 Selenium 之间是有继承关系的。appium 的寓意是:移动端的 Selenium 自动化测试工具

appium 是一个开源自动化测试工具,支持 iOS 和 Android 平台上的原生应用、Web 应用以及混合应用。

  • 原生应用:是指那些用 iOS 或者 Android SDK 开发的应用(App)。
  • Web 应用:是指可以使用移动浏览器(如 iOS 上的 Safari 和 Android 上的 Chrome)访问的应用。
  • 混合应用:是指用原生代码封装网页视图,原生代码和 Web 内容交互的应用。比如, 微信小程序,可以帮助开发者使用网页技术开发应用,然后用原生代码封装。 更重要的是,appium 是一个跨平台的测试工具,它允许测试人员在不同的平台(iOS、 Android)使用同一套 API 编写自动化测试脚本,这大大增加了 iOS 和 Android 测试套件之间代码的复用性。

5.LoadRunner

LoadRunner,是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。企业使用 LoadRunner 能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。

5.1 虚拟用户

使用 LoadRunner 的 Virtual User Generator,您能很简便地创立起系统负载。该引擎能够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。它先记录下业务流程(如下订单或机票预定),然后将其转化为测试脚本。利用虚拟用户,您可以在 Windows ,UNIX 或 Linux 机器上同时产生成千上万个用户访问。所以 LoadRunner 能极大的减少负载测试所需的硬件和人力资源。

用 Virtual User Generator 建立测试脚本后,您可以对其进行参数化操作,这一操作能让您利用几套不同的实际发生数据来测试您的应用程序,从而反映出本系统的负载能力。以一个订单输入过程为例,参数化操作可将记录中的固定数据,如订单号和客户名称,由可变值来代替。在这些变量内随意输入可能的订单号和客户名,来匹配多个实际用户的操作行为。

5.2 真实负载

Virtual users 建立起后,您需要设定您的负载方案,业务流程组合和虚拟用户数量。用 LoadRunner 的 Controller,您能很快组织起多用户的测试方案。Controller 的 Rendezvous 功能提供一个互动的环境,在其中您既能建立起持续且循环的负载,又能管理和驱动负载测试方案。

而且,您可以利用它的 日程计划服务 来定义用户在什么时候访问系统以产生负载。这样,您就能将测试过程自动化。同样您还可以用 Controller 来限定您的负载方案,在这个方案中所有的用户同时执行一个动作,如登陆到一个库存应用程序,来模拟 峰值负载 的情况。另外,您还能监测系统架构中各个组件的性能,包括服务器、数据库、网络设备等,来帮助客户决定系统的配置。

5.3 定位性能

LoadRunner 内含集成的实时监测器,在负载测试过程的任何时候,您都可以观察到应用系统的运行性能。这些性能监测器为您实时显示交易性能数据(如响应时间)和其它系统组件包括 application server、web server、网路设备和数据库等的实时性能。这样,您就可以在测试过程中从客户和服务器的双方面评估这些系统组件的运行性能,从而更快地发现问题。

利用 LoadRunner 的 ContentCheck TM ,您可以判断负载下的应用程序功能正常与否。ContentCheck 在 Virtual users 运行时,检测应用程序的网络数据包内容,从中确定是否有错误内容传送出去。它的实时浏览器帮助您从终端用户角度观察程序性能状况。

5.4 分析结果

一旦测试完毕后,LoadRunner 收集汇总所有的测试数据,并提供高级的分析和报告工具,以便迅速查找到性能问题并追溯原由。使用 LoadRunner 的 Web 交易细节监测器,您可以了解到将所有的图象、框架和文本下载到每一网页上所需的时间。

例如,这个交易细节分析机制能够分析是否因为一个大尺寸的图形文件或是第三方的数据组件造成应用系统运行速度减慢。另外,Web 交易细节监测器分解用于客户端、网络和服务器上端到端的反应时间,便于确认问题,定位查找真正出错的组件。例如,您可以将网络延时进行分解,以判断 DNS 解析时间,连接服务器或 SSL 认证所花费的时间。通过使用 LoadRunner 的分析工具,您能很快地查找到出错的位置和原因并作出相应的调整。

5.5 重复测试

负载测试是一个重复过程。每次处理完一个出错情况,您都需要对您的应用程序在相同的方案下,再进行一次负载测试。以此检验您所做的修正是否改善了运行性能。

LoadRunner 完全支持 EJB 的负载测试。这些基于 Java 的组件运行在应用服务器上,提供广泛的应用服务。通过测试这些组件,您可以在应用程序开发的早期就确认并解决可能产生的问题。

利用 LoadRunner,您可以很方便地了解系统的性能。它的 Controller 允许您重复执行与出错修改前相同的测试方案。它的基于 HTML 的报告为您提供一个比较性能结果所需的基准,以此衡量在一段时间内,有多大程度的改进并确保应用成功。由于这些报告是基于 HTML 的文本,您可以将其公布于您公司的内部网上,便于随时查阅。

6.Jmeter

Apache JMeter 是 Apache 组织基于 Java 开发的压力测试工具,用于对软件做压力测试。

JMeter 最初被设计用于 Web 应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源,如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。JMeter 可对服务器、网络或对象 模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能 / 回归测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。

JMeter 的作用

  • 能够对 HTTP 和 FTP 服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。
  • 完全的可移植性和 100% 纯 java。
  • 完全 Swing 和轻量组件支持(预编译的 JAR 使用 javax.swing.*)包。
  • 完全多线程框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样。
  • 精心的 GUI 设计允许快速操作和更精确的计时。

JMeter 的高可扩展性

  • 可链接的取样器允许无限制的测试能力。
  • 各种负载统计表和可链接的计时器可供选择。
  • 数据分析和可视化插件提供了很好的可扩展性以及个性化。
  • 具有提供动态输入到测试的功能(包括 Javascript)。
  • 支持脚本编程的取样器(在 1.9.2 及以上版本支持 BeanShell)。
  • 缓存和离线分析 / 回放测试结果。

参考资料

【1】自动化测试框架总结
【2】百度百科,LoadRunner
【3】Jmeter 中文网

【测试开发】几种常见的自动化测试框架相关推荐

  1. 五种常见的自动化测试框架

    一.什么是测试自动化框架 自动化测试框架就是用于测试自动化的框架.具体来说,它提供了自动化测试用例编写.自动化测试用例执行.自动化测试报告生成等基础功能.我们只需要基于这个框架,完成和业务高度相关的测 ...

  2. 5种比较常见的自动化测试框架

    每一个测试人员都应该了解每种框架的优缺点,以帮助你的团队更好地确定最适合的测试的框架,以达到事半功倍. 什么是测试自动化框架? 自动化测试框架就是用于测试自动化的框架.具体来说,它提供了自动化测试用例 ...

  3. python全栈测试开发_用于全栈自动化测试的最佳Python工具

    我知道大多数测试人员会说Java是他们创建自动化测试的首选语言. 但是我最喜欢的是Python.为什么?为什么是Python ? Al Sweigart,<自动化那些无聊的东西>的作者,P ...

  4. python测试系列教程——python+Selenium+chrome自动化测试框架

    全栈工程师开发手册 (作者:栾鹏) python教程全解 需要的环境 浏览器(Firefox/Chrome/IE-) Python Selenium Selenium IDE(如果用Firefox) ...

  5. 测试开发实战|如何利用 xUnit 框架对测试用例进行维护?

    如何利用 xUnit 框架对测试用例进行维护? 本文为霍格沃兹测试学院优秀学员 Junit 学习笔记.测试开发技能进阶,文末加群. 1.xUnit 是什么 先看 Wikipedia 上的解释: xUn ...

  6. Android native和h5混合开发几种常见的hybrid通信方式

    前言 在看这篇文章之前你要确保你有那么一点点的js知识,没错只需要一点点,能看懂最简单的代码就可以.如果你之前没接触过js的话..也没关系,我会把其中对应的逻辑用语言表达出来. 为什么需要用到js呢, ...

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

    一直想仔细研究框架,写个流水账似的测试程序不难,写个低维护成本的测试框架就很难了,所以研究多种测试框架还是很有必要的,知道孰优孰劣,才能在开始编写框架的时候打好基础,今天读到了KiKi Zhao的翻译 ...

  8. java实现图形界面输入半径求圆面积_测试开发工程师系列之Android自动化测试Appium(Python)连载(7)安卓图形界面...

    安卓图形界面 UI即User Interface(用户界面)的简称.泛指用户操作界面,包含移动APP,网页,智能穿戴设备等.Android用户界面测试,要测试应用程序如何与一个真实的用户交互.这种测试 ...

  9. 软件测试 | 测试开发 | Sikuli 基于图形识别的自动化测试技术

    作为一名测试人员,测试过程如果遇到应用程序界面结构庞大,页面设计频繁变动,对页面元素定位比较困难的的情况,又需要进行大量重复操作的测试,我们有什么快速解决问题的方法呢?也许Sikuli可以成为你的选择 ...

最新文章

  1. 关于控件ID的试验(涉及MasterPage)
  2. 黑金花大理石_黑色系大理石的首选——黑金花
  3. JavaScript正则表达式语法与示例
  4. Python 函数式编程,Python中内置的高阶函数:map()、reduce()、filter()与sorted(),Python中返回函数
  5. tonardo做web服务器播放大视频内存泄露问题的解决
  6. 教你如何打开android4.3和4.4中隐藏的AppOps
  7. fast recovery area oracle,oracle Fast Recovery Area的管理
  8. U盘的针脚板竟然掉了
  9. 【网络文摘】程序人生:我们工作到底为了什么
  10. ASIC开发流程介绍
  11. [视频教程]macOS运行MAME
  12. 2021秋软工实践第二次结对编程作业
  13. matlab计算单模光纤耦合效率的积分,用于光纤阵列耦合的微透镜阵列的设计和耦合效率的分析...
  14. MSP430(CCS工程下)添加printf实现打印功能
  15. Pascal voc 数据集xml格式解析
  16. sram是靠什么存储信息
  17. CSUOJ1238--兵临城下
  18. Flutter的原理及美团的实践(下,100%好评
  19. MySQL:安装软件和基本操作
  20. 从“范跑跑”和“郭跳跳”看网络事件传播规律

热门文章

  1. 使用 Echarts 实现折线图中线条添加、删除、编辑
  2. 物理学家:时间旅行有可能实现,但前提是……
  3. linux c语言分屏方法,Linux C语言编程基本原理与实践
  4. pycharm调试如何返回上一步_庞大的DCS系统是如何一步一步调试成功的?
  5. IDEA中设置时钟插件防猝死(建议每个人都做一个)
  6. 女生是否适合学软件开发?
  7. 每日新闻:中国5G研发进入领先梯队 AI芯片发展迅速;BAT联合倡议成立中国数字经济投融资联盟;人工智能全面落地国民经济三大产业...
  8. python实现获取阿里云所有ecs服务器信息
  9. APP如何提升用户粘性与用户留存率
  10. Spring声明式事务管理中的事务回滚