精华内容
下载资源
问答
  • 软件测试自动化测试工具有哪些?常见的自动化工具简介
    千次阅读
    2019-04-02 10:19:57

    1:Appium

    AppUI自动化测试
    Appium 是一个移动端自动化测试开源工具,支持iOS 和Android 平台,支持Python、Java 等语言,即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台,
    Appium 是一个C/S 架构,核心是一个 Web 服务器,它提供了一套 REST 的接口。当收到客户端的连接后,就会监听到命令,然后在移动设备上执行这些命令,最后将执行结果放在 HTTP 响应中返还给客户端。

    2: Selenium

    WebUI自动化测试
    Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7、8、9)、Mozilla Firefox、Mozilla Suite等。
    这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。
    支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。其升级版本为Webdriver。

    3: Jmeter

    接口测试,性能测试
    JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现
    JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。JMeter用于模拟在服务器、
    网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。

    4:Postman

    接口测试
    Postman 提供功能强大的 Web API 和 HTTP 请求的调试,它能够发送任何类型的HTTP 请求 (GET, POST, PUT, DELETE…),并且能附带任何数量的参数和 Headers。不仅如此,
    它还提供测试数据和环境配置数据的导入导出,付费的 Post Cloud 用户还能够创建自己的 Team Library 用来团队协作式的测试,并能够将自己的测试收藏夹和用例数据分享给团队。

    5: Monkey

    稳定性测试
    软件附带在sdk中,适用于android和ios,通过adb shell,生成用户或系统的伪随机事件,
    压力测试结果:崩溃crash,无响应anr,
    基本命令:adb shell monkey 300。

    6: Robot

    WebUI 自动化测试,接口测试
    Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发。

    7: Loadrunner

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

    更多相关内容
  • 文章目录前言软件测试三层金字塔单元测试接口测试UI测试自动化测试三种类型单元自动化测试接口自动化测试UI自动化测试结束语 前言 大家好,我是洋子,自动化测试已经是测试领域经常谈到的话题了,今天给大家分享...


    前言

    大家好,我是洋子,自动化测试已经是测试领域老生常谈的话题了,今天给大家分享自动化测试到底该怎么做
    请添加图片描述

    软件测试三层金字塔

    在讲自动化测试前,先看下软件测试的分层模型,如下图所示的“三层金字塔”,分为单元、服务和UI三个层级。尽管大家对此的具体描述各不相同(有人将三层分别定义为单元、接口、集成测试;也有人将整个金字塔划分为4-5个层级),但金字塔自底向上的结构是大家公认和遵循的
    请添加图片描述

    单元测试

    单元测试是针对代码单元(通常是类/方法)的测试,单元测试的价值在于能提供最快的反馈,在开发过程中就可以对逻辑单元进行验证。好的单元测试可以帮助改善既有设计,在团队掌握 TDD的前提下,单元测试能辅助重构,帮助提升代码整洁度。

    接口测试

    接口(API)测试是针对业务接口进行的测试,主要测试内部接口功能实现是否完整。比如内部逻辑是否正常、异常处理是否正确。

    接口测试关注的重点更多在于数据层面,如数据处理,数据状态,数据传递

    接口测试的主要价值在于接口定义相对稳定,不像界面或底层代码会经常发生变化,所以接口测试比较容易编写,用例的维护成本也相对较低。在接口层面准备测试的性价比相对较高。手动进行接口测试的常用工具有Postman,浏览器F12调试工具

    UI测试

    UI测试从用户的角度验证产品功能的正确性,测的是端到端的流程,并且加入用户场景和数据,验证整个过程是否流畅。有时候在UI测试时,还会进行集成测试,集成测试的业务价值最高,它验证的是一个完整的流程,但因为需要验证完整流程,在环境部署、准备用例及实施等方面成本较高,实施起来并不容易。

    自动化测试三种类型

    前面我们了解到了软件测试的三层模型,所以自动化测试也是基于这三层模型进行展开的,我们可以在单元测试阶段进行单元自动化测试,接口测试阶段进行接口自动化测试,在UI测试阶段进行UI自动化测试。

    单元自动化测试

    因为单元测试关注的重点更多在于代码的实现与内部逻辑,所以要想进行单元自动化测试,对测试开发工程师的代码能力要求比较高。对于不同的开发编程语言,有对应的单元测试框架,比如Java 有JunittestNG 。C#有Nunit 。Python 有UnitTestPytest 。Go 有 testingGoConvey
    GoStubGoMockGoMonkey。运用这些测试框架,再结合一些自动化测试(脚本)平台,CI流水线运行单测插件等我们就可以进行单元自动化测试了。

    接口自动化测试

    接口自动化当中,可以构造三种接口自动化case,分别是单接口、场景、diff 自动化case

    单接口自动化case顾名思义就是对单个接口构造自动化case,包含请求方式,接口名和接口路径,传参,预期返回结果。在校验预期返回结果时通常是会进行断言,常用的断言方式可以选择键值对(键为返回的字段名,值为返回的数据),JSON Schema和Yaml

    场景自动化case则是将多个单接口自动化case根据业务场景集成起来,能够发现业务场景下的接口问题,比如超时,上下游异常等

    diff测试简单来说就是比对相同接口在不同版本/不同环境下面的返回内容是否符合预期,diff测试目前很多互联网大厂已经在采用,我们在写自动化case同样要构造diff自动化case,构造的方法和单接口自动化case相同,只是我们需要不同的环境URL地址进行对比

    如果使用Java语言,可选择TestNG或者REST Assured 作为测试管理框架,搭配Maven+HttpClient+Jenkins+Allure/ReportNG测试报告+MyBatis+mock+springboot 可以开发一套基于Java的接口自动化测试平台。如果使用Python语言,接口自动化测试管理框架可以是Pytest/Unitest/Airtest/Robot Framework 四选一 。搭配Requests库+PyMySQL+Allure测试报告+Flask/Django可以开发一套基于Python的接口自动化测试平台

    UI自动化测试

    无论是Web端还是App端,UI自动化测试都是基于页面元素的识别和定位来模拟用户行为。UI自动化测试工具常见的有Appium,Selenium,搭配Pytest或者Airtest测试管理框架,可以开发出一套UI自动化测试平台。

    结束语

    自动化测试是一种比手工测试更快发现问题的手段,它能够提高测试效率和质量,近几年来互联网大厂针对人工智能领域,利用机器学习和深度学习算法做了许多探索,如用例自动生成,问题自动分析等等,学会自动化测试还是很有必要性。

    展开全文
  • TCL、Python和软件测试自动化

    热门讨论 2012-05-23 13:29:27
    TCL、Python和软件测试自动化.pdf 作者:雷雨后 网上找了很久,找到了就共享了,主要是讲解TCL/TK的知识,写的很不错。
  • .NET软件测试自动化之道——中文版

    热门讨论 2012-11-07 15:47:56
    PDF格式的。 .NET软件测试自动化之道——中文版
  • 自动化测试】开展自动化测试的过程

    千次阅读 热门讨论 2021-05-13 21:37:33
    文章目录1)自动化测试需求分析1.1 如何确定系统是否适合做自动化测试?周期较长:稳定系统:脚本可复用:*被测系统适合怎样的自动化测试?2)调研测试工具、测试框架2.1 框架的选择2.1.1 TestNG主要特点:TestNG的...



    如果自动化测试过程是不合理的,引入自动化测试只会给软件组织或者项目团队带来更大的混乱。我们应该建立正确的自动化测试目标,制定有效的测试策略,有计划、有步骤地实施合理的测试过程,这样才能确保自动化测试获得所期望的效益。

    1)自动化测试需求分析

    当接受一个新的项目时,必须针对测试项目的具体情况进行具体可行性分析,确定一个软件系统测试中哪些范围、哪些任务是适合自动化测试的而哪些是不适合的。如果对不适合的测试任务实施自动化工作,不仅耗费过多的人力,而且效果也不一定好。

    1.1 如何确定系统是否适合做自动化测试?

    • 周期较长:

      如果被测项目是在今后一年或者几年间要不断进行开发维护的,那么就需要重复的进行大量的回归测试,这种情况下如果有自动化的回归测试体系就可以节省成本投入。
    • 稳定系统:

      已上线运行的稳定系统,开发过程中需求变动较少
    • 脚本可复用:

      脚本可复用以降低维护成本。

    • *被测系统适合怎样的自动化测试?

      自动化测试覆盖的范围很广:单元测试、集成测试、接口测试,GUI测试等等都可以实现自动化执行。
      • 不同的系统情况是不一样,有的适合或是可以做GUI的自动化测试,有的可能只适合做接口的自动化测试,所以需要针对不同的被测项目,考虑具体在哪一个环节作自动化测试
        • 比如说针对搜索引擎,前端往往比较简单,只是一个文本框和提交按钮,大部分的逻辑处理都是在后端完成的,这种情况做自动化的接口测试就可以达到事半功倍的效果。
        • 如果是被测系统有很多的页面操作,那么可以考虑GUI的自动化测试。
        • 以上这两种情况都不是绝对的,如果测试资源足够,那么在各个环节都是可以开展自动化测试的。
      • 还有一点需要考虑的是自动化测试的可行性,比如说对一个系统而言,做GUI测试是最合适的,也是最有效,但是有可能通过各种工具或者是脚本很难实现GUI的自动化测试,那么就需要考虑变通,考虑是否可以将自动化测试调整到接口测试或是集成测试等环节

    2)调研测试工具、测试框架

    2.1 框架的选择

    时下比较主流的自动化测试框架,有TestNG、unittest、pytest、Robot Framework。第一个框架基于Java,后三者基于Python,Java和Python是编写自动化测试脚本最常用的两种语言。下面就简单介绍这四款框架。

    2.1.1 TestNG

    Test NG是一款基于Java的自动化测试框架。

    说到TestNG就不得不提到JUnit,两者都是基于Java的测试框架,功能差异不大,但是TestNG底层调用的是JUnit,因此TestNG的使用对于测试人员来说更友好。而JUnit更偏向白盒测试,所以开发人员用来做单元测试比较多,而且测试结果可读性对测试人员也有一定难度。

    • TestNG使用更便捷,例如并发测试JUnit需要调用第三方库,TestNG则不需要。
    • 一般TestNG主要是测试人员使用。
    • 主要特点:

      • 涵盖单元测试、功能测试、集成测试等
      • 基于Annotation(注解)机制,测试方法更灵活:
        • 当我们想执行一部分测试脚本的时候,就可以使用xml配置文件进行配置,在xml配置文件里,可以选择某些需要执行的测试脚本,排除不需要运行的测试脚本。
      • 支持多线程测试
      • TestNG还可以自动生成html、xml格式的测试报告
        • 测试报告位于 “test-output” 目录下,只需要执行测试用例时使用TestNG执行即可自动生成,无需配置,使用便捷。

        • 还可以对报告内容的详细程度进行设置:

          • 可以说是比较完善的测试报告了,测试报告的样式如下图所示,展示比较直观、简明,可以直接看到共执行了多少个用例,成功/失败分别是多少个,设置级别更高的报告,还可以查看具体的失败情况。

          在这里插入图片描述

    • TestNG的使用方法:

      • 将测试用例生成测试套件,通过执行测试套件来执行测试用例。
      • 常用的组件如下图所示:
        在这里插入图片描述
        • @Test表示一个测试用例。
        • @BeforeMethod/@AfterMethod表示在每一个方法执行前/后执行一次。
        • @BeforeTest/@AfterMethos表示在每个测试用例执行前/后执行一次。

    例如,在使用TestNG框架时,就可以将“启动浏览器”的操作步骤封装在@BeforeTest中,“关闭浏览器进程”的操作封装在@AfterTest中,这样就提高了代码复用性

    2.1.2 unittest

    unittest是一款常用的单元测试框架。它更偏向底层,二次开发方便,因此对于测试人员来说,就具备一定的难度了。

    它的优势是Python自带框架,可生成HTML测试报告,使用的是HTMLTestRunnerNew库。由此,若基于Python开发的测试代码,就非常适合采用unittest测试框架。只需要使用自带的方法生成测试套件,执行测试套件,即可完成多种组合方式的测试。因此,针对Python的自动化测试,unittest可谓是最佳拍档,可以轻松完成大部分的测试功能。

    • unittest也可以将浏览器启动、关闭等通用方法封装,生成测试用例,再将测试用例生成测试套件来执行,如下图所示:
      在这里插入图片描述
      在这里插入图片描述

    • unittest也可以自动生成测试报告,报告形式如下图所示:

      在这里插入图片描述

      • 报告的内容与TestNG生成的报告内容相似,展势执行用例的数量、结果等信息,也可以设置详细等级、标题等信息。

    2.1.3 pytest

    pytest是基于unittest扩展的第三方测试框架,比unittest更简洁高效。

    • pytest可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性。
    • pytest插件丰富,比如returnfailures插件,可用于用例出错重跑。
    • 还有xdist插件,可用于设备并行执行测试用例。
    • 可使用pytest-HTML插件生成测试报告。
    • pytest也可用来进行验收测试,适合复杂度不是很高的系统

    2.1.4 Robot Framework

    Robot Framework也是一款功能强大的自动化测试框架,基于Python的关键字驱动测试框架,自带报告生成,功能完善。因此它易用性更高,测试人员使用成本低,但灵活性就偏低了。一般多用于验收测试和验收测试驱动开发的自动化测试框架。支持跨平台(Windows/Linux/MacOS)。

    • 特点:

      • 关键字驱动测试(KDT),简化自动化过程,对测试人员来说更易读,测试数据语法也简单易用,扩展性高。
      • 例如支持Selenium第三方类库可进行Web UI自动化测试,支持Selenium Grid执行并发测试,并且可生成html测试报告但操作较麻烦。
      • 表格式的测试数据语法和关键词驱动测试使得易用性较高。

    2.1.5 框架对比

    TestNG是基于Java的测试框架,unittest、pytest、Robot Framework是基于Python的测试框架。其实测试框架的选择,更主要还是根据系统的特性,选择适合的框架

    对于unittest、pytest、Robot Framework这三个测试框架,都可支持跨平台,语言单一支持Python,差别并不大,主要如下表所示:

    在这里插入图片描述

    实际选用,可结合系统、框架的优势对号入座,以带来更高的自动化测试开发效率。

    2.2 工具的选择

    不同的测试任务会选用不同的测试工具,如单元测试须要选用单元测试工具,性能测试须要选用性能测试工具。

    • 要考虑被测系统是C/S、还是B/S结构的
    • 服务端和客户端都是用何种语言编写的
    • 数据库的类型
    • 服务器类型等等

    在选择测试工具时,要清楚测试目标和需求,确定适用的技术环境及自动工具可支持的各种测试,分析测试工具与被测软件系统的互操作性和兼容性,考虑工具的易用性、工具学习曲线或培训成本,特别是要考虑工具本身所要求的测试脚本,是否支持数据驱动、关键字驱动,以及是否容易编写、调试和维护等。

    2.2.1 UFT(QTP)

    UFT 就是以前最常用的自动化测试工具QTP,用来进行Web UI自动化测试的。QTP实现的是独占屏幕操作,仿真实际用户操作,一般用于回归测试和新版本测试

    • 特点:

      • 支持Windows平台
      • 使用VBScript编写测试脚本
      • 相比Java/C#这类语言,显然更受测试人员欢迎。

    • 测试流程:

      1、制定测试计划
      2、创建测试脚本
      3、增强测试脚本
      4、运行测试
      5、分析测试结果

    QTP的脚本生成是通过轨迹录制,再进行增强优化,最后实现回放。因此VBScript脚本的逻辑比较松散,因此对于复杂页面情况的处理能力比较弱,脚本维护的成本就非常高。最重要的是,QTP是收费的,QTP11.5版本发布改名为UFT。

    2.2.2 Selenium

    Selenium是目前最常用的一种Web自动化测试工具,是开源的,它可并行测试,模拟用户操作,贴近用户实际操作,测试效果直观

    • 它的优势:

      • 兼容性好:兼容多平台,多浏览器,多语言编写脚本,因此它从测试脚本开发,到部署运行,都比较稳定。
      • API丰富:可以实现对浏览器、页面元素、鼠标键盘、JS窗口等几乎所有的用户操作,执行效率较高。

    • 它的组成:

      当前Selenium已发展到第3代,包含三大组件,Selenium IDE + WebDriver + Selenium Grid:

      • Selenium IDE:
        Selenium IDE是Firefox中的一个组件,可以录制操作轨迹,自动生成脚本并进行回放,但它的缺点是不稳定,生成的代码效率低,定位大多采用自动的xpath方式定位,定位繁琐,回放成功率低,且不适用于复杂系统。
      • Selenium Grid:
        用于实现分布式测试。
      • WebDriver:
        是Selenium核心组件,它就是实现页面操作的组件,利用浏览器原生的API,封装成一套更加面向对象的SeleniumWebDriverAPI,直接操作浏览器页面里的元素,执行效率更高,且稳定性依赖于浏览器厂商,显然更加稳定,因此各大常见浏览器都有对应的WebDriver。
        • 例如Chrome对应chromedriver。
        • Firefox对应geckodriver。
        • IE对应iedriver。
        • 甚至比较高版本的selenium还自带了部分常用浏览器的驱动,使用起来非常方便。它的优势显而易见,使用浏览器源厂的驱动来进行自动化控制,给我们带了更高的安全感

    2.2.3 Appium

    Appium是目前最常用的一款移动端自动化测试工具,是开源的,它支持Android和iOS平台的原生应用、web应用和Hybrid应用。它的优势,支持跨平台,多语言脚本编写。因此,兼容性很好,开发便捷。

    • Appium是C/S架构,提供了基于Selenium WebDriver协议的统一接口。

    那么这里就需要说明一下Appium与Selenium的关系了。

    • Appium封装了标准的Selenium客户端类库,Appium继承了Selenium中的WebDriver,因此也是通过WebDriver实现界面的定位及操作。而Appium实现的是PC端连接移动端的桥梁作用,这样才能通过PC端对移动端进行自动化测试

    2.2.4 工具的对比

    由于Selenium和Appium都是使用的WebDriver实现操作的,因此这里只对比UFT和Selenium。

    下面这个表格,充分体现了两者之间的优势与劣势,测试人员可以根据需要选择合适的测试工具,以实现最高的测试效率:

    在这里插入图片描述

    3)搭建自动化测试框架并实施

    由leader组织搭建自动化测试框架,并且在项目中逐步地实施,发现框架的问题并改善。

    3.1 确定开展自动化需要的资源

    确定了使用何种测试工具、测试框架,就需要确定需要的资源,如:

    • 需要几个自动化测试工程师
    • 需要购买的测试工具
    • 测试机(服务器、客户机)
    • 开发自动化框架所需要的时间

    确定了需要哪些资源,就要看当前可用的资源有哪些,如果资源不足应提前申请,如招聘测试人员、购买配置测试机。甚至需要测试人员提前学习新的技术。

    3.2 开发自动化测试脚本

    自动化测试脚本的编写,必须要遵守编码规范,包括脚本的层次、命名等。将(测试)数据层、(系统)操作层和(业务)逻辑层分开,不仅构造结构化的脚本,而且构造程序对象映射、建立对象库和关键字函数库等,全面支持测试数据驱动、关键字驱动的脚本,有利于脚本的开发和维护。

    • 测试脚本的开发,和软件产品本身的开发还有许多相似之处,例如:
      • 自动化测试代码需要跟踪和维护,因此,要采用源代码管理。
      • 测试自动化也会出现缺陷,因此,需要有计划地跟踪缺陷,并且对修改后的缺陷进行验证
      • 用户需要知道如何使用工具和脚本,因此要提供用户使用手册
    • 在脚本开发中增加冗余设计,即使降低一定的性能,也要保证测试执行的稳定性。

    脚本写完了,并不代表脚本开发工作已结束,还须要调试。只有脚本运行稳定,执行的测试结果符合测试要求,才能说明测试脚本开发工作告一段落。

    3.3 测试结果分析

    自动化测试结果一般被分为3种情况——通过(pass)、失败(failed)和不确定/没有被执行TBD/unexecuted)。

    针对测试自动化执行结果,主要集中分析那些没有通过(failed)的结果

    • 分析是不是软件产品本身存在缺陷导致测试执行失败?
    • 是不是之前某个测试执行失败而导致其他大量的测试执行没通过?
    • 查看测试环境是否异常。
    • 如果产品和测试环境都没有问题,就要检查自动化测试脚本,是不是测试脚本误报信息?还是脚本的验证点设置不对?

    有时候,测试执行全部通过,也可能存在问题——脚本的验证点不够或太粗,从而错过许多验证点。

    为了更好地进行测试结果分析:

    • 一方面,尽量记录下测试过程中的重要信息,即存储好的测试执行日志(log)
    • 另一方面,提供规范的测试结果报告格式,使结果一目了然,并在失败的用例提供链接,点击链接,就能直接查看相应的测试用例和执行的log。

    4)总结自动化测试的实施过程

    自动化过程可以从3个角度描述其组成:
    在这里插入图片描述

    • 可以看作一个项目:

      自动化测试的过程就是一个项目的实施过程,经过计划、执行、评估与总结而不断提高的过程。
    • 看作软件开发的过程:

      经过测试需求的分析、自动化测试框架的设计、测试脚本的开发和验证、测试脚本的运行等流程。
      • 而且测试脚本的管理和源代码的管理也是一样的,须要通过CVS、SubVersion等工具进行配置管理,包括版本分支和合并、变更控制等。
    • 依然是一个测试过程:

      从测试需求出发,设计和执行测试用例、报告缺陷,并自动生成测试报告。


    【部分内容参考自】

    • 如何开展自动化测试:http://www.51testing.com/html/98/15165698-3716219.html
    • 自动化测试的实施:https://www.jianshu.com/p/102136c1d7a1
    • 常见自动化测试工具及框架的选用:https://www.cnblogs.com/ustcinfo-qc/p/12124174.html
    展开全文
  • 自动化测试自动化测试框架与工具

    万次阅读 多人点赞 2021-05-06 21:01:01
    文章目录1)什么是自动化测试框架?...1.4 判断是否需要自动化测试适用项目:2)自动化测试框架的类型2.1 自动化测试框架的分类2.1.1 基于模块的测试框架:2.1.2 库架构测试框架2.1.3 数据驱动测试框架2.1.4 关键字驱动



    1)什么是自动化测试框架?

    1.1 什么是框架?

    框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法。

    框架一般是成熟、稳健的,它可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级的,可以直接享受别人升级代码带来的好处。

    1.2 什么是自动化测试框架?

    自动化测试框架是为自动化测试用例或者脚本提供执行环境而搭建的基础设施。自动化测试框架有助于有效地开发、执行和报告自动化测试用例。

    1.2.1 优点:

    • 代码复用
    • 提高测试效率
    • 更高的测试覆盖率
    • 维护成本低
    • 更早发现和记录bug

    在这里插入图片描述

    1.2.2 框架的基本组件

    1、需要配置文件管理:

    一般需要一个配置文件去控制一些环境信息、开关。配置文件可以是txt/xml/yaml/properties/ini,一般.properties使用较多在JAVA里,Python的话通常会选择ini文件。

    2、业务逻辑代码和测试脚本分离

    如果代码和脚本在一个类文件,那么就根本没有用到代码重构,复用。代码和用例文件分离后,会更加清晰,可以有更多人开发脚本,方便调试。

    3、报告和日志文件输出

    执行了多少case,case结果如何,这都需要报告来展示,一般采用第三方插件来实现这个功能。好多报告格式是html,简单,明了的风格。日志输出也很重要,如果发生报错,脚本执行失败,通过日志快速定位发生问题位置。

    4、自定义的库的封装

    很多功能需要重复调用,可以写成一个公用方法,放到工具包下,每次方便调用,例如浏览器引擎类和basepage.py的封装。

    5、管理、执行脚本方式

    例如Python中单元测试框架unittest使用率非常高。

    6、第三方插件引入

    有时候,一些功能需要借助第三方插件,能够更好实现,例如AutoIT(来实现文件上传和下载)。还有利用第三方报告插件生成基于html格式的测试报告。

    7、持续集成

    git、svn、ant、maven,jenkins,我们会把这整合到jenkins,达到持续集成,一键执行测试脚本。

    总结

    一个简单的自动化测试框架,可能包含哪些组成部分:
    在这里插入图片描述

    1.3 为什么需要自动化测试框架?

    • 使自动化测试的实施更容易:一个好的自动化测试框架是可以让不那么懂技术的人也可以写自动化测试脚本。
    • 解决自动化测试脚本本身存在的问题:如异常处理和场景恢复。
    • 测试易于维护
    • 可重用性:可以实现一些通用功能,简化脚本开发过程。
    • 测试报告美观易读。

    1.4 判断是否需要自动化测试

    自动化测试成本投入高,风险大,并且不是所有的项目都适合自动化。自动化测试的优势在于反复迭代,它的价值产出在于长期的回归测试,以保证被测产品长期稳定地版本更新。

    • 适用项目:

      • 项目周期要长,且需求不会频繁变更。
      • 系统中多数对象要可以被识别,并且不存在大量第三方插件。

    2)自动化测试框架的类型

    2.1 自动化测试框架的分类

    下面是目前流行的各种类型的自动化测试框架。这些框架可能基于对不同关键因素(例如驱动类型、可重用性、易于维护等)进行自动化的支持而彼此不同。

    2.1.1 基于模块的测试框架:

    在这里插入图片描述

    这种框架将整个“测试中的应用程序”分为许多逻辑和独立的模块。对每个模块,创建一个独立的测试脚本,这些脚本结合在一起时,会构建成更大的测试脚本,代表多个模块,这些模块被抽象层隔开,这样在应用程序的各个部分所做的更改不会对该模块产生影响。

    • 缺点:在为每个模块实现测试脚本的同时,测试数据已经嵌入到测试脚本中,这导致使用不同的测试数据进行测试时需要在测试脚本中进行操作。

    2.1.2 库架构测试框架

    在这里插入图片描述
    库体系结构测试框架是建立在基于模块的测试框架之上,但比后者有一些额外的优势。它没有将测试的应用程序划分为测试脚本,而是划分为函数。因此,为测试中的应用程序创建一个由公共函数组成的公共库,当需要时,可以从测试脚本中调用这些库

    它的基本原理就是确定通用的步骤,并将这些步骤分组到公共库下的函数中,在需要的时候在测试脚本中调用这些函数。

    比如,一个登录的步骤,可以把它组合成一个函数,并保存到一个库中,登录时可以直接从库中调用这个函数,而不需要重新再编写代码。

    • 缺点:像基于模块的框架一样,测试数据嵌入测试脚本中,改变数据需要修改脚本;随着越来越多的库的引入,可能会使框架越来越复杂。

    2.1.3 数据驱动测试框架

    在这里插入图片描述
    数据驱动测试框架将测试脚本逻辑和测试数据彼此分离可以把测试数据单独存储起来,存储数据的可以是 xml文件、excel文件、文本文件、csv文件、ODBC数据库等。一般都是以 key-value 格式存储,方便获取使用。

    • 缺点:
      • 过程比较复杂,可能需要定制测试数据源格式和读取机制
      • 只有具有相同执行步骤集的相似测试用例才能组合成多组数据。不同的执行步骤集需要不同的测试用例

    2.1.4 关键字驱动测试框架

    在这里插入图片描述
    关键字驱动测试框架是对数据驱动测试框架的扩展,从某种意义上说,它不仅将测试数据从脚本中分离出来,它还将数据测试脚本的特定代码集保存到外部数据文件中。这些代码集被称为关键字,每个关键字都一种操作。关键字和测试数据都是独立于该框架

    • 缺点:
      • 需要懂得关键字的创建机制,从而可以自己开发关键字
      • 随着越来越多的关键字引入,可能会使框架逐渐变得复杂
      • 测试用例变得更长且复杂,从而影响测试用例的可维护性

    2.1.5 混合测试框架

    在这里插入图片描述
    混合测试框架就是上述(模块化,数据驱动和关键字驱动)多中类型框架的组合。就是利用各种类型框架的优点,组合起来的混合型测试框架。

    在这种框架中,通过将测试用例结合到模块化测试框架中,从模块化脚本中开发测试用例。每个测试用例都使用一个驱动程序脚本,该脚本使用数据驱动框架中的数据文件和关键字驱动框架中的操作文件。

    • 缺点:会比其他类型的测试框架更为复杂一些,例如阅读、维护等

    2.1.6 行为驱动开发框架

    行为驱动测试框架可以让开发人员、测试人员等以易于阅读和理解的格式实现功能验证的自动化。可通过自然语言来描述测试功能,测试场景,测试步骤,测试结果等。


    2.2 流行的自动化测试框架

    2.2.1 Robot Framework

    如果要使用python自动化测试框架进行测试自动化,则Robot Framework是最佳选择。Robot Framework是基于Python的,但是也可以使用 Jython(Java)或IronPython(.NET)语言进行脚本用例的编写。

    • Robot Framework使用关键字驱动的方法使测试用例易于创建。
    • Robot Framework还可以测试MongoDB、FTP、Android、Appium等。
    • 拥有非常多的测试库,包括Selenium WebDriver库和其他常用的的工具
    • Robot Framework具有许多API,可帮助使其尽可能地扩展。

    2.2.2 WebdriverIO

    WebdriverIO是基于Node.js的自动化测试框架。它具有集成的测试运行程序,可以为Web应用程序以及本机移动APP运行自动化测试用例。而且,WebdriverIO可以同时在WebDriver协议和Chrome Devtools协议上运行,从而使其对于基于Selenium Webdriver的跨浏览器测试或基于Chromium的自动化都非常有效。由于WebDriverIO是开源的,因此测试工程师可以获得一堆满足自动化需求的插件。

    2.2.3 Citrus

    Citrus是一个开源测试框架,测试人员可以使用该框架自动化针对任何消息传递协议或数据格式的集成测试。对于诸如REST、HTTP、SOAP或JMS之类的任何消息传递传输,Citrus测试框架都适用于测试消息传递集成。如果需要与用户界面进行交互然后验证后端过程,则可以将Citrus与Selenium进行集成

    2.2.4 Cypress

    Cypress是一个以开发人员为中心的测试自动化框架,该框架使TDD测试驱动开发对开发人员而言成为现实。它的设计原理是能够非常简单地将所有内容打包并捆绑在一起以进行整个端到端测试。Cypress的架构与Selenium不同。Selenium WebDriver在浏览器外部远程运行,而Cypress在其内部运行。这种方法有助于了解浏览器内部和外部发生的所有事情,以提供更一致的测试结果。

    2.2.5 Selenium

    Web应用程序中最受欢迎的开源测试自动化框架之一。Selenium具有跨平台和跨浏览器功能,它还可以用作许多其他测试工具的基础。Selenium支持多种编程语言,例如Java、C#、PHP、Python、Ruby等。它拥有最大的在线社区之一,因此更加易于维护。Selenium可以通过广泛的库和API进行高度扩展,以满足每个团队的需求。Selenium是测试人员首选的测试框架,因为可以编写更高级的测试脚本来满足各种复杂程度。它提供了用于测试创作的回放工具,而无需学习特定的脚本语言。

    2.2.6 Carina

    Carina使用流行的开源解决方案(如Appium、TestNG和Selenium)构建的,可减少对特定技术堆栈的依赖。测试人员可以测试APP(原生APP、混合APP、WebAPP)、WEB应用程序、REST服务和数据库。Carina框架支持不同类型的数据库,例如MySQL、SQL Server、Oracle、PostgreSQL,从而提供了使用MyBatis ORM框架实现DAO层的完美体验。Carina支持所有流行的浏览器和移动设备,并且在IOS/Android之间重用了高达80%的测试自动化代码。API测试基于Freemarker模板引擎,它在生成REST请求方面提供了极大的灵活性。Carina是跨平台的,可以在Unix或Windows OS上轻松运行测试用例。

    3)Selenium

    Selenium是一个用于Web应用程序测试的工具,是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE)、编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。Selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。

    这个工具的主要功能包括:测试与浏览器的兼容性,测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。

    • 优点:

      • 开源:不需要钱,且方便进行二次开发,例如提取对json和xml的处理来实现的数据驱动等。
      • 灵活性:因为更加入了xpath(当然大型项目的脚本里xpath 慎用,尽量取id或稳定的属性),加上配合IDE进行定位等,效果比较好。
      • 资料更全面,用该框架的公司越来越多。

    • 缺点:

      • 无论是RC还是Webdriver,对测试人员的编码水平有一定要求。
      • ant,testng,hudson使用也都是小众,大多数人执行这个框架前需要有较长时间学习适应。
      • 时间较短,不如QTP如此完善。

    3.1 selenium 1.0

    selenium 1.0 包括两部分:selenium server、 Client Libraries。

    支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。

    3.1.1 selenium server

    selenium server负责控制浏览器的行为。主要有launcher,Http Proxy,selenium core。selenium core使用Selenium Server嵌入到浏览器页面中。实质上,selenium core是由JS函数组成,这样我们可以实现用程序对浏览器进行操作。

    3.1.2 client Libraries

    编写测试用例时控制selenium server的库。

    3.1.3 testcase的执行过程:

    在这里插入图片描述
    1、测试案例(Testcase)通过Client Lib的接口向Selenium Server(一个独立的中间服务器,确切地说是代理服务器)发送Http请求,要求和Selenium Server建立连接

    2、Selenium Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http Proxy。

    3、Testcase通过Client Lib的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作。

    4、Selenium Core接收到指令后,执行操作

    5、浏览器收到新的页面请求信息(因为在4中,Selenium Core的操作可能引发新的页面请求),于是发送Http请求,请求新的页面。由于Selenium Server在启动浏览器时做了手脚,所以Selenium Server会接收到所有由它启动的浏览器发送的请求

    6、Selenium Server接收到浏览器的发送的Http请求后,自己重组Http请求,获取对应的Web页面

    7、Selenium Server的Http Proxy把接收的Web页面返回给浏览器

    3.2 selenium 2.0(Webdriver)

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

    3.2.1 Selenium2的架构:

    在这里插入图片描述

    webdriver按照server–client的经典设计模式设计:

    • server端就是remote server,可以是任意的浏览器:我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应。
    • client端简单说来就是我们的测试代码:测试代码中的一些行为,比如打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被server端(也就是被测浏览器)server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息

    3.2.2 WebDriver Wire

    the WebDriver Wire Protocol是Selenium自己设计定义的协议,这套协议非常之强大,几乎可以操作浏览器做任何事情,包括打开、关闭、最大化、最小化、元素定位、元素点击、上传文件等。

    WebDriver Wire协议是通用的,也就是说不管FirefoxDriver还是ChromeDriver,启动之后都会在某一个端口启动基于这套协议的Web Service。例如FirefoxDriver初始化成功,默认从http://localhost:7055开始,IE则是http://localhost:52432。

    3.2.3 webdriver的工作原理:

    1、启动浏览器后,selenium-webdriver会将目标浏览器绑定到特定的端口,启动后的浏览器则作为webdriver的remote server。

    2、客户端(也就是测试脚本),借助ComandExecutor发送HTTP请求给sever端(通信协议:The WebDriver Wire Protocol,在HTTP request的body中,会以WebDriver Wire协议规定的JSON格式的字符串来告诉Selenium我们希望浏览器接下来做什么事情)。

    3、Sever端需要依赖原生的浏览器组件,转化Web Service的命令为浏览器native的调用来完成操作。

    4)Appium

    Appium是一个开源的、跨平台的自动化测试工具,支持IOS、Android和FirefoxOS平台。 通过Appium,开发者无需重新编译app或者做任何调整,就可以测试移动应用,可以使测试代码访问后端API和数据库。它是通过驱动苹果的UIAutomation和Android的UiAutomator框架来实现的双平台支持,同时绑定了Selenium WebDriver用于老的Android平台测试。开发者可以使用WebDriver兼容的任何语言编写测试脚本,如Java, OC, JS, PHP,Python, Ruby, C#,Clojure 和Perl语言。

    4.1 UIAutomation

    UIAutomation是苹果提供的UI自动化测试框架,使用Javascript编写。

    基于UIAutomation有扩展型的工具框架和驱动型的框架:

    • 扩展型框架以JavaScript扩展库方法提供了很多好用js工具。
    • 注入式的框架通常会提供一些Lib或者是Framework,要求测试人员在待测应用的代码工程中导入这些内容,框架可以通过他们完成对app的驱动。
    • 驱动型UI Automation 在自动化测试底层使用了UI Automation库,通过TCP通信的方式驱动UI Automation来完成自动化测试,通过这种方式,编辑脚本的语言不再局限于JavaScript。

    Automation是Apple官方提供的UI自动化测试的解决方法,但接口不够丰富。

    4.2 UiAutomator

    UIAutomator是由谷歌提供的测试框架,它提供了原生Android app和游戏的高级UI测试。这是一个包含API的Java库,用来创建功能性UI测试,还有运行测试的执行引擎。该库自带Android SDK。

    • 优点:它在运行访问不同的进程时,会给JUnit测试案例特权。库由谷歌社区支持和维护。
    • 缺点:仅支持android4.1(API level 16)及以上。 不支持脚本记录。 支持的重点是Java。

    如自动化测试中有跨APP操作,可以结合UiAutomator实现。



    【部分内容参考自】

    • 什么是自动化测试框架:https://blog.csdn.net/m0_52650621/article/details/110195874
    • Python+Selenium框架设计篇之-什么是自动化测试框架:https://www.cnblogs.com/wangyinghao/p/10607475.html
    • 自动化测试为什么需要框架?:https://blog.csdn.net/kami_ochin_akane/article/details/109480295
    • 自动化测试框架总结:https://www.jianshu.com/p/7239eff75e68
    • 关于自动化测试框架:https://www.cnblogs.com/delav/p/12707396.html
    展开全文
  • 测试自动化平台 | 测试开发工程师的进阶之路

    万次阅读 多人点赞 2018-05-24 10:23:44
    https://mp.weixin.qq.com/s/WU5h8FW6BT5YZtlsSuCIcw「摘要」随着...本文将概述测试工程师的现状及发展方向,并着重介绍测试开发工程师的发展及所需具备的技能,以及本部门搭建的测试平台的概况和意义。一、测试工程...
  • 自动化测试框架总结

    万次阅读 2021-12-26 15:05:36
    目录 1. 单元测试框架 2. Web自动化测试框架 3. iOS自动化测试框架 4. Android自动化测试框架 ...unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可..
  • 功能测试自动化要点 1 什么时候开始使用自动化测试? 开始之前,要考虑5点 1.1 功能测试自动化类似软件开发过程 录制,回放是不能满足自动化测试的需求的,所以要测试人员掌握开发知识,和编程技巧。 1.2...
  • 自动化测试

    万次阅读 多人点赞 2019-06-14 14:03:45
    软件测试[2],就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复查,是软件质量保证的关键步骤。 定义1:软件测试是为了发现错误而在规定的条件下执行程序的过程。 定义2:软件测试是根据软件...
  • 应用程序安全性并不新鲜,但它在需求、复杂性和深度方面正迅速增长。随着网络犯罪自疫情爆发以来增长了近600%,越来越多的SaaS企业开始争相保护他们的应用程序。... 部署自动化工具,如SAST、DAST、RAST和IAST
  • 5种比较常见的自动化测试框架

    千次阅读 2020-10-26 14:34:43
    自动化测试框架
  • 单元测试自动化测试工具

    千次阅读 2022-03-02 10:45:08
    何为单元测试(unit test) 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。 其实,对“单元”的定义取决于自己。如果你正在使用函数式编程,一个单元最有可能指的是一个函数。你的单元测试...
  • 测试自动化并不像某些人想象的那样容易或经济。仅应在必要和适用的情况下使用。而且,最重要的是,它不能替代手动测试。相反,它补充了手动测试。自动化框架和正确的测试自动化工具对于增强测试自动化...
  • 数字化转型和持续测试继续加速,因此,组织将不得不实施更智能的测试自动化方法。 为确保自动化测试兑现其承诺,组织可以采用以下策略: 扩展他们的测试实践以包括对自动化工具本身的测试。 对其复杂系统...
  • 自动化测试常见问题总结

    万次阅读 2021-12-13 09:38:18
    自动化测试常见问题总结!
  • 或者您已经精通一种编程语言来进行自动化测试,并且正在考虑尝试使用新的编程语言来进行测试自动化,以及它们各自的框架。 您一定对选择下一个里程碑感到困惑。 毕竟,有许多编程语言可供选择。 现在,您可能正在...
  • 每一个测试人员都应该了解每种框架的优缺点,以帮助你的团队更好地确定最适合的测试的框架,以达到事半功倍。
  • Postman接口测试自动化介绍

    万次阅读 多人点赞 2018-10-30 20:07:50
    其实它还具有很强大的接口自动化测试功能,它其实自己就提供了一个框架,采用js脚本编写的。其功能百度都可以查到使用方法,但感觉有点零散,我这里整理了一下,把使用postman进行接口测试的方法整合了,图文并茂,...
  • 一分钟了解自动化测试

    万次阅读 多人点赞 2018-07-29 11:34:30
    写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够明白自动化测试并很好落地实施的团队还不是非常多,我们接来下用通俗的方式来介绍自动化测试…… ...
  • 软件测试整理:自动化测试

    千次阅读 2021-08-30 13:09:46
    文章目录系列文章目录自动化测试框架二、使用步骤1.引入库2.读入数据总结 自动化测试框架 1、模块化测试框架 模块化测试脚本框架(TEST MODulARITY FRAMEWORK)需要创建小而独立的可以描述的模块、片断以及待测应用...
  • AI和测试自动化的真相

    千次阅读 2019-03-02 23:12:11
    目录 翻译内容 De-Mystifying ...Influence of AI in Test Automation AI在测试自动化中的影响 Faster and More Stable UI Tests更快,更稳定的UI测试 Reducing Maintenanceand Eliminating Flaky Test...
  • IOS 自动化测试

    千次阅读 2020-03-25 16:48:49
    自动化测试节省时间节省真机的成本,而且更高效的覆盖所有的iOS机型测试,避免每次上线前重复的人工回归测试,保证每次上线的版本稳定运行。
  • 如何利用测试自动化,实现 DevOps?

    千次阅读 2021-12-13 11:21:37
    有什么比在 DevOps 中实现测试自动化更好的方法来实现这一目标呢? 然而,当我们在实践 DevOps 时,往往会将注意力集中在 CI/CD 管道的关键元素上,比如代码存储库或 CI 服务器,但测试自动化却容易被忽略。尽
  • 自动化测试的意义: 缩短软件开发测试周期,可以让产品更快投放市场 测试效率高,充分利用硬件资源 节省人力资源,降低测试成本 增强测试的稳定性和可靠性 提高软件测试的准确度和精确度,增加软件信任度 软件测试...
  • 自动化测试面试题(一)

    千次阅读 2020-08-27 21:41:20
    自动化测试面试题(一)NO.1 什么是自动化测试NO.2 什么是分层测试?NO.3 自动化测试的适用和不适用场景NO.4 你觉得自动化测试最大的缺陷是什么?NO.4 项目使用的自动化测试框架NO.5 对库的使用NO.6 如何设计高质量...
  • 持续集成实践之自动化测试

    千次阅读 2019-05-08 15:06:36
    软件测试 软件测试大概这么分类: 黑盒测试 VS 白盒测试,以及介于黑盒白盒之间的灰盒测试测试粒度可分为: unit test, functional test, integration test, system test, acceptance test 等 按测试目的可分为...
  • 什么是app自动化测试? 概念:所谓app测试也称之为移动测试,通俗易懂的理解就是测试我们平时手机使用的程序。那什么是app自动化测试呢? 通常情况下是随app产品不断迭代更新,给测试⼈员也增加了测试⼯作量,特别是...
  • 无代码自动化测试的优秀实践与工具
  • 自动化测试方案设计和实现

    千次阅读 2020-10-31 16:08:05
    自动化测试方案设计和实现

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,398,529
精华内容 559,411
关键字:

测试自动化

友情链接: test.zip