自动化测试之争:code vs codeless

在TesterHome看到的一个话题,当我们选择做自动化时是否需要code 或者codeless。

code方案

用code去做自动化,实现过程就是拿个IDE撸代码。

  • python + pytest/unittest + appium/selenium/requests + ...

  • Java + Junit/testNG + appium/selenium/requests + ...

codeless工具

用codeless的方式做自动化,就是各种测试工具/框架方案,几乎可以不碰代码。

  • JMeter
  • postman
  • UFT
  • 基于各种开源/自研的测试平台

混搭框架/库

在实际情况下,可能会出现很多混搭的方案。

  • Sweetest

比如,你写好了一个脚本用于解析excel中的自动化用例,如果脚本做的足够强大,那么编写用例的过程是面向excel的。Sweetest就是提供了这种方案。

  • seldom

比如,实现用例的过程主要通过code编写,偶尔需要读取excel实现参数化,脚本中实现了excel的解析,可以很方便的解析excel中的数据并用于用例的参数化,Seldom就提供了这种能力。

  • Robot framework

Robot framework编写用例不需要写代码,但要学一套DSL(领域特定语言),当需要为Robot Fremework封装个Library时,需要用到Python。

  • HttpRunner

HttpRunner2.x以JSON/YAML编写用例为主,偶尔用python写辅助函数,HttpRunner3.x 支持完全code。

当然,混搭技术/框架还有很多。

观点

我下个人观点,鼓励code,但不反对codeless。

鼓励code

为什么鼓励code,因为我是code的收益者。我真正开始学习编程并做自动化是在工作的第三年,很多同学刚做测试就开始code了,这一点比我厉害。那么,code带来什么好处呢?

  1. 编写的自动化用例更加灵活,想想写自动化的时候需要循环的执行一些操作,或根据某个条件判断执行,或者想随机的生成一些测试数据,工具要么不能满足,要么需要扩展,要么需要用更加繁杂的操作才能满足。对于coder者来说,只要你编程能力OK,一切需求都不是问题。

直接好处就这么一条,接下说说间接好处。

  1. 变得更加自信。有同学要说了,不就写个代码嘛,还写出优越感了。整个IT圈子还是崇尚技术的(说是我粉丝的人难道是因为我长的帅?哈哈),虽然,最终效率一样,因为你用了更难的方式做自动化测试,确实看上去更厉害一点儿。我有一个做了十几年开发的朋友,他一直觉得我会做自化是很厉害的技能。如果你做的是有一些门槛的工作,那么,你的自信就是在别人的不断肯定中建立起来的。

写写自动化只是入了code门而已,真正的好处是为你打开了编程的大门。

  1. 随着自动化用例越写越多,会给你带两个提升,一个是编程水平的提升,封装、设计模式,多线程,越写越高级。二是学会了很多库,ddt库、发邮件库、allure库。会的更多之后,你会尝试在工作中用编程提升自己的测试效率。我以前在测业务需求的时候也会开一个编辑器,时不时的要用Python计算一下数据或者批量的跑一下脚本。

更大的好处是涨工资。

  1. 谈钱就俗了,那你要不是交房租,要不要还房贷,要不要养老人和小孩。我们总有生活压力,那面试的时候,肯定技术好同学更能要到高薪,为什么要技术好的?code能力强的,招进来又不一定做自动化。你要知道,技术好其实代表了你学习能力更强。说明你可以承担更多有挑战的工作。谁不喜欢优秀的人呢?

如果在编程的世界遨游,你会收获更多。

  1. 比如,当我略懂Android/Flutter、Web开发之后,在测试这类应用时,我会对被测系统有更深的理解,在日常的测试过程中具备更强的debug能力,和开发交流更顺畅,能够推测出更多潜在bug。

不反对codeless

既然code好处多多,为什么不反对codeless?

  1. 某些场景工具更好用,比如,在日常调试接口过程中,复制浏览器的cURL,导入postman非常方便,再比如,压测接口的时候,JMeter真香啊~!

  2. 在一个code能力不强的测试团队,强推人人code是不现实,不是每个公司都BAT/TMD,我面过很多公司测试,他们待的测试团队只有几个人,甚至一两个人,就因为不会code,难道就不配碰自动化?既然有codeless工具,干嘛不先拿来直接用。总比什么都不做,什么都不会强太多了吧!

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

go测试库之apitest

前言 使用go语言做开发差不多快一年了,主要用来写后端Web服务,从一开始吐槽他的结构体,比如创建个复杂的JSON格式数据,那是相当的痛苦。还有 err 处理写的巨麻烦。 当然,go 也有爽的地方,创建个线协程简直…

Compose-Multiplatform在Android和iOS上的实践

本文字数:4680字 预计阅读时间:30分钟 01 简介 之前我们探讨过KMM,即Kotlin Multiplatform Mobile,是Kotlin发布的移动端跨平台框架。当时的结论是KMM提倡将共有的逻辑部分抽出,由KMM封装成Android(Kotlin/JVM)的aar和…

Spring Cloud分布式缓存

目录 单点Redis Redis数据持久化 RDB持久化 bgsave细节 RDB的缺点 AOF持久化 AOF的问题 RDB与AOF对比 搭建Redis主从架构 数据同步原理 全量同步 增量同步 主从同步优化 Redis哨兵 集群检测 选举主节点 故障转移 搭建哨兵集群 RedisTemplate的哨兵模式 单点…

ConcurrentHashMap是如何实现线程安全的

目录 原理: 初始化数据结构时的线程安全 put 操作时的线程安全 原理: 多段锁cassynchronize 初始化数据结构时的线程安全 在 JDK 1.8 中,初始化 ConcurrentHashMap 的时候这个 Node[] 数组是还未初始化的,会等到第一次 put() 方…

【Java】三种方案实现 Redis 分布式锁

序言 setnx、Redisson、RedLock 都可以实现分布式锁&#xff0c;从易到难得排序为&#xff1a;setnx < Redisson < RedLock。一般情况下&#xff0c;直接使用 Redisson 就可以啦&#xff0c;有很多逻辑框架的作者都已经考虑到了。 方案一&#xff1a;setnx 1.1、简单实…

PDF 表单直接保存到您的文档中--TX Text Control

TX Text Control .NET Server for ASP.NET Document Viewer 32.0.2 允许用户保存包含已填写表单字段的文档&#xff0c;从而更轻松地协作和共享信息。 TX Text Control .NET Server for ASP.NET 是一个适用于 ASP.NET 和 ASP.NET Core 的综合服务器端文档处理库。功能包括 PDF …

程序员笔记本电脑选 windows 还是 MAC

计算机选择是每个进入 IT 行业同学的第一个重要选择&#xff0c;那么你是怎么选择的呢&#xff1f; 选择操作系统&#xff08;Windows还是macOS&#xff09;取决于程序员的需求、偏好和工作流程。每个操作系统都有其优点和缺点&#xff0c;下面将分别讨论它们&#xff0c;以帮助…

volatile-无原子性案例详解

package com.nanjing.gulimall.zhouyimo.controller;import java.util.concurrent.TimeUnit;/*** author zhou* version 1.0* date 2023/11/5 7:56 下午*/ class MyNumber{int number;public synchronized void add(){number;} } public class VolatileNoAtomicDemo {public st…

gcc -static 在centos stream8 和centos stream9中运行报错的解决办法

gcc -static 在centos stream8 和centos stream9中运行报错的解决办法&#xff1a; 报/usr/bin/ld: cannot find -lc 我们下载glibc-static&#xff1a; 选择x86_64的。 还有一个是libxcrypt-static&#xff0c;依旧在这个网站里搜。 rpm -ivh glibc-static-2.28-239.el8.x…

排序——冒泡排序

冒泡排序的基本思想 从前往后&#xff08;或从后往前&#xff09;两两比较相邻元素的值&#xff0c;若为逆序&#xff08;即 A [ i − 1 ] < A [ i ] A\left [ i-1\right ]<A\left [ i\right ] A[i−1]<A[i]&#xff09;&#xff0c;则交换它们&#xff0c;直到序列…

【Linux】多路IO复用技术③——epoll详解如何使用epoll模型实现简易的一对多服务器(附图解与代码实现)

在正式阅读本篇博客之前&#xff0c;建议大家先按顺序把下面这两篇博客看一下&#xff0c;否则直接来看这篇博客的话估计很难搞懂 多路IO复用技术①——select详解&如何使用select模型在本地主机实现简易的一对多服务器http://t.csdnimg.cn/BiBib多路IO复用技术②——poll…

Web3游戏的十字路口:沿用传统IP还是另起炉灶?

人们经常问我对 Web3 游戏有什么看法。因此&#xff0c;我想以书面形式概述一下我目前的想法。 让我先澄清一下&#xff1a;我不是专家。这不是一篇深入探讨游戏世界精细指标如 MAU 或 D14 等的全面分析。请把这看作是我根据个人交流和研究&#xff0c;这反映我在游戏领域关注…

java代码检查

目录 jacoco 引入依赖 构建配置修改 单元测试 生成报告 查看报告 报告说明 1. Instructions 2. Branches 3. Cyclomatic Complexity 4. Lines 5. Methods 6. Classes sonar7.7 基础环境 需要下载软件 解压文件并配置 运行启动 jacoco 引入依赖 <dep…

jenkins安装以及基本配置

一、docker 1.安装docker 联网安装命令如下 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun或者也可以使用国内 daocloud 一键安装命令&#xff1a; curl -sSL https://get.daocloud.io/docker | sh2.启动docker systemctl start docker二、docker…

pycharm更改远程服务器地址

一、问题描述 在运行一些项目时&#xff0c;我们常需要在pycharm中连接远程服务器&#xff0c;但万一远程服务器的ip发生了变化&#xff0c;该如何修改呢&#xff1f;我们在file-settings-python interpreter中找到远程服务器&#xff0c;但是发现ip是灰色的&#xff0c;没有办…

Azure 机器学习 - 使用 Visual Studio Code训练图像分类 TensorFlow 模型

了解如何使用 TensorFlow 和 Azure 机器学习 Visual Studio Code 扩展训练图像分类模型来识别手写数字。 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕&#xff0c;复旦机器人智能实验室成员…

curl(七)上传和下载

一 上传 ① -T | --upload 上传 ​1、向ftp服务器 传一个文件&#xff1a;curl -T localfile -u name&#xff1a;passwd ftp://upload_site&#xff1a;port/path/2、向http服务器上传文件curl -T localfile http://www.wzj.com/wzj.html注意: 这时候使用的协议是HTTP的PUT…

基于STM32设计的室内环境监测系统(华为云IOT)_2023

一、设计需求 基于STM32+华为云物联网平台设计一个室内环境监测系统,以STM32系列单片机为主控器件,采集室内温湿度、空气质量、光照强度等环境参数,将采集的数据结果在本地通过LCD屏幕显示,同时上传到华为云平台并将上传的数据在Android移动端能够实时显示、查看。 【1…

5.数据表基本操作

目录 1.创建数据表 创建数据表的语法格式&#xff1a; 查看当前数据库的表&#xff1a; 主键 1.单字段主键 (1)在定义列的同时指定主键&#xff0c;语法规则如下&#xff1a; (2)在定义完所有列之后指定主键。 2.多字段联合主键 外键&#xff1a; 非空约束&#xff1…

react_11

MobX 介绍 需求&#xff0c;组件0 改变了数据&#xff0c;其它组件也想获得改变后的数据&#xff0c;如图所示 这种多个组件之间要共享状态数据&#xff0c;useState 就不够用了&#xff0c;useContext 也不好用了 能够和 react 配合使用的状态管理库有 MobX Redux 其中…