当前位置: 首页 > news >正文

字节二面,原来是我对自动化测试的理解太浅薄了..

如何使用Python实现自动化测试

如果你入职一家新的公司,领导让你开展自动化测试,作为一个新人,你肯定会手忙脚乱,你会如何落地自动化测试呢?资深测试架构师沉醉将告诉你如何落地自动kan化测试,本次话题主要分为如下几部分内容:

1、什么是自动化?

2、分层自动化又是什么?

3、如何使用Python实现自动化测试?

4、RobotFramework自动化是不是适合你的境遇?

5、自动化落地成功,怎样日常维护?

什么是自动化?

有很多人做了很长时间的自动化但却连自动化的概念都不清楚,这样的人也是很悲哀,做这样的职业,却连最基本的概念都不清楚。我给大家列举出来如下(引自《软件评测师第69页》):

自动化测试的定义:

自动化测试就是通过测试工具或者其他手段,按照测试工程师的预定计划对软件产品进行的自动的测试,它是软件测试的一个重要组成部分,它能够完成许多手工无法完成或者难以实现的一些测试工作。正确、合理地实施自动化测试,能够快速、全面地对软件进行测试,从而提高软件质量,节省经费,缩短产品发布周期。

如上就是自动化测试标准概念,概括而言,无非就是使用自动化的手段代替人工,但是不是完全代替人工,在这里我不得不指出一个误区,有的人不了解自动化的含义,尤其是一些领导层,认为自动化是万能的,只要自动化做出来,功能测试就可以完全解放了,即使自动化脚本写的再智能,也不可能完全代替手工,并且自动化所耗费的人力也是对于整个项目组很大的开支。所以自动化测试不是万能。

自动化测试的概念引出后,咱们也要介绍一下自动化所包含的种类,在市面上最流行的自动化包括如下种类。

1、UI自动化

2、接口自动化

3、app 自动化

4、单元自动化

5、自动化测试工具(测试开发辅助工具)

种类很多,是不是所有的自动化种类都要在项目开展,这就引出我们新的观点,什么是分层自动化?

分层自动化又是什么?

先上张图

先来谈谈我在工作中看到的自动化测试的误区:

1、自动化测试脚本在完成后因为产品更新导致大量测试用例失效,由于团队忙于新功能开发,当失效的用例积累越来越多时,这些测试用例就慢慢失去维护。如果开发这些用例同学在的时候可能还好办。

2、大量的自动化测试脚本没有发现问题,上线后仍然问题不断。在测试中我们主要针对正常流程进行测试,但是在线上出故障的都是非正常流程。

3、代码质量问题严重。很多人写的单元测试只是构造一个输入然后检查返回值,结果是测试通过了但是问题却遗漏了。

4、重复轮子制造。大量的团队都在开发自己的自动化测试框架,实际上只是对各种开源框架进行裁剪完善。

分层测试包含如下几个层次:

1、单元测试:开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

2、集成测试:也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图〕组装成为子系统或系统,进行集成测试。在这里我们可以认为就是接口测试。

3、系统测试:将需测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素及环境结合在一起测试。在这里我们就可以理解为是UI测试。另外还要个综合规律发现得越早修复成本越低。

如何使用Python实现自动化测试?

就语言而言Python实现自动化无非就是调用对应封装好API。

在众多自动化测试框架中,针对语言都有对应的封装 。但是林林总总,自动化测试无非就要是分为这几大类型,我分别指出对应的自动化测试框架。

1、UI自动化

web自动化:selenium

GUI自动化:autoit

2、接口自动化

urllib2

requests

3、app 自动化

appium

4、单元自动化

和语言有关

看到如上框架,大家肯定会感觉学习自动化,你不仅要熟悉基本的框架内容知识也要对语言有相当的了解,才能真正的实现自动化测试。所以就引出今天要介绍的自动化测试框架RobotFramework。

RobotFramework自动化是不是适合你的境遇?自动化测试开发面临的问题

版本迭代的速度很快,迭代的时间很短,自动化测试开发是时间太短。自动化测试开发框架开发代价太大。尤其是针对初创团队,开发框架人力成本太高。

实际的项目,特别是大型项目,功能通常都是非常复杂的,对构建自动化测试用例也是一种挑战。

综上而论,针对部门规模也是有一定界限的,真正实现自动化测试方式和方法。

对于大型测试部门,有较强的开发能力可以考虑做一套自动化测试框架,但是针对小的团队,还是要选择轻量级的成熟的自动化测试框架。

RF特点

1、易于使用,采用表格式语法,统一测试用例格式。

2、可以使用关键字驱动(keyword-driven)、数据驱动(data- driven)和行为驱动开发 (BDD) 完成。

3、重用性好,可以利用现有关键字来组合新关键字;结果报告和日志

采集HTML格式,易于阅读。平台和应用性关联性。

4、易于集成,提供了命令行接口和基于XML的输出文件。

5、易于与版本管理集成。

6、关键字单词化,容易理解。

RF实现的架构图:

RF代码示例:

自动化测试只要用RF一个框架都能够解决

RF自动化测试框架是一个融合关键字驱动和数据驱动的自动化测试框架,本身在自动化角度上这种融合化自动化测试框架,是当前自动化框架发现的整体趋势。尤其是在工作当中简简单单使用一种框架,不能够满足工作遇到的需求。

自动化如何落地,怎样日常维护?

在实际的工作中自动化测试如何落地这个问题也是很大的痛点,往往自动化做了一大堆,却解决不了在工作中实际问题,自动化存在的价值无非就是两个方面,一是辅助功能做测试数据,二是做冒烟测试和回归测试,如果这两点都没有做到,自动化测试是不可能实现真正意义上应用,也谈不了节省人工。在实际工作过程中。还有一点也是很重要的一个问题,自动化刚开始做的时候,很重要的一点就是打地基,如果地基打不好,整个框架到后期会发现很多问题暴露出来,往往到最后就会舍弃这个框架。框架的选择和框架的开发很重要的,要求短期内自动化测试一定要做出来,可想而知自动化是不可能短期内做出来,架构设计不好,到后期返工可能性会更大。所以这也就决定了自动化前期不是盲目性的,要做好地基。

同样这样也引出咱们今天的重点,RobotFramework 自动化测试框架,一个成熟的自动化测试框架,而且这个框架背后有Python语言作为扩展,所有Python能够实现的东西,在这个框架都可以实现。框架很多,在选择的角度上而言,找一个成熟的框架,把工作的重心放到管理测试用例上,这个才是做自动化的最高层次。也是最贴切工作的价值和意义。一切推崇高技术含量的东西没有一点贴近工作的框架都是浪费时间。

技术行业,一定要提升技术功底,丰富自动化项目实战经验,这对于你未来几年职业规划,以及测试技术掌握的深度非常有帮助。

金三银四面试季,跳槽季,整理面试题已经成了我多年的习惯!下面有我近几年的收集和整理,整体是围绕着【软件测试】来进行整理的,主体内容包含:python自动化测试专属视频、Python自动化详细资料、全套面试题等知识内容。

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

相关文章:

字节二面,原来是我对自动化测试的理解太浅薄了..

如何使用Python实现自动化测试 如果你入职一家新的公司,领导让你开展自动化测试,作为一个新人,你肯定会手忙脚乱,你会如何落地自动化测试呢?资深测试架构师沉醉将告诉你如何落地自动kan化测试,本次话题主要…...

2023雅虎邮箱不能注册?别急,这份教程教你成功注册雅虎邮箱

这几年,跨境电商的迅猛发展,越来越多人加入这片蓝海,跨境人拥有一个专业的邮箱账户显得尤为重要,它是商业交流和日常工作的必备工具。因此,雅虎邮箱成为了许多人的首选,全球范围内使用雅虎邮箱的人数是非常…...

Elasticsearch 自动补全 completion type

Elasticsearch 自带一种自动补全类型 completion 这种类型不在mapping文档里面有点坑。 先直接上例子。 建立 index,把我们要自动补全的字段设置为 completion 类型 或者直接设置为子类型 PUT /blogs_completion/ {"mappings": {"tech": {"properties…...

GB28181协议实现源码Android源码

一、GB28181规范 尽管在国标GB28181中并没有对“平台”进行明确的定义,但在规范中却多次提到“系统平台”、“管理平台”等词汇,在具体项目中、网络上的交流学习中,平台概念也是无处不在。笔者认为,GB28181平台就是视频联网系统中的上级平台、中间平台或下级平台,用于实现…...

HNU工训中心: 三人表决器及八人抢答器实验报告

工训中心的牛马实验 三人表决器: 实验目的 1) 辨识数字IC功能说明。 2) 测试数字集成门电路,掌握输出故障排除、使用注意事项。 3) 掌握逻辑函数搭建三人表决器。 2.实验资源 HBE硬件基础电路实验箱、万用表 74LS00与非门、74LS10 三个3输入与非门…...

split()用法注意事项

split()用法注意事项 这个要注意有些特殊的分割符,比如.,这个表示匹配任何字符,如果在split()中调用的话,会将任何字符都分隔开,比如: String[] split "se.lll".split("."); System…...

centos7配置静态网络常见问题归纳

系列相似配置与安装软件问题整理与归纳文章目录 安装pymysql库_pymysql库安装_张小鱼༒的博客-CSDN博客 解决pip更新的代码_pip更新代码_张小鱼༒的博客-CSDN博客 python当中的第三方wxPython库的安装解答_pip install wx_张小鱼༒的博客-CSDN博客 spark里面配置jdk后的编程…...

产品经理修炼指南【01】

最近看了点产品经理的书,觉得产品经理这个位置和程序员不太一样,程序员唯一考核的标准就是能不能完成工作任务、是否能完成工作代码,但是产品经理貌似不一样,就像我给刘曼说的,产品经理上可以接领导,下可以…...

NCRE计算机等级考试Python真题(十一)

第十一套试题1、以下选项对于import保留字描述错误的是:A.import可以用于导入函数库或者库中的函数B.可以使用from jieba import lcut 引入 jieba库C.使用import jieba as jb,引入函数库jieba,取别名jbD.使用import jieba 引入jieba库正确答案…...

cglib代理解析

工作原理 使用 <dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>3.3.0</version></dependency>对类和接口分别进行代理 DemoService package com.fanqiechaodan.user.service;/*** author fa…...

GFD563A101 3BHE046836R0101

GFD563A101 3BHE046836R0101关于高端涂布机张力控制系统方案的介绍高端涂布机张力控制系统方案涂布机是将具有某种功效的胶&#xff0c;或者油墨类物质均匀粘连在塑料薄膜、铝箔、纺织品等表面的机械设备。本系统从放卷到收卷共采用七台变频器&#xff0c;其中收放卷采用闭环张…...

SAP 采购定价过程字段解析

下面我们针对每一个字段进行解释和用途分析 &#xff1a; 1、 步骤&#xff1a;代表了创建PO时&#xff0c;哪个条件类型放到前面&#xff0c;哪个放到后面&#xff0c;如果步骤号相同&#xff0c;那就以谁先选择出来谁就在前面。 2、 计数&#xff1a;没有任何实际意义&a…...

一篇搞懂tcp,http,socket,socket连接池之间的关系

前言 作为一名开发人员我们经常会听到HTTP协议、TCP/IP协议、UDP协议、Socket、Socket长连接、Socket连接池等字眼&#xff0c;然而它们之间的关系、区别及原理并不是所有人都能理解清楚&#xff0c;这篇文章就从网络协议基础开始到Socket连接池&#xff0c;一步一步解释他们之…...

【JavaSE】对象的比较

哈喽&#xff0c;大家好&#xff01;我是保护小周ღ&#xff0c;本期为大家带来的是Java中自定义类型&#xff08;对象&#xff09;的三种比较方式&#xff0c;equals 方法, Comparable 泛型接口, Comparator 泛型接口 。在日常编程中&#xff0c;我们常常会需要比较的问题&…...

Leetcode DAY 49~50:买卖股票的最佳时机 1 2 3 4

121. 买卖股票的最佳时机 1、贪心算法 class Solution { public:int maxProfit(vector<int>& prices) {//贪心int low INT_MAX;int res 0;for(int i 0; i < prices.size(); i) {low min(low, prices[i]); //左最小价格res max(res, prices[i] - low); //当前…...

Android Handler机制(二) Handler 实现原理

一. 前言 接上一篇文章为什么设计Handler , 我们来继续讲解一下Handler的实现原理, 俗话说一个好汉三个帮, 接下来一步一步引入各个主角,并说明它们在Handler机制中扮演的角色和作用. 二. Handler实现原理 首先我们先确定一个结论: 使用 Handler 是希望它被实例化在哪个线程&a…...

Elasticsearch教程(19) 详解mapping之keyword

Elasticsearch已升级&#xff0c;新版Elasticsearch keyword博客参考下面这篇【Elasticsearch教程8】Mapping字段类型之keyword_elasticsearch的keyword_亚瑟弹琴的博客-CSDN博客 1 前言 本文基于ES7.6&#xff0c;如果是之前版本&#xff0c;是有区别的。 ES支持的字段类型很…...

LeetCode算法复杂度分析(时间复杂度空间复杂度)

文章目录前言时间复杂度1.概述2.大O记法3.常见类型空间复杂度1.概述2.常见类型典型算法的复杂度分析1.递归算法2.哈希表前言 我们知道&#xff0c;研究算法的最终目的就是如何花更少的时间&#xff0c;如何占用更少的内存去完成相同的需求。 时间复杂度 1.概述 我们要计算算…...

Android OpenCV(七十三):吊打高斯模糊的StackBlur Android 实践

前言 OpenCV 4.7.0 2022年12月28日Release,ChangeLog中提到 Stackblur algorithm implementation. Stackblur是一种高斯模糊的快速近似,由Mario Klingemann发明。其计算耗时不会随着kernel size的增大而增加,专为大kernel size的模糊滤波场景量身定制。 使用建议:当kerne…...

4.排序算法之一:冒泡排序

排序算法稳定性假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff0c;若经过排序&#xff0c;这些记录的相对次序保持不变&#xff0c;即在原序列中&#xff0c;r[i]r[j]&#xff0c;且r[i]在r[j]之前&#xff0c;而在排序后的序列中&#xff0c;r[…...

python自学之《21天学通Python》(16)——第19章 用Pillow库处理图片

Pillow是Python2.X时代比较流行的Python ImagingLibrary&#xff08;简称Pillow&#xff09;图像处理库的分支&#xff0c;并修复了一些bug。Pillow提供了对Python3的支持&#xff0c;为Python3解释器提供了图像处理的功能。和Pillow库一样提供了广泛的文件格式支持、高效的内部…...

发布依赖到maven仓库

maven中央仓库是一个开放的仓库&#xff0c;所以我们也可以把自己开发的jar推送到远程仓库&#xff0c;这样可以直接引入pom依赖使用我们的库。 准备工作 ● 需要一个github账号&#xff08;程序员必备&#xff09; ● 网络代理&#xff08;涉及到的网站通常没版本在国内直接访…...

Laravel-admin之自定义操作日志

laravel-admin是封装性极好的框架&#xff0c;自带的就有操作日志的记录&#xff0c;但是对于非开发人员可能看不懂这个日志&#xff0c;所以就想着给修改一下&#xff0c;以谁修改了什么&#xff0c;谁删除了什么&#xff0c;谁审核了什么&#xff0c;谁添加了什么类似&#x…...

用Python做了一个法律查询小工具,非常好用

用Python做了一个法律查询小工具&#xff0c;非常好用效果展示准备工作不会的话可以点我直达代码和视频讲解&#xff0c;我都准备好了主要代码哈喽兄弟&#xff0c;今天给大家分享一个Python tkinter制作法律查询小工具。 光爬虫大家也只能自己用用&#xff0c;就算打包了exe&…...

工作篇:触摸屏原理介绍

一、触摸屏概述 触摸屏作为一种新的输入设备&#xff0c;它是目前最简单、方便、自然的一种人机交互方式。 当接触了屏幕上的图形按钮时&#xff0c;屏幕上的触觉反馈系统可根据预先编程的程式驱动各种连结装置&#xff0c;可用以取代机械式的按钮面板&#xff0c;并借由液晶…...

Ep_操作系统面试题-操作系统的分类

答案 单体系统 整个操作系统是以程序集合来编写的&#xff0c;链接在一块形成一个二进制可执行程序&#xff0c;这种系统称为单体系统。 分层系统 每一层都使用下面的层来执行其功能。 微内核 微内核架构的内核只保留最基本的能力&#xff0c;把一些应用放到了用户空间 客户-…...

iframe或document监听滚动事件不起作用

有时候我们会遇到监听iframe或document的滚动事件不起作用的情况&#xff0c;在排除代码写错的情况下&#xff0c;我们应该考虑此时的document是否可以滑动。 1、为什么document不能监听滑动? 就很奇怪&#xff0c;明明页面时有滚动条的&#xff0c;为什么说document不可滑动…...

基频估计算法简介

基频估计算法 F0 estimate methods 估计F0的方法可以分为三类:基于时域、基于频域、或混合方法。本文详细介绍了这些方法。 所有的算法都包含如下三个主要步骤&#xff1a; 1.预处理&#xff1a;滤波&#xff0c;加窗分帧等 2.搜寻&#xff1a;可能的基频值F0&#xff08;候选…...

linux修改DNS 系统版本Kylin V10桌面版

配置DNS在银河麒麟桌面操作系统V10 SP1 中修改DNS信息&#xff0c;直接修改/etc/resolv.conf文件中的DNS信息&#xff0c;不能生效。应该参考如下步骤&#xff1a;一、首先修改 /etc/systemd/resolved.conf文件&#xff0c;在其中添加DNS信息在终端中执行以下命令&#xff1a;s…...

如何使用 AWS Lambda 运行 selenium

借助 AWS Lambda 运行 selenium 来爬取网络数据。 简介 与手动从网站收集数据相比&#xff0c;爬虫可以为我们节省很多时间&#xff0c;对于爬虫的每次请求而言&#xff0c;这相当于 AWS Lambda 的每次函数的运行。 AWS Lambda 是一种将脚本部署到云的简单且价格低廉的服务&…...

学校网站模板下载/兰蔻搜索引擎营销案例

转自&#xff1a;https://blog.csdn.net/xzmeasy/article/details/75103431 为什么要用jspf文件 写jsp页面时&#xff0c;是不是&#xff1a;css和js引用特别多&#xff0c;而且有些页面头部信息包括css、js引用都一样&#xff0c;这时候聪明的程序猿肯定会想到把这一部分抽取出…...

中小型网站建设怎么样/十大短视频平台排行榜

http://www.cocoachina.com/ios/20140409/8127.html...

郑州做品牌网站好的公司/站长之家爱站网

如果在本机用svn的一个帐户update和commite代码&#xff0c;并且选择了保存用户名和密码。 上面是一个假设&#xff0c;如果这个假设成立&#xff0c;当你准备换另一个svn的用户来update和commite的时候就遇到麻烦了&#xff0c;至少我是这样的&#xff0c;我逐次用一下办法解决…...

h5怎么制作小程序/手机360优化大师官网

世界上第一台电子计算机研制成功的时间是A .1936B.1956C.1946D.1975世界上第一台电子数字式计算机的A.ENDAC B.ENIACC.UNIVAC D.EDVAC被称为计算机之父的是A .艾伦?图灵 B . 查尔斯?巴贝奇C .罗伯特?诺伊斯D . 冯?诺依曼世界上第一台电子计算机于多少年研制成功A.1976B .19…...

网站制作的地方/网络营销服务商

静态字段缓存基本使用 /// <summary>/// 1 客户端缓存-CDN缓存-反向代理缓存-本地缓存/// 2 本地缓存原理和手写基础实现/// 3 缓存更新/过期/多线程测试 /// 4 缓存类库封装和缓存应用总结 /// </summary>/// <param name="args"></param&…...

可信网站认证收费吗/怎么快速推广app

hdu2098很水的题&#xff0c;但是自己用的是筛子法&#xff0c;但是自己想到惠超市了饿&#xff0c;还执意放到上面ac思路很简单&#xff0c;简单来说就是从1到n-1然后到n-1/2到n-1/2,因此正好一半&#xff0c;因此/2,然后验证是否为素数就行了&#xff0c;因此&#xff0c;验证…...