做自动化测试选择Python还是Java?

news/2024/4/24 22:48:01/文章来源:https://www.cnblogs.com/caituotuo/p/16633612.html

你好,我是测试蔡坨坨。

今天,我们来聊一聊测试人员想要进阶,想要做自动化测试,甚至测试开发,如何选择编程语言。

前言

自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发展的趋势。特别是在敏捷开发模式下,产品迭代速度快,市场不断调整,客户需求不断变化,单纯的手工测试越来越无法适应整个过程。测试人员如何快速响应并保证产品在上线后的质量能够满足客户要求,如何在上线一个新功能的同时快速对旧功能进行回归,保证旧功能不被新功能影响而出现严重的Bug。针对以上问题,采用自动化测试无疑是一个不错的选择,能够做到在保证产品质量的同时提升测试效率。

那么,学习一门编程语言必不可少,同时,学习一门编程语言也是你成为自动化测试工程师乃至测试开发工程师的基本准入门槛。目前,市面上的编程语言五花八门,比如:很多人大学时学过的面向过程C语言,C语言的扩展升级C++,面向对象语言Java或者Python,.NET开发和游戏开发常用的C#语言,当时号称世界上最好的语言PHP,更为方便的脚本语言Shell,以及近些年很火的Golang语言等。基本上能叫上名字的语言都能做自动化。

Java VS Python

对于测试行业来说,绝大多数从业者都会选择两门语言来学习,就是Java和Python。企业里面做自动化测试大多数也是选择这两门语言,并且很多培训班也会选择这两门语言作为主语言进行教学,比如各种Python/Java全栈自动化测试,因此网上的学习资源也是比较多的,方便我们自学。

那么,自动化语言选择Java还是Python呢?

首先,语言本身无优劣,只不过是一种工具手段而已,无论是Java还是Python都能做自动化测试,没有最好的语言,只有最合适的语言,不能简单的说哪门语言好哪门语言不行,而要基于实际应用场景进行分析。

测试行业学习编程语言的用途主要是用来做自动化测试,比如Python技术栈会使用Requests、Unittest/Pytest等框架结合公司业务实现一套覆盖公司系统绝大部分接口的自动化测试框架,然后做持续集成,例如将代码部署到Jenkins,每天定时执行,并将测试报告发送到邮箱,以及上线前的回归测试等。这样做的目的主要是用来监控哪些接口服务或者环境挂了,以及版本迭代过程中上了新功能、修改了代码可能影响关联到其他接口导致异常发生,所以上线前要把系统或者模块的接口自动跑一遍,以便于测试人员第一时间发现问题,并交给开发人员进行修复解决,减少线上Bug率。

学习编程语言还可以编写一些测试工具来提高整个测试团队的工作效率。比如造大量的测试数据,就可以写个循环自动执行。毕竟提高效率也是我们的工作职责之一。

如果你是刚入行软件测试并且之前没有编程经验,那么毫无疑问就选择Python,因为它上手特别快,整个功能也是非常强大的,通过简单代码就能实现很多实用的功能,有强大的标准库以及非常丰富的第三方库,能够辅助你去做UI、接口等自动化测试。不建议新人同时学习两门语言,这样会导致每个都是浅尝辄止,反而不利于深入学习。其次,编程思维和解决问题的思路都是相通的,当你熟悉掌握一门语言时,也能快速掌握另一门语言。

对于有编程基础的同学,可以选择Java进行学习。Java语言难度系数较高,更有挑战性;Java在企业的应用比较广泛,处于龙头老大的地位,适合中大型项目,性能较好,执行速度较快,适合高并发场景;很多服务端开发人员都使用Java,如果你也使用Java,大家就是同一类人,有更多的共同语言,可以很好地和开发进行无缝衔接,便于交流,减少沟通成本。甚至可以拿开发代码进行学习,参与CodeReview,进一步加深对业务的理解,也有利于之后测试过程中进行问题的定位,以及从代码逻辑的角度发现更多的缺陷。

除此之外,根据公司使用的自动化语言进行学习,比如之前已经有自动化用的Python,且组内大部分人技术栈都是Python,这时你就可以选择Python,学完可以马上应用到实际项目中,增加实战经验,遇到自己解决不了的问题也能够一起讨论交流。

Java和Python自动化测试技术栈对比:

Python Java
接口自动化测试 Python+Requests+Unittest/Pytest+HTMLTestRunner/Allure Java+HttpClient/OKHttp+TestNG
Web自动化测试 Python+Selenium++Unittest/Pytest+HTMLTestRunner/Allure Java+Selenium+TestNG
App自动化测试 Python+Appium++Unittest/Pytest+HTMLTestRunner/Allure Java+Appium+TestNG
测试平台 Python+Django/Flask Java+SpringBoot+MyBatis

总结

两门语言,不管是Java还是Python,都能做自动化测试,如果非要从中选择一种,我更倾向于Python,也推荐初学者从Python入手,主要有两点原因:第一,自动化测试的目的是为了提升测试效率,将更多重复繁琐的工作交给程序自动执行,我们就有更多的时间去测试那些新功能,毕竟手工测试是发现Bug最快和最多的一种途径,自动化的本质还是测试,Python语法相比于Java来说更加简洁,可能Java要写十行,Python只需要两行,如果选择Java可能就需要花更多的时间去编写自动化脚本,而Python所花费的时间会少一些,正如Python的格言所说“Life is short,use python!”人生苦短,我用Python;第二,自动化测试脚本或测试平台一般是内部使用,使用的人数一般比较少,不会涉及高并发这种场景,即使Python性能较差,也不耽误我们做自动化测试。

当然了,同时掌握两门语言再好不过了,正所谓“兵来将挡,水来土掩”,两者都会,无论企业中选择哪门语言做自动化,你都可以快速上手,也是自身能力的体现。

最后,说这么多,最重要的是要行动起来,多写多练,日积月累,自然会如鱼得水,真正把自动化测试在企业中落地,带来对应的效率和质量保障方面的提升。

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

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

相关文章

Linux修改主机静态IP

通过VIM编辑器打开主机配置文件夹vim /etc/sysconfig/network-scripts/ifcfg-ens33修改IP地址为静态地址BOOTPROTO="static"添加静态IP地址和网关IP 地址 IPADDR=192.168.244.100 网关 GATEWAY=192.168.244.2 域名解析器 DNS1=192.168.244.2网络重启service network …

点击按钮收藏

分析 后台代码RouteServlet类:/*** 添加收藏* @param request* @param response* @throws ServletException* @throws IOException*/public void addFavorite(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1、获取线…

前端5JQ

js获取用户输入 JS类属性操作 JS样式操作 事件 JS事件案例 JQuery类库 JQuery基本使用 基本筛选器(了解) 表单筛选器Js获取用户输入 普通数据(输入,选择) ​ 标签对象.value 获取文件数据的时候: 标签对象.value只能获取到文件路径,而标签对象.files结果是一个数组,可以通…

前端Day10

视口(viewport):浏览器显示页面内容的屏幕区域。分为布局视口、视觉视口、理想视口。 布局视口: 视觉视口: 理想视口: meta视口标签: width=device-width:布局视口宽度为当前设备宽度* user-scalable=no:不允许用户缩放 二倍图: 1.物理像素比: ①物理像素:即分辨…

分布式系统的session共享问题

目前大多数大型网站的服务器都采用了分布式服务集群的部署方式。所谓集群,就是让一组计算机服务器协同工作,解决大并发,大数据量瓶颈问题。但是在服务集群中,session共享往往是一个比较头疼的问题。因为session是在服务器端保存的,如果用户跳转到其他服务器的话,session就…

网络network

网络network 基础network模型 OSI七层模型,一层一层封装数据帧(添加报文头),传过去之后再一层一层解封装(解封装掉报文头) 应用层:应用软件层面业务端口,例如http/https,ftp,sftp,smtp(25),除了在四层TCP IP+端口号的方式进行外,还需要检查http/https的url,cook…

python中的多线程与多进程

线程概念: 线程也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位。 线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一…

从设计到代码(第 3 天)

从设计到代码(第 3 天) 我最近正在开发一门课程,名为 三周内完成三个网页设计 .最初它是一个为期 3 周的研讨会材料,旨在成为一个包含许多实践的动手密集型研讨会。主要目标是教没有太多开发经验的人使用 HTML 和 CSS 来重现专业的设计模型——这就是为什么它被称为从设计到…

力扣507(java)-完美数(简单)

题目: 对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。 给定一个 整数 n, 如果是完美数,返回 true;否则返回 false。示例 1: 输入:num = 28输出:true解释:28 = 1 + 2 + 4 + 7 + 141, 2, 4, 7和 14 是 28 的所有正因子。示例 …

仅Intel电脑可用:设计2D/3D文档绘图Autodesk AutoCAD 2021

Autodesk AutoCAD 2021是Mac上的二维和三维CAD设计软件,用于产品衍生式设计,创建设计方案,三维模型参数化,建模部件组织,创建制作清晰工程图,设计自动化配置等,AutoCAD 2021增强了针对草图的命令设计,简化流程,改进各种性能,转化探索更强大的设计。​编辑切换为居中 …

Echarts与ajax数据的动态交互

初学Echarts,Echarts的官网示例中配置项的数据需要用到js数组来传递数据,所以当我们从后端查询到数据后,往往需要通过ajax来进行数据交互。 这是官方示例的配置项。<script type="text/javascript">// 基于准备好的dom,初始化echarts实例var myChart = ech…

Openwrt 纯ipv6环境管理和上网

防火墙打开远程管理端口 添加端口如22或者使用ipv6端口转发到ipv4 使用socat opkg install socat图形化界面: drophair / luci-app-socatg wget -P /tmp https://github.com/big-tooth/luci-app-socatg/releases/download/v1.1/luci-app-socatg_1.1-1_all.ipk opkg install /tm…

c++ :虚拟机centos7+vscode

c++ :虚拟机centos7+vscodegcc、g++、make查看是否安装成功 $ gcc --version $ g++ --version $ make --version哪个没有,就yum install gcc-c++/yum install gcc/yum install make yum报错 "Failed to connect to 2001:da8:8000:6023::230: 网络不可达":参考链接…

最大正方形

问题:在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。 输入:matrix = [["1","0","1","0","0"],["1","0","1","1","1"],["1"…

图解AspNetCore和Furion(1):应用启动

一、和AspNetCore5相比,从6开始,将Program和Startup类合并,直接在入口类中启动服务和中间件。同时,项目可以启动miniApi,直接在Program中设置路由和控制器。实际项目中,还是推荐使用控制器的方式。 二、Furion定义了静态类Serve,对AspNetCore的启动类进行了封装,同时支…

leetcode-172. 阶乘后的零

172. 阶乘后的零 图床:blogimg/刷题记录/leetcode/172/ 刷题代码汇总:https://www.cnblogs.com/geaming/p/16428234.html 题目思路 n!中有几个0与[1,n]中出现多少个5的因数有关。例如7! = 1234567出现了1次5,故最后末尾会出现1个0。26!中出现了5,10,15,20,25其中5的个数为1+…

java内部类

一、基本介绍 一个类的内部又完整的嵌套了另一个类结构。被嵌套的类称为内部类(inner class),嵌套其他类的类称为外部类(outer class)。是我们类的第五大成员 类的五大成员:属性、方法、构造器、代码块、内部类 内部类最大的特点就是可以直接访问私有属性,并且可以体现类…

redis主从数据同步原理

what:redis高可用:1、数据尽量不丢失;2、尽可能的提供服务;栗子:AOF 和 RDB 保证了数据持久化尽量不丢失;主从复制就是增加副本,一份数据保存到多个实例上。即使有一个实例宕机,其他实例依然可以持续服务;主从:复制——为单向的,即:只能从主复制到从;读写指责——…

Linux驱动开发十六.input系统——2.input_event

我们上一章完成了input子系统的设备构成,并且在用户空间通过hexdump命令拿到了一堆不知道是什么的信息。今天我们就要借助input_event这个结构体来了解内核怎么通过那个结构体了解输入事件。 可能有心人已经发现了,上一章我们在加载完模块以后在/dev/input路径下生成了一个新…

(0828)【vivado版本-对仿真工具版本要求】

(1)https://blog.csdn.net/Alonger1988/article/details/120506385 vivado,vsim版本兼容问题 (2)版本匹配:http://dengkanwen.com/567.html