你好,我是测试蔡坨坨。

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

前言

自动化测试,这几年行业内的热词,也是测试人员进阶的必备技能,更是软件测试未来发展的趋势。特别是在敏捷开发模式下,产品迭代速度快,市场不断调整,客户需求不断变化,单纯的手工测试越来越无法适应整个过程。测试人员如何快速响应并保证产品在上线后的质量能够满足客户要求,如何在上线一个新功能的同时快速对旧功能进行回归,保证旧功能不被新功能影响而出现严重的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性能较差,也不耽误我们做自动化测试。

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

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

做自动化测试选择Python还是Java?的更多相关文章

  1. 【职业规划】该如何选择职业方向?性能?自动化?测开?,学习选择python、java?看完你会感谢我的~

    前言 随着近两年来互联网行业的飞速发展,互联网技术的从业人员也越来越多. 近两年来技术岗位中测试和前端工程师变成了程序员中最好招的岗位. 测试行业卷也越来越厉害了. 也正是因为如此,我们要把自己的路越 ...

  2. 测试工程师,选择python还是java?

    问:“你平时工作中,用java多还是用python多”? 答:“都还可以,根据具体的场景选择不同的语言”. 问:“比如说呢”? 答:“开发自己的测试平台,肯定会选择java:在centos服务器跑一些 ...

  3. paip.web数据绑定 下拉框的api设计 选择框 uapi python .net java swing jsf总结

    paip.web数据绑定 下拉框的api设计 选择框 uapi  python .net java swing jsf总结 ====总结: 数据绑定下拉框,Uapi 1.最好的是默认绑定..Map(k ...

  4. 在做自动化测试之前你需要知道的,转自:http://www.cnblogs.com/fnng/p/3653793.html

    什么是自动化测? 做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多.一直想动笔写一篇文章分享自动化测试实践中的一些经验.终于决定花点时间来做这件事儿. 首先理清自动化测试的概念 ...

  5. React++ node.js ++SQL Sever ++MySQL++ python ++ php ++ java ++ c++ c#++ java ++ android ++ ios ++Linux+

    "C语言在它诞生的那个年代,是非常不错的语言,可惜没有OOP.当项目臃肿到一定程度,人类就不可控了. 为了弥补这个缺陷,C++诞生了.而为了应对各种情况,C++设计的大而全,太多复杂的特性, ...

  6. python 调用java脚本的加密(没试过,先记录在此)

    http://lemfix.com/topics/344 前言 自动化测试应用越来越多了,尤其是接口自动化测试. 在接口测试数据传递方面,很多公司都会选择对请求数据进行加密处理. 而目前为主,大部分公 ...

  7. 测试的Python、 Java语言之争

    现在测试行业如果不会开发语言的话是很难找到工作的,即使是一些功能测试的岗位也会要求代码语言作为技术储备,因为如果做自动化测试或者测试工具脚本开发或者接口测试等都离不开开发语言,那作为测试如果没有代码经 ...

  8. python学完可以做什么?Python就业方向最全面的解析

    乔布斯说过:“每一个人都应该学习如何编程,因为编程会教会你如何思考.”下一个时代是人机交互的时代,学习编程不是要让你成为程序员,而让你理解这个时代. 点击免费领取:全网最全python学习导图+14张 ...

  9. ASP.NET Core 性能对比评测(ASP.NET,Python,Java,NodeJS)

    前言 性能是我们日常生活中经常接触到的一个词语,更好的性能意味着能给我们带来更好的用户体检.比如我们在购买手机.显卡.CPU等的时候,可能会更加的关注于这样指标,所以本篇就来做一个性能评测. 性能也一 ...

随机推荐

  1. 李呈祥:bilibili在湖仓一体查询加速上的实践与探索

    导读: 本文主要介绍哔哩哔哩在数据湖与数据仓库一体架构下,探索查询加速以及索引增强的一些实践.主要内容包括: 什么是湖仓一体架构 哔哩哔哩目前的湖仓一体架构 湖仓一体架构下,数据的排序组织优化 湖仓一 ...

  2. Python中的逻辑表达式

    首先要明确一点,Python的逻辑运算符,可以用来操作任何类型的表达式(不局限于Bool类型),且运算后的结果也不一定是Bool类型的,而是其左右其中一个表达式的值 表达式1 and 表达式2 pyt ...

  3. 3D还原货拉拉女孩身亡真相,这一环值得反思!

    货拉拉女孩跳车身亡的消息,让人惋惜又震惊.司机多次偏离原始路线,女孩最终选择跳车,结果不幸身亡. 货拉拉女孩跳车真相被3D还原 有人质疑平台监管不力,造成如此惨剧,有人吐槽企业压榨员工,司机绕路是不得 ...

  4. js 表面使用 表面学习 -输出

    JavaScript 能够以不同方式"显示"数据: 使用 window.alert() 写入警告框 使用 document.write() 写入 HTML 输出 使用 innerH ...

  5. UiPath循环活动While的介绍和使用

    一.While循环的介绍 先判断条件是否满足, 如果满足, 再执行循环体, 直到判断条件不满足,则跳出循环 二.While循环在UiPath中的使用 1. 打开设计器,在设计库中新建一个Flowcha ...

  6. python+requests+yaml实现接口自动化用例(二)---升级版

    一.前言:前面一段时间封装的接口自动化测试框架用了一段时间发现还是有很多弊端的,目前又改良了一下,可以说整体思路全都推翻了,功能比之前强大许多,有兴趣的可以私信我单独交流,希望共同学习进步! 二.项目 ...

  7. OptaPlanner 发展方向与问题

    ​ 最近一段时间,因为忙于[易排(EasyPlan)规划平台]的设计与开发工作,平台的一些功能设计,需要对OptaPlanner的各种特性作更深入的研究与应用.慢慢发现,OptaPlanner进入8. ...

  8. python 异常捕捉与异常处理

    简介 在实际开发中,为了防止异常界面直接被用户看到,往往我们会采用捕捉异常的方式来进一步处理异常. 异常捕捉 如下代码由于下标越界会导致异常 data = range(10) print(data[1 ...

  9. websocket、socket、http对比

    简介 在之前的理解中,讲述了socket.websocket等相关的理解,本文就socket.websocket.http理解一下其对应的联系和区别. HTTP 协议 http 为短连接:客户端发送请 ...

  10. 从零开始Blazor Server(3)--添加cookie授权

    认证方式简述 Blazor Server微软官方还是推荐直接使用Cookie授权,因为本来Blazor Server就是前后端不分离的.不存在Cookie跨域等一系列问题. 只要不是使用SSO之类的统 ...