自动化测试基础知识:什么是自动化测试?需要学习哪些知识与工具!

自动化测试基础知识:什么是自动化测试?需要学习哪些知识与工具!

1、自动化测试概念

自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常, 在设计了测试用例并通过评审之后,由测 试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。简言之,自动化测试就是让被测试的软件自己运行起来,执行软件的功能,或者就是让其他的工具自己运行起来,去检查软件的内部和外部。自动化测试包含自动化和测试两个概念:

自动化:由程序(或机器、设备等)代替人工自动完成指定目标的过程。

测试:校验系统是否满足规定的需求。

自动化测试:让程序(或机器、设备等)代替人工自动完成系统校验的过程。

那么,机器怎么知道人类的要求?关键点是编程语言。

机器学习一个编程语言,轻松和简单到令人发指的地步:安装上去,机器就学会了。好在人类学习编程语言也不是特别难的事情。有了编程语言,就有了人机交流的桥梁,剩下的事情,是帮机器挑选工具。做对应的测试,找到对应的工具,这样自动化就自动起来了。

总之,自动化测试引入的原因是就把软件测试人员从枯燥乏味的机械性手工测试劳动中解放出来,以自动化测试工具取而代之,使测试人员的精力真正花在提高软件产品质量本身。尽管自动化测试可以降低人工测试的工作量,但并不能完全取代手工测试,一味追求测试自动化只会给企业带来运作成本的急剧上升

自动化测试优缺点

◆ 优点:

  • (1) 提高测试执行效率,节约时间成本;
  • (2) 解放人力去做更重要的工作;
  • (3) 可重复利用,建设对人的依赖;
  • (4) 提升客户满意度;
  • (5) 提升测试团队的整体水平;
  • (6) 可大幅度减少兼容性测试的工作量;
  • (7) 有些测试工作必须依靠自动化实现来完成。

◆ 缺点:

  • (1) 开发测试脚本需要花费较大的时间成本,拉长周期;
  • (2) 产品的快速迭代,自动化脚本也将不断迭代,时间成本很高;
  • (3) 不同的项目之间自动化脚本的复用度很低;
  • (4) 对短期型项目产品实现自动化价值不高;
  • (5) 自动化无法完全代替手工测试找到 bug,实现 100%覆盖;
  • (6) 自动化更多的适用于回归测试;
  • (7) 自动化开发过程对软件测试团队的技术有更高的要求。
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

手工测试与自动化测试

手工测试:手工测试就是由测试人员一个一个的执行用例,然后观察测试结果是否符合预期,手工测试一般是基于两个原因:(1)时间资源不足;(2)技术水平不足。在这些情况下,手工测试能够发挥重要的作用。利用手工测试,我们可以定义测试,还可以跟踪测试。

自动化测试:自动化测试分为功能自动化和性能自动化,前者是通过测试工具(或框架)录制/编写测试脚本,对软件的功能进行测试,并验证测试结果是否正确,从而代替部分的手工测试工作,达到节约人力成本和时间成本的目的。后者是通过性能工具来模拟成千上万的虚拟用户向系统发送请求,从而验证系统的处理能力。

2、自动化测试适用场合

自动化测试前提条件

(1) 软件需求变动不频繁

测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动化测试,而变动较大的仍使用手工测试。

(2) 项目周期足够长

自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成,这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。

(3) 自动化测试脚本可重复使用

如果费尽心思开发了一套近乎完美的自动化测试脚本,但是脚本的重复使用率很低,致使其间所耗费的成本大于所创造的经济价值,自动化测试便成为了测试人员的练手之作,而并非是真正可产生效益的测试手段了。

自动化测试使用场景

(1) 比较频繁的回归测试;

(2) 任务测试明确,不会频繁变动;

(3) 每日构建后的测试验证;

(4) 需要在多平台上运行的相同测试案例、组合遍历型的测试,大量的重复任务;

(5) 软件维护周期长;

(6) 项目进度压力不太大;

(7) 被测软件系统开发较为规范,能够保证系统的可测试性;

(8) 具备大量的自动化测试平台;

(9) 测试人员具备较强的编程能力;

(10) 软件系统界面稳定,变动少。

3、自动化测试工具介绍

自动化测试主流工具介绍

目前市面上自动化工具非常多,我们可以根据测试需求的不同级别来酌情选择,大体上,有三种级别:代码级别、接口/协议级别、界面级别,以下是根据不同级别对应常用工具及特性。

(1) 代码级别:

  • ◆ XUnit:为每个测试方法产生一个对象实例,可扩展的断言、测试方法和测试类
  • ◆ XMock:仅能适用于纯粹的面向对象的语言,使用多态来实现细节的模拟
  • ◆ Coverage:覆盖率测试工具

(2) 接口/协议级别:

  • ◆ LoadRunner:支持全协议,重点是支持 HTTP 等
  • ◆ SoapUI:支持 WebService 协议 SOAP
  • ◆ WebLoad:支持 HTTP 协议
  • ◆ RPT:重点支持 HTTP 和 TCP/UDP 协议
  • ◆ SilkPerformance:重点支持 HTTP 和 TCP/UDP 协议
  • ◆ HTTPClient,JsOUP:HTTP 协议和 HTML 元素处理
  • ◆ JMeter:支持 HTTP,JMS 协议

(3) 界面(UI)级别:

  • ◆ QTP/UFT:支持 Windows,web,java,.NET 应用程序
  • ◆ RFT:支持 Windows,web,java,.NET 应用程序等
  • ◆ TestComplete:支持各类应用程序及第三方组件,对象识别能力强
  • ◆ Selenium/Watir:支持 Web 应用, 支持多平台、多语言、多浏览器
  • ◆ Sikuli IDE:基于图像识别自动化测试工具,支持所有应用
  • ◆ Appium/MonkeyRunner:Android,IOS 移动应用

Selenium 工具介绍

(1) Selenium 特点:

  • ◆ 开源,免费;
  • ◆ 多浏览器支持:FireFox、Chrome、IE、Opera、Edge;
  • ◆ 多平台支持:Linux 、Windows、MAC;
  • ◆ 多语言支持:Java、Python、Ruby、C#、JavaScript、C++;
  • ◆ 对 Web 页面有良好的支持;
  • ◆ 简单(API 简单)、灵活(用开发语言驱动);
  • ◆ 支持分布式测试用例执行。

(2) Selenium 版本:

Selenium 经历了两个版本,Selenium 1.0 和 Selenium 2.0,Selenium 不是由单独一个工具构成的,而是由一些插件、类库组成,每个部分都有其特点和应用场景。

(3) Selenium 的构成:

◆ Selenium IDE:嵌入到 Firefox 浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。官方给出了它自身作用的定位:快速地创建 bug 重现脚本,在测试人员测试过程中,发现 bug 之后可以通过 IDE 将重现的步骤录制下来,以帮助开发人员更容易地重现 bug。IDE 录制的脚本可以转换成多种语言,从而帮助我们快速地开发脚本。

◆ Selenium Grid:自动化的测试辅助工具,Grid 通过利用现有的计算机基础设施,能加快 Web-App 的功能测试。利用 Grid 可以很方便地实现在多台机器上和异构环境中运行测试用例。

◆ Selenium RC 远程控制:Selenium RC(Remote Control 远程控制)是 Selenium 家族的核心部分。Selenium RC 支持多种不同的语言编写自动化测试脚本,通过 Selenium RC 的服务器作为代理服务器去访问应用,从而达到测试的目的。

◆ Client Libraries : 主要用于编写测试脚本的库,用来控制 Selenium Server。

◆ Selenium Server:负责控制浏览器行为。

◆ Selenium Core:是被 Selenium Server 嵌入到浏览器页面中的。其实Selenium Core 就是一堆 JavaScript 函数的集合,即通过这些 JavaScript 函数,我们才可以实现用程序对浏览器进行操作。

◆ Launcher:用于启动浏览器,把 Selenium Core 加载到浏览器页面当中,并把浏览器的代理设置为 Selenium Server 的 Http Proxy。

Selenium RC 与 WebDriver 的区别

确切的说,在 Selenium 2.0 中,可以将 WebDriver 看作 Selenium RC 的替代品。因为 Selenium 为了保持向下的兼容性,所以在 Selenium 2.0 中并没有彻底地抛弃 Selenium RC。如果是初次使用 Selenium 开发一个新的自动化测试项目,那么可以直接使用 WebDriver。那 Selenium RC 与 WebDriver 的区别是什么呢?Selenium RC 是 在浏 览器中 运行 JavaScript 应用 ,使用浏览器内置的JavaScript 翻译器来翻译和执行 selenese 命令(selenese 是 Selenium 命令集合)。

WebDriver 是通过原生浏览器支持或者浏览器扩展来直接控制浏览器。WebDriver 针对各个浏览器而开发, 取代了嵌入到被测 Web 应用中的JavaScript。与浏览器的紧密集成,因此支持创建更高级的测试,避免了JavaScript 安全模型导致的限制。除了来自浏览器厂商的支持之外,WebDriver 还利用操作系统级的调用,模拟用户输入。

特别说明:Selenium 与 WebDriver 原先属于两个不同的项目,现在两个项目已合并,合并的部分原因是 WebDriver 解决了 Selenium 存在的缺点(例如能够绕过 JavaScript 沙箱,我们有出色的 API),部分原因是 Selenium 解决了WebDriver 存在的问题(例如支持广泛的浏览器)。

4、Python 脚本语言介绍

(1) Python 语言简介:

Python 是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。有人说我们公司的软件是用某语言开发的,所以自动化测试也要选某语言; 其实软件开发语言和软件自动化测试语言没有必然联系。也就是说,基于 Python (+ Selenium)编写的自动化测试脚本既可以测试基于 Java 开发的 Web 项目,也可以测试基于 PHP 开发的 Web 项目。所以,在选择 Selenium 自动化测试语言时不需要考虑与开发语言的一致性。

(2) 为什么选择 Python ?既然 Selenium 可以支持多语言,如 Java、C#、Ruby、PHP 等,那我们为什么会选择 Pyhton 呢?主要有以下几点原因:

◆ 第一:简单易学,对编程能力较弱的初学者来说,通过自动化测试技术的实践,不仅可以掌握自动化测试技术,还能掌握一门语法简单且功能强大的编程语言。

第二:通用性强,Python 可以应对很多不同的项目需求,根据不同场景需要选择相应的工具可以大大提高工作效率,例如:

◆ UI 自动化测试/兼容性测试(Python+Selenium)

◆ 接口测试(Python+requests)

◆ 性能测试(Python+Locust)

◆ 安全性测试(Python+Scapy)

END今天的分享就到此结束了,点赞关注不迷路!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/216858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12.12 作业

1, 源代码: #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);speerornew QTextToSpeech(this);idstartTimer(1000);//每隔一秒&#xf…

LLM之RAG理论(一)| CoN:腾讯提出笔记链(CHAIN-OF-NOTE)来提高检索增强模型(RAG)的透明度

论文地址:https://arxiv.org/pdf/2311.09210.pdf 检索增强语言模型(RALM)已成为自然语言处理中一种强大的新范式。通过将大型预训练语言模型与外部知识检索相结合,RALM可以减少事实错误和幻觉,同时注入最新知识。然而&…

【无标题】重生奇迹mu召唤萤石魂石最强搭配

荧光宝石搭配: 1、每个装备上都会有不同的孔洞,所镶嵌的3个宝石都是不相同的。 2、宝石也分为很多的种类。选择比较困难。 推荐搭配: 如果有宝石等级比较高,那么就选择高的来搭配。最好的搭配是就是同样的属性搭配一套&#x…

优雅玩转实验室服务器(一)登录服务器

这篇文章更加偏向于使用python程序进行研究的朋友们 原料 Windows主机实验室Linux服务器(可以访问互联网)一点点耐心 step.0 windows terminal is all you need 别跟我说什么putty,什么winscp,我就是单推Win11自带的软件——win…

005、Softmax损失

之——softmax与交叉熵 杂谈 我们常用到softmax函数与交叉熵的结合作为损失函数以监督学习,这里做一个小小的总结。 正文 1.softmax的基本改进 所谓softmax就是在对接全连接层输出时候把输出概率归一化,最基础的就是这样: 效果就是这样&…

【Android嵌入式开发及实训课程实验】【项目1】 图形界面——计算器项目

【项目1】 图形界面——计算器项目 需求分析界面设计实施1、创建项目2、 界面实现实现代码1.activity_main.xml2.Java代码 - MainActivity.java 3、运行测试 注意点结束~ 需求分析 开发一个简单的计算器项目,该程序只能进行加减乘除运算。要求界面美观,…

【异常解决】SpringBoot + Maven 在 idea 下启动报错 Unable to start embedded Tomcat(已解决)

Unable to start embedded Tomcat(已解决) 一、背景介绍二、原因分析2.1 网络上整理2.2 其他原因 三、解决方案 一、背景介绍 spring boot(v2.5.14) maven idea 启动项目 之前项目一直启动的好好的,都能正常运行。重启的时候突然就不能启…

汽车服务行业分析:预计2028年将达到38亿元

在推进加快检验机构建设同时,综合评估检验机构数量、分布和检测能力,探索试点汽车 4S 店开展检验,提供维修、保养、车检一体化服务。汽车服务主要是指围绕汽车展开的一系列服务活动,包括维修、美容、金融等,除具有一般…

Wireshark中的http协议包分析

Wireshark可以跟踪网络协议的通讯过程,本节通过http协议,在了解Wireshark使用的基础上,重温http协议的通讯过程。 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于 字节流…

【C++】类与对象(下)

本文目录 1. 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit关键字 2. static成员2.1 概念2.2 特性 3. 友元3.1 友元函数3.2 友元类 4. 内部类5. 匿名对象6. 拷贝对象时的一些编译器优化7. 再次理解类和对象 1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时&am…

山西电力市场日前价格预测【2023-12-09】

1.日前价格预测 预测说明: 如上图所示,预测明日(2023-12-09)山西电力市场全天平均日前电价为366.40元/MWh。其中,最高日前电价为629.26元/MWh,预计出现在08:00。最低日前电价为216.58元/MWh,预…

Tomcat部署及优化

1. Tomcat 简介 Tomcat 是 Java 语言开发的,Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,是 Apache 软件基金会的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。 Tomcat 属于轻量级应用服务器…

【数据结构】堆的模拟实现

前言:前面我们学习了顺序表、单链表、栈、队列,今天我们就开始新的学习吧,今天我们将进入堆的学习!(最近博主处于低谷期)一起加油吧各位。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:数据结构 &…

【代码随想录】刷题笔记Day34

前言 考过概率论,发过一场烧,兜兜转转又一月,轻舟已撞万重山,赶紧刷题 贪心算法理论基础 贪心的本质:局部最优→全局最优无套路,常识性推导 举反例 455. 分发饼干 - 力扣(LeetCode&#xf…

小黑独自去逛城墙和夫子庙,夜泊秦淮被雨淋,南京马拉松323刷新自己最好成绩,开始参加部里公务员培训的leetcode之旅:12. 整数转罗马数字

小黑代码 class Solution:def intToRoman(self, num: int) -> str:# 定义字符数组和数字数组chars [M, CM, D, CD, C, XC, L, XL, X, IX, V, IV,I]nums [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]total numres # 遍历每个符号for i in range(13):# 依次进…

自炫锁2-b

1. 自旋锁 自旋锁也是为实现保护共享资源而提出一种锁机制。其实,自旋锁与互斥锁比较类似,它们都是为了解决对某项资源的互斥使用。 无论是互斥锁,还是自旋锁,在任何时刻,最多只能有一个保持者,也就说&…

进程(IPC)_D3(2023-12-12)

XMind(分图版)

三层交换原理

三层交换机出现的背景 早期的网络中一般使用二层交换机来搭建局域网,而不同局域网之间的网络互通由路由器来完成。那时的网络流量,局域网内部的流量占了绝大部分,而网络间的通信访问量比较少,使用少量路由器已经足够应付了。 但…

js 根据指定日期格式化输出( 刚刚,几分钟前,几小时前,今天,标准日期)

代码如下: function getDateStr(stringTime) {let str stringTime;//将字符串转换成时间格式let timePublish new Date(str);let timeNow new Date();let minute 1000 * 60;let hour minute * 60;let day hour * 24;let month day * 30;let year month * 1…

智能优化算法应用:基于闪电搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于闪电搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于闪电搜索算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.闪电搜索算法4.实验参数设定5.算法结果6.…