自动化测试指南-常见工具及选择

简介

许多组织在采购测试自动化工具时没有进行适当的研究,不了解许可模式、所需的专业支持或内部技术专长的可用性,结果是失望而归。

采购过程可能是痛苦和耗时的。许多组织有采购流程和团队来协助测试自动化团队收集信息并代表他们采购工具。建立和批准新的工具供应商需要时间和大量的后续工作。

解许可证模式

软件许可证管理器用于控制软件产品的使用地点和使用方式。许可证管理器保护、遵守、监测和跟踪软件许可证协议和使用情况。许可证管理器提供广泛的许可证模式,如产品激活、试用许可证、订阅许可证、基于功能的许可证和浮动许可证。在许多情况下,许可证管理器通过互联网远程检查许可证是否到位,并跟踪软件的使用情况。

软件资产管理或日志。这是由最终用户用来管理他们从许多不同的软件供应商那里采购或授权的软件。这些都是用来核对软件许可证的,对于大多数小型组织来说,主要是通过电子表格进行管理。大型和中型组织维护一个 "配置管理数据库 "或 "CMDB库",作为资产管理的数据仓库。CMDB存储了关于IT环境、组件、硬件资产、软件资产(被称为配置项目)和许可证的信息。

产品激活。这是一种许可证验证机制,它可以防止违反软件许可证。当用户从使用其免费版本转为购买许可证时,激活可以使软件停止阻止用户使用。

产品密钥。这可以检查并确认该软件是来自供应商的原件。例如,微软Windows的实体拷贝在包装盒内的标签或卡片上有一个25个字符的产品密钥,或者性能测试工具LoadRunner的许可证密钥可以为现有客户在线下载。

下面的列表涵盖了不同类型的许可证模式和相关费用,通常用于测试自动化工具。

  • 公共领域。这些工具在公共领域可用,没有所有权,如版权、商标或专利用于修改和分发。它们可以免费使用。
图片.png
  • 无许可证。这些工具可供自由使用、修改和分发,只要版权由原所有者保留。
  • 免费和开放源码软件(FOSS Free and open-source software)。这些工具可自由授权使用,并鼓励与社区自愿分享源代码以改进软件。比如Pytest、Selenium, Appium。
  • 原始设备制造商(OEM Original equipment manufacturer)。OEM许可证一般由制造商安装在新的设备上,不能在其他机器上使用,例如微软的Windows和防病毒软件都预装在新的Windows笔记本上。这种许可证一般只有很短的使用期,除非续期。
  • 通用公共许可证(GPL)。这是一个供最终用户学习、分享和修改软件的免费许可证。
  • 多重许可证。这是在两套或更多不同的条款和条件下分发软件,例如,软件供应商将同一个软件以GPL和OEM的形式分发给两套不同的终端用户。软件的功能是相同的。但是,使用方式是不同的。
  • 允许性软件许可证。一种自由软件许可证,对使用、修改和分发的限制最少。
  • 专有软件。这是在严格的版权许可下,源代码通常向最终用户隐藏,防止修改,例如,Tosca和Eggplant。
  • 订阅许可。这是一种定期更新的许可,例如Azure DevOps的用户可以通过Azure按月付费,或者购买传统的软件许可,这需要3年的承诺。BlazeMeter是另一个基于年度订阅的工具。
  • 并发/浮动许可证。一种基于同时访问的用户数量的软件许可证。软件许可证经理一般会跟踪和监控使用情况,任何超过最大并发量的用户都被禁止使用。
  • 固定许可证。这是专门针对一台机器的,也被称为座位,在任何时候都由一个用户使用。
  • 命名许可。这是一个分配给单个用户的单一许可证。
  • 虚拟用户(VU)。这通常是一个定义的虚拟用户或 "Vusers "的数量,可以在一个时期内无限次使用该工具。这通常用于性能测试工具。
  • 随用随付的许可证。这是一种基于使用量的许可。

接口测试工具

  • API/Web服务测试工具
    • SoapUI
      • 广泛用于REST、SOAP、Web服务和API测试
      • 支持HTTP通信的记录、编辑和回放
      • 易于使用,包括 "拖放 "和与其他工具集成
      • 允许开发您自己的功能集作为SoapUI的插件
      • 高度安全和开放源代码
      • 用于网络服务的自动化功能、回归、安全、API和负载测试
      • 支持领先的技术和标准
  • 火狐chrome插件restclient和客户端工具Postman
    • 流行的API测试工具
    • 可在Windows、Mac和Linux上运行
    • 促进API数据的协作和共享
    • 可在Postman界面中编写布尔测试
  • curl/requests/httpie
    • 命令行或后台运行,方便自动化
    • 强悍的编程能力。
  • REST测试REST服务的框架
  • Assured
    • Java领域特定语言的开源平台
    • 良好的社区支持
  • RapidAPI
    • 广泛使用,拥有庞大的社区基础
    • 测试各种各样的API
    • 用于网络服务的功能和性能测试
    • 与CI/CD工具集成
  • Katalon Studio
    • 支持SOAP和RESTful请求
    • 用于API/网络服务、UI功能和移动测试
    • 支持数据驱动的方法

单元测试工具

  • Pytest/nose/unittest 类似有java的junit和testNG等

    • 开源的单元测试框架
    • 支持TDD环境
    • 专门为Python编程而设计,也可用作自动化测试基础框架
    • 广泛使用和流行
  • HtmlUnit

    • 支持JavaScript的开源单元测试框架
    • 测试Web应用程序的框架
    • 它提供GUI功能,如表单、链接和表格
    • 提供开源的Java库
    • 支持HTTP、HTTPS等协议

功能和网络测试工具

  • Selenium

    • 开源的功能测试工具
    • 流行和广泛使用
    • 用于网络应用程序测试
    • 接受各种语言的测试脚本,如Python、C#、Java、Perl、PHP、Ruby和Groovy。
    • 良好的社区支持
    • 与各种浏览器、Windows、Mac和Linux兼容
    • 提供记录和回放功能
    • 与Agile、DevOps和CD工作流程相结合
    • 与Selenium Grid集成,允许使用BrowserStack和SauceLabs等工具进行基于云的跨浏览器测试
    • 支持移动测试
    • 提供大量的插件库
    • 提供跨浏览器、跨平台和第三方的集成
    • 支持并行测试执行
  • UFT One/QTP/Testcomplete等,很贵,扩展性一般,国内主流公司一般不用。

  • 领先的功能和网络自动化工具

  • 授权软件

  • 支持Java、.Net、SAP、Oracle、Web服务

  • 支持移动测试、跨浏览器和第三方集成

  • 支持数据驱动和关键字驱动的测试

  • 领先的测试管理工具

  • Tosca

  • 端到端的功能和网络测试工具

  • 使用基于模型的方法

  • 独立于软件技术

  • 用于功能和移动测试

  • 提供仪表盘、分析、集成和分布式执行

  • 支持持续集成和DevOps实践

  • 容易上手

  • Eggplant

  • 用于功能、网络和移动测试的流行工具

  • 测试案例可以从命令行运行

  • 支持Windows、macOS、iOS和Android

移动测试工具

  • Appium

    • 开源的测试自动化工具
    • 移动测试工具,适用于混合、本地和基于Web的应用程序
    • 它支持跨平台,可在Mac和Windows上使用
    • 创建UI测试并支持代码重用
    • 支持多种编程语言的测试脚本,如Python、Java、Ruby、JavaScript、PHP。
    • 与CI/CD工具集成
    • 与不同的测试工具集成
  • TestComplete 较贵

  • 为网络、桌面和移动应用提供UI测试

  • 允许测试本地和混合移动应用程序

  • 多个移动平台上进行测试

  • 支持Python、JavaScript、JScript、C#和C++。

  • 与各种CI/CD工具集成

  • 提供记录和回放功能,支持关键字驱动的测试

  • 建立在Appium开源框架之上

  • Kobiton

  • 广泛应用于移动测试

  • 支持Appium

  • 与CI/CD工具集成

  • 与各种框架和其他工具集成

测试管理和缺陷管理工具

测试管理工具提供管理端到端测试生命周期和过程的功能。缺陷或错误管理工具促进了缺陷和错误的报告、跟踪、监控、关闭和度量。强烈建议使用同一供应商的测试管理、缺陷管理、功能测试自动化和非功能测试自动化工具套件,因为这有助于跨工具的数据流,提供更准确的质量状况、详细报告和单一的集中许可管理。这些工具在测试自动化中发挥着重要作用,因为它们有助于以集中的方式运行测试,无论是在预定的夜间构建还是在持续集成构建中。

  • ALM

    • Micro Focus应用生命周期管理(ALM)提供了需求管理、测试计划、测试用例开发、测试执行和缺陷管理的功能。
    • 受瀑布式项目的欢迎
    • 基于网络的工具
    • 广泛用于测试和缺陷管理
    • 有企业内部和云版本
  • Azure DevOps

    • 提供版本控制、需求管理、自动构建、测试、报告和发布管理
    • 受到敏捷和DevOps项目的欢迎
    • 广泛用于缺陷管理
    • 基于网络的工具,有企业内部和云端的版本
  • Jira

    • 提供测试、需求、缺陷、报告和发布管理的功能
    • 许多测试功能来自于第三方的附加产品,需要支付额外的许可费用
    • 基于网络的工具,在Agile和Kanban项目中很受欢迎

跨浏览器测试工具

跨浏览器测试工具提供了在短时间内在多个浏览器上测试网络应用的功能。这被称为浏览器兼容性测试,在Chrome、Firefox、Internet Explorer(IE)、Edge、Safari和其他浏览器上验证解决方案。

  • LamdaTest

    • 基于云的跨浏览器测试平台
    • 支持手动、视觉和自动测试
    • 在桌面和移动浏览器上验证跨浏览器测试
  • BrowserStack

  • 支持超过2000种不同的真实浏览器和设备版本

  • 提供验证网络解决方案的跨浏览器和操作系统测试的功能

  • 支持CI/CD

  • 支持Windows、Android、iOS和macOS平台

  • Browsera

  • 验证网络解决方案的跨浏览器布局和脚本错误

  • 提供自动化的浏览器兼容性测试

  • 网站爬行功能允许对单个网站的所有网页进行测试

性能和负载测试工具

  • Locust

    • 广泛使用和流行的工具, github星级最高的性能测试工具
    • python开源,用于负载测试,底层c实现,性能远超其他工具。
    • 有大量的用户社区
    • 支持多种类型的协议,python编码,表现力极强
  • LoadRunner 很贵,扩展性一般,国内主流公司一般不用

    • 广泛使用和流行的工具
    • 基于许可证的测试工具,用于负载测试
    • 有大量的用户社区
    • 与Windows和Linux兼容
    • 在多个企业环境中工作
    • 支持多种类型的协议
  • JMeter/ngrinder

    • 开源
    • 用于负载测试的开源工具
    • 广泛使用,拥有庞大的用户群体
    • 支持各种服务器类型
  • BlazeMeter

    • 广泛用于移动应用程序、网站和API的负载测试
    • 基于许可证的负载测试工具
  • Silk Performer

    • 用于负载测试的基于许可证的测试工具
    • 有大量的用户社区

安全和渗透测试工具

  • Netsparker

    • 安全测试工具,用于检查Web应用程序中的漏洞
    • 流行和广泛使用的渗透测试工具
    • 搜索网络应用中可利用的SQL和跨站脚本(XSS)漏洞
    • 验证跨站脚本与SQL注入的关系
  • Acunetix

    • 检查网络应用程序中漏洞的安全测试工具
    • 广泛使用的渗透测试工具
    • 验证跨站脚本测试和深入的SQL注入
    • 提供企业内部和云测试解决方案

AI/ML驱动的测试工具

由AI和ML驱动的测试工具可以预测哪里最可能出现质量问题,关联数据,并快速识别和解决相应问题。

  • Applitools SDK

    • 支持所有主要的测试自动化框架和编程语言,涵盖Web、移动和桌面应用程序
    • 与GitHub、Microsoft Azure、DevOps等集成。
  • Eggplant AI

    • 使用基于模型的方法来自动生成测试案例
    • 通过设计基于用户行为的测试用例,提高测试覆盖率
  • Retest

    • 自动实现测试自动化
    • 检测功能差异和视觉差异
  • Mabl

    • 提供测试生成和执行的功能
    • 提供无脚本测试、跨浏览器测试和自适应自动修复功能
    • 测量应用程序的性能

测试框架工具

这些工具比单一的测试自动化工具或库更能实现数据驱动的测试和关键字驱动的测试。

  • pytest: 前面已经有介绍
  • RobotFramework:广泛使用的开源框架,用于验收测试比较佳。不建议在功能测试中使用,屏蔽了python的部分灵活性,库支持比较费劲。
  • pytest-bdd/Cucumber/Behat/JBehave/Fitnesse/Serenity
    • 使用面向业务的文档,用于ATDD
    • 开源

本文仅列出了部分工具,更多工具请参考https://github.com/china-testing/python-api-tesing 。

成本

成本是测试自动化和测试自动化工具设置的一个关键因素。了解工具采购、许可模式、年度维护、专业服务以及最重要的是建立测试自动化工具所需的基础设施所涉及的各种成本是很重要的。以下是在工具设置阶段需要考虑和进一步探讨的成本因素清单。

  • 工具基础设施和设置 - 开源和许可的自动化工具设置涉及基础设施成本。性能测试涉及高的基础设施成本和大量的虚拟用户。客户端、服务器、数据库、报告和存储都需要被考虑。
  • SaaS、PaaS和混合 - 云和企业内部版本的工具涉及不同的成本。基于云的版本涉及启用对云的访问,并将测试环境配置到SaaS/PaaS平台上。这可能涉及改变防火墙、负载平衡器配置、网络变化、将互联网协议(IP)地址添加到白名单等。在访问基于云的测试工具时,应考虑安全问题。在估计工作和成本时,需要考虑上述所有因素。
  • 企业内部 - 企业内部和独立的安全环境需要额外的成本,将工具下载到单独的媒体,并将工具实际安装到环境中。测试团队可能需要特殊的权限和对环境的访问来部署该工具。这涉及到建立和访问物理或虚拟基础设施。与供应商、基础设施团队协调的时间,安排停机时间来做升级,如果出了问题就回滚等等都需要考虑。
  • 详细的设计 - 自动化工具是环境中的另一个软件应用程序,环境中的任何工具在安装和部署前都可能需要详细的设计和工程团队的批准。有时需要一个变更委员会来批准安装。这将涉及测试团队和其他团队的额外努力,如技术架构师或变更管理。
  • 采购 - 在咨询或SI环境中,建议通过SI采购自动化工具,因为他们在为许多客户采购工具方面有很好的专业知识,并与工具合作伙伴有长期的合作关系。这有助于以一个相当低的价格采购工具。然而,SI会收取一定的服务费。
  • 培训 - 许多工具都有学习成本,工具供应商对培训和安装支持收取费用。
  • 专业服务 - 来自工具供应商的持续支持和维护。
  • 许可证模式 - 了解许可证费用是如何运作的,例如,市场上一个领先的性能测试工具有一个 "使用和损失 "的模式,因为每次负载测试都会从采购的总数量中减少Vusers。
  • 更新 - 更新费用是另一个需要考虑的工具选择和成本的因素。

在采购测试自动化工具之前,考虑所有上述成本因素是很重要的。你可能需要联系现有的工具用户和各自的供应商,以了解测试自动化工具所涉及的成本。

你可能感兴趣的:(自动化测试指南-常见工具及选择)