华为二面,原来是我对自动化测试的理解太肤浅了..

news/2024/5/20 4:45:12/文章来源:https://blog.csdn.net/kk_lzvvkpj/article/details/128334056

如何使用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自动化详细资料、全套面试题等知识内容。

对于软件测试的的朋友来说应该是最全面最完整的面试备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你!资料我都放在下方小卡片里,有需要的可以点击免费领取! 

 

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

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

相关文章

事业编招聘:南方科技大学附属实验学校2022年·面向应届毕业生招聘在编教师公告

南方科技大学是在中国高等教育改革发展背景下创建的一所高起点公办创新型大学,2022年2月14日,教育部等三部委公布第二轮“双一流”建设高校及建设学科名单,南方科技大学入选“双一流”建设高校名单。 南方科技大学附属实验学校,地…

大学生静态HTML网页源码 我的校园网页设计成品 学校班级网页制作模板 web课程设计 dreamweaver网页作业

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)

📌 博客主页: 程序员二黑 📌 专注于软件测试领域相关技术实践和思考,持续分享自动化软件测试开发干货知识! 📌 公号同名,欢迎加入我的测试交流群,我们一起交流学习! 目录…

艾美捷CpG ODN——ODN 1720 (TLRGRADE)说明书

艾美捷CpG ODN系列——ODN 1720 (TLRGRADE):具有硫代磷酸酯骨架的GpC寡脱氧核苷酸。 艾美捷CpG ODN 丨ODN 1720 (TLRGRADE)化学性质: 序列:5-tccatgagcttcctgatgct-3(小写字母表示硫代磷酸酯键)。 MW:638…

MySQL -2 指令

客户端SQL指令记录: -- 针对 数据库和针对数据表 (一)数据库 1. 查看当前所有数据库:show databases; 2. 创建数据库:create database 数据库名 DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 3. 删除数据库&#…

微信公众号开发——实现用户微信网页授权流程

😊 作者: 一恍过去💖 主页: https://blog.csdn.net/zhuocailing3390🎊 社区: Java技术栈交流🎉 主题: 微信公众号开发——实现用户微信网页授权流程⏱️ 创作时间: …

哈希表及其与Java类集的关系

目录 1.哈希表的概念 2.哈希冲突 3.如何避免哈希冲突? 3.1哈希函数设计 3.2 负载因子的调节 4.解决哈希冲突 4.1闭散列 4.1.1线性探测 4.1.2二次探测 4.2开散列(哈希桶) 5.HashMap 6.HashSet 1.哈希表的概念 假设有一组数据,要让你去搜索其中的一个关键码,这种场…

嵌入式软件工程师技能树——Linux应用编程+网络编程+驱动开发+操作系统+计算机网络

文章目录Linux驱动开发1、Linux内核组成2、用户空间与内核的通讯方式有哪些?3、系统调用read/write流程4、内核态用户态的区别5、bootloader内核 根文件的关系6、BootLoader的作用7、BootLoader两个启动阶段1、汇编实现,完成依赖于CPU体系架构的设置&…

异常检测方法总结

在数据挖掘中,异常检测(英语:anomaly detection)对不匹配预期模式或数据集中其他项目的项目、事件或观测值的识别。 通常异常项目会转变成银行欺诈、结构缺陷、医疗问题、文本错误等类型的问题。异常也被称为离群值、新奇、噪声、…

[Android移动安全渗透基础教程] 易受攻击的移动应用程序

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 0x01 如何设置 GoatDroid (FourGoats) 1.1 简介(概述&#…

第十四届蓝桥杯集训——JavaC组第十三篇——for循环

第十四届蓝桥杯集训——JavaC组第十三篇——for循环 目录 第十四届蓝桥杯集训——JavaC组第十三篇——for循环 for循环(重点) 倒序迭代器 for循环死循环 for循环示例 暴力循环 等差数列求和公式 基础循环展开 循环控制语句 break结束 continue继续 for循环(重点) f…

MySQL主从复制太慢,怎么办?

本文分析了MySQL主从延迟的原因以及介绍了MTS方案。点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达mysql主从同步延迟原因导致备库延迟的原因主要有如下几种:通常备库所在机器的性能要比主库所在的机器性能差,执行…

nodejs092学生考勤请假管理系统vue

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.3 B/S结构 4 2.4 MySQL数据库 4 前端技术:nodejsvueelementui 前端:HTML5,CSS3、JavaScript、VUE 系统…

ChatGpt详细注册流程

ChatGpt详细注册流程ChatGpt的网址:直接点击我 点击链接后向下滑动看到TRY CHATGPT如下图所示: 点击TRY CHATGPT后会跳转如下图界面: 点击Log in(登录)如下图: 因为首次登录你肯定是没有账号的所以需要先点击红框框出的Sign up…

七个步骤覆盖 API 接口测试

接口测试作为最常用的集成测试方法的一部分,通过直接调用被测试的接口来确定系统在功能性、可靠性、安全性和性能方面是否能达到预期,有些情况是功能测试无法覆盖的,所以接口测试是非常必要的。首先需要对接口测试的基本信息做一些了解&#…

Java+Swing实现的五子棋游戏

JavaSwing实现的五子棋游戏一、系统介绍二、功能展示1.游戏展示三、系统实现1.ChessFrame .java四、其它1.其他系统实现2.获取源码一、系统介绍 五子棋游戏实现人机对战、人人对战两个模式。 二、功能展示 1.游戏展示 三、系统实现 1.ChessFrame .java package five;impor…

JDK的使用——Java开发第一步

JDK的使用——Java开发第一步 1 什么是JDK JDK是 Java 语言的软件开发工具包,是整个java开发的核心,使用Java开发第一步就是要在计算机上安装JDK。 JDK主要包含三个部分: 1 JAVA开发工具(jdk\bin) 2 基础开发库(jdk\jre\lib) 3 基础开发库…

java TCP发送数据

TCP是一种可靠的网络协议 他在通信的两端都建立了Socke对象 从而形成了两端的虚拟链路 一旦建立了虚拟链路 两端就可以通过链路通信 TCP会将通信两端分为 客户端和服务端 客户端通过Socke实现 服务端通过ServerSocke实现 那么 我们就来实现一下发送数据的方法 我们创建一个测…

【C语言数据结构(基础版)】第三站:链表(二)

目录 一、单链表的缺陷以及双向链表的引入 1.单链表的缺陷 2.双向链表的引入 3.八大链表结构 (1)单向和双向 (2)带头和不带头 (3)循环和不循环 (4)八种链表结构 二、带头双向…

web网页设计期末课程大作业:美食餐饮文化主题网站设计——HTML+CSS+JavaScript美食餐厅网站设计与实现 11页面

👨‍🎓静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的…