字节8年测试开发工程师感悟,说说我们自动化测试平台的进阶之路

news2024/11/23 11:38:07

前言

自2015年10月底加入Pactera Edge以来,我一直服务于客户的Quality Engineering项目。这之间经历了很多的技术变革,包括探索,实施,维护,淘汰等一整个流程。下面就写一下项目中 UTAP(unified testing automation platform)的演进之路。

一开始进入项目接触的是ruby + cucumber的web UI 自动化测试框架,客户的大部分项目的UI自动化测试都集成在这个框架里,但是因为代码越来越庞大,维护起来越来越不方便,而且当时是用jenkins串行执行test suit,400多个Jenkins job跑在25个以上的jenkins 实例上,跑一次release大约需要2到3个小时的时间。这种方案非常的费时费力。

为了解决串行跑case费时费力的问题,我们引入了distributed automation(后面我们简称DA),使用的技术栈是selenium2 + AWS, 用户只需要从jenkins build传入需要使用的浏览器类型、需要跑的case个数就可以并行的跑test suit里的case,这样大大缩短了跑case的时间,每次build基本都在半个小时左右就可以跑完所有的case。

有了DA,可以并行跑case之后,很多项目的开发人员又提出了一个比较费力的问题,那就是项目的产品是用java写的。工程师大多是java出身,对ruby + cucumber的自动化测试框架上手很慢,所以我们就开发了scala + scalatest web UI自动化测试框架,scala也是跑在JVM上的,可以跟Java无缝衔接,所以java开发人员很容易上手。这在一段时间里解决了开发人员写自动化测试脚本的问题。但是scala + scalatest写web UI autmation还是太笨重,后来我们又开发了其他的自动化测试框架,比如nightwatch + cucumber, cypress,以及 java+selenium这个很多开发团队自己选择并且开发的web UI autmation 方式。

解决了并行跑case和自动化测试框架可以多样化的问题后,为了方便开发及测试人员分析失败的自动化测是case,我们又开发了基于nodejs express的dashboard 在自动化测试框架里跑完case后,我们会把report存进mongo db里,这样用户跑完一个build,不再只能在jenkins里分析失败的case,而是可以在我们开发的DA dashboard上一目了然的查看这个build总共跑了多少case,多少成功了,多少失败了,多少skip了;失败的case的html report和截图以及splunk log等等都可以很方便的查看。

至此,用户跑和分析automation的工具基本齐备,有很长一段时间很多用户都在使用这套工具。

但是这套工具还是存在一些问题:一是DA是用的AWS的ec2作为hub和node来跑case,而hub的创建和启动是需要挺长时间的,所以DA的解决方案里是创建好hub后一直保留,用的时候start,用完stop,但是这样还是会浪费hub休眠时候的一些费用。二是基于nodeJs + express的dashboard开发不够迅速,用户需要的图表需要2到3周的开发和测试才能上线。为了解决这两个问题,便有了后来的第二代DA。

第二代DA使用了kubernet技术,hub可以即时创建,使用完毕即时销毁,因为k8s的deploy所需时间很少,而且aws也提供了eks,所以既满足了hub的迅速创建和启动需求,又满足了使用多少消费多少的节省费用需求。Dashboard这一块呢,则是采用了kibana + elastic search的技术栈, 众所周知kibana可以分分钟创建各种类型的图表,在很大程度上解决了dashboard需求变化快的问题。只不过kibana的图表在用户数据的更新和删除需求上支持不够好,目前还没找到好的解决方案,所幸大家大多只需要查看功能,更新和删除场景较少。

测试开发岗求职准备

2.1 技能学习路线

(1) 编程语言学习

目前热度很高的编程语言有Java,C/C++,PHP,Python,Go等,虽然看起来眼花缭乱无从下手,但是要记住编程语言只是一种工具,不管什么语言只要能熟练掌握,快速高效地解决问题就可以了。

(2) 计算机基础知识

数据结构与算法

书籍推荐

适合入门:《大话数据结构》《算法图解》;

算法进阶:《算法》(第四版)、《算法导论》,理论性更强。

刷算法题【文末打包一份了免费的测试开发学习资源给大家】

除了理论的学习,更重要的是一定要多在力扣刷题,太久不刷题的话会手生,非常影响笔试面试的发挥。

力扣题库 页目前已全新改版,题型、知识点、分类标签都进行了优化调整;

企业真题题库 帮助大家全面掌握技术面试考点;

刷题新手建议从「剑指Offer」模块起步,题目比较基础,面试中出现频率也很高,时间充裕的话建议刷两到三遍。

数据库

数据库的学习笔者推荐《MySQL必知必会》《深入浅出MySQL》两本书。常用的增删改查操作、索引、索引背后实现原理、查询如何加速、事务隔离级别、内连接外连接等等,都是常见的面试题。

力扣上也有 数据库 模块的题,题目难度和真实笔试面试中写SQL的难度相一致,笔者当时刷了一半,求职过程中拿下了所有的数据库题目,强烈推荐!

计算机网络

推荐谢希仁的《计算机网络》,是很多大学推荐的教材《计算机网络:自顶向下》,很适合入门级使用,视频可以看韩立刚老师的讲解,通俗易懂,好评很多。

操作系统

偏向于概念和理论讲解推荐:《现代操作系统》、《操作系统概念》;

具体实现推荐:《30天自制操作系统》,帮助更好地理解理论知识。

(3) 软件测试理论

经典入门书籍推荐:《计算机软件测试》,全面系统地介绍了软件测试理论及相关技术。

《软件测试的艺术》:涵盖了很多软件测试的领域,列举很多模型、方法和工具,实用性很强。

(4) 测试项目或实习

了解测试岗的工作内容最有效的办法就是直接去公司实习,但如果没有时间实习的话,小伙伴们可以找一些测试项目练习:

比如结合Selenium学习Web自动化测试。通过脚本编写,有助于提高语言基础知识的理解和运用,并进行大量练习。如果用Selenium自动化脚本开发,起码要完成100个自动化测试用例,对Selenium达到熟练使用的地步,才能快速写出自动化测试用例。接下来可以结合Java中Junit或者testNG, Python中unittest,继续深入研究Selenium和一些自动化测试框架的知识。

然后还可以设计自己的测试框架,比如Python+Selenium设计自动化测试框架。网上的这类开源项目资源很多。重点是一定要把项目的细节全部搞清楚,尽量往深钻研,理清楚自己的想法。

2.2 时间规划建议

(1) 编程语言学习、数据结构和算法:2个月理论学习 + 经常刷题

这部分内容要具有连贯性的学习,编程语言基础学差不多了要学习数据结构和算法的理论知识,并且理论一定要结合刷题来巩固,才能更快上手、熟能生巧。刷题的话刚入门可能比较慢,就算一天一两道题也没关系,一定要坚持下来,慢慢就能看到成果。想去大厂的话就使劲刷,一般三四百道起步。

(2) 数据库、数据库刷题:15天理论学习 + 经常刷题

数据库知识相比难度不高,入门书籍很快就可以看完,同样需要经常刷题,巩固知识点提高速度。

(3) 计算机网络、操作系统、软件测试理论:2个月

这部分可能比较枯燥,可以在看书时结合课后题或者笔试题面试题来随时检验复习。力扣网站上也有很多相关 LeetBook,可以搭配学习~

(4) 项目或实习:3个月

做项目可以不用强求难度,但一定要确保自己学懂了每个细节,项目中遇到了什么问题,该怎样解决,效果怎么样,有没有其他方案,不同方案的区别在哪,这些常见的项目问题要在面试前提前准备好。

2.3 常见面试题举例

:界面搜索框测试用例

:可以从功能测试、界面测试、安全性测试、兼容性测试、性能测试、易用性测试

等角度进行回答。如:

(1)功能测试

1.搜索内容为空如何处理

2.在允许的字符串长度内外如何处理

3.合法的字符串长度后,加空格验证结果

4.验证每种合法的输入,结果是否正确

5.是否支持检索内容的复制、粘贴、编辑等操作

6.是否支持回车键搜索

7.多次输入相同的内容,查看系统的检索结果是否一致

8.搜索的历史纪录是否显示在下面

9.点击搜索,显示搜索界面

(2)界面测试

1.查看UI是否显示正确,布局是否合理

2.是否有错别字

3.搜索结果显示的布局是否美观

(3)安全性测试

1.脚本的禁用

2.SQL的注入,检索SQL SELECT语句等

3.敏感内容的检索是禁止的

(4)兼容性测试

1.多平台Windows,mac

2.移动平台android,ios

3.多浏览器火狐、chrome、IE等

4. 分辨率,操作系统版本兼容等等

(5)性能测试

1.搜索页面的链接打开速度的时间

2.搜索出结果消耗时间

3.弱网时搜索的响应时间

4.不同网速下搜索时的响应时间3g,4g,WIFI

(6)易用性

1.有联想功能

2.搜索内容与搜索结果的匹配程度

3.支持拍照搜索,语音搜索

另外还有其他场景,比如发红包测试用例、用户登录测试用例、输入法测试用例、支付功能测试用例等等,都可以按照以上角度来回答。回答的时候要注意逻辑,越细致越好。

作者:力扣(LeetCode)
链接:https://www.zhihu.com/question/298706115/answer/2085584866
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

测试开发岗发展前景

测试开发的发展方向可以分为以下几个大方向:

一是技术专家的道路。这条路比较坎坷,但也比较踏实。如果不太善于人际关系交往,不擅长管理,或者对技术有浓厚兴趣,建议在技术道路上多做耕耘。测试开发这条路根据从业者学识、经验的积累,会一路从初级上升到中级,再到高级,再到测试开发专家。

二是管理方向。这条路并不会比技术方向轻松,因为要做好各方面的协调、统筹和管理工作,同时还要提升自己的技术,来锻炼自己落地一些团队方案的能力,也更能服众。虽然说管理的「生命周期」比纯技术会长一些,但是一定不能放弃技术。

三是转岗到其他方向。比如研发、运维、产品经理等。这些都属于新出路,建议不要因为头脑发热选择转岗,因为面临新行业新环境依然需要从头学起,没有恒心和耐心很容易受挫,并且容易浪费时间。如果自身有了一些积淀,比如主流的技术栈或者业务知识很熟练,那么尝试新事物也未尝不可。

本文对测试开发岗位的招聘分析、求职准备、发展前景做了系统介绍,希望对想要求职测试开发岗位的同学有所帮助。

测试开发学习资源

 

 

​这些资料,对于想进阶【自动化测试和测试开发】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java多线程(三)

目录 一、线程的同步(二) 同步机制释放锁的操作 不会释放锁的操作 线程的死锁问题 死锁 解决方法 Lock(锁) 使用Lock(锁)创建多线程步骤: 使用Lock解决窗口售票问题 synchronized与Lock的对比 练习 二、线程的通信 通过例题说明线…

优化器-SQL语句分析与优化

一、连接-配置优化 1.1 连接数过多问题 有时会碰到Mysql:error 1040:Too many connection的错误。原因:超过了服务端设置的最大并发连接数。 1.2 从两个方面解决问题 服务端,增加服务端可用连接数;客户端&#xff0…

如何在视频上添加水印?建议收藏这些方法

小伙伴们平时会刷短视频吗?那你们会不会自己也在平台上,发布一些自己剪辑的短视频呢?在网上发布的视频,很容易被一些不安好心的人,直接窃取,所以为视频添加自己的水印显得尤为重要。那你们知道如何给视频加…

sqli-labs/Less-49

欢迎界面还是以sort作为注入点 首先判断属于数字型还是字符型 输入如下 sortrand() 页面从没有变化 说明属于字符型 然后输入1 发现没有报错信息 不能使用报错注入 只能通过结果去反映处你的注入是对是错 首先输入1-- 成功回显 说明注入类型就是属于单引号字符型 然后接…

Towards Class-Oriented Poisoning Attacks Against Neural Networks 论文笔记

#论文笔记# 1. 论文信息 论文名称Towards Class-Oriented Poisoning Attacks Against Neural Networks作者Bingyin Zhao会议/出版社WACV 2022pdf📄在线pdf代码无 基于类别的 availability attacks,不同于原本的 availability attacks 只考虑降低模型的…

VMware虚拟机中的Linux通过NAT模式共享主机网卡实现与外部设备通信

目前遇到的使用场景: 需要VMware虚拟机中linux通过PC端的物理网卡与外界其他设备或PC进行通信,因此需要配置虚拟机中linux的通信链路。 1.设置PC端IP网络 如果要实现虚拟机被局域网其它机子访问到,那么这里我们要选择桥架模式,具…

Oracle实验五Sql语句

每一句插入都要带commit提交,不然会出现很多报错 直接从WPS实验报告里复制过来的,可能有中英文标点问题 实验目的 (1) 掌握数据的插入(INSERT)、 修改(UPDATE) 和删除(D…

现代密码学导论-1-导论

目录 1.1 密码学和现代密码学 1.2 私钥加密 1.2.1 私钥加密的两个广泛应用 1.2.2 加密的语法 1.2.3 柯克霍夫原则 1.1 密码学和现代密码学 经典密码学(20世纪80年代以前)和现代密码学之间的另一个非常重要的区别与它的采用有关。历史上,密码学的主要消费者是军…

Android App开发实战项目之电子书架的实现(附源码 简单易懂 可直接使用)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、需求描述 在手机上浏览电子书的浏览体验跟阅读纸质书差不多,翻页过程仍旧呈现纸张翻转的视觉特效,让读者看起来赏心悦目。总结一下,手机阅读无非是要具有两大功能点:其一为书…

【GlobalMapper精品教程】025:影像数据集的建立与巧妙使用

GlobalMapper影像数据集类似于金字塔,作用是提高大量影像的加载与显示速度,还可批量进行一系列设置。本文的配套数据为data025.rar。 文章目录 1. 建立影像数据集2. 影像数据集的使用1. 建立影像数据集 (1)点击【文件】→【创建新地图目录】。 (2)选择影像数据集存放路径…

Doker学习笔记1(狂神)

虚拟机技术缺点: 1.资源占用十分多 2.冗余步骤多 3.启动很慢! 容器化技术 我们去安装docker: 我们先保证我们的虚拟机是可以使用的。 环境查看: 系统内核是3.10以上的 系统版本: 我们用的是centOS7虚拟机。 然后…

微服务学习笔记(二)

文章目录Spring Cloud Eureka1.Spring Cloud Eureka 简介2.Spring Cloud Eureka 和 Zookeeper 的区别2.1 什么是 CAP 原则(面试)2.2 分布式特征3.Spring Cloud 其他注册中心3.1 Consul3.2 Nacos4.Spring Cloud Eureka 快速入门4.1 搭建 Eureka-server4.1…

【ELM回归预测】探路者优化极限学习机回归预测【含Matlab源码 2231期】

⛄一、探路者算法简介 提出的一种新兴的智能优化算法,该算法的思想起源于群体动物的狩猎行为,种群中的个体分为探路者和跟随者两种角色。算法的寻优过程模拟了种群寻找食物的探索过程,利用探路者、跟随者两种角色不同的位置更新方式以及角色…

蓝牙血压计PCBA硬件解决方案

蓝牙血压计是利用现代电子技术与血压间接测量原理进行血压测量的医疗设备。家庭医疗保健已成为现代人的医疗保健时尚。过去人们测量血压必须到医院才行,而今只要拥有了蓝牙血压计,坐在家里便可随时监测血压的变化,如发现血压异常便可及时去医…

odoo14 | odoo中domain的复杂写法

本片文章主要讲述domain中复杂业务需求的逻辑构思,关于doamin的使用位置会在另一篇文章中体现。 二叉树与波兰式 在讲述domain的使用前先讲解一下科班生必学的《数据结构与算法》中二叉树遍历与波兰式的内容,如果你会二叉树先序遍历与波兰式转换请直接…

从零开始的深度学习之旅(2)

目录深层神经网络1. 异或门问题1.1 异或代码实现2.神经网络的层2.1 去除激活函数的异或门2.2 使用sigmoid函数的异或门3.从0实现深度神经网络的正向传播深层神经网络 1. 异或门问题 在第一篇的博客中,我们使用代码实现了与门 import torch X torch.tensor([[1,0,0],[1,1,0]…

通过实战总结的 使用GoFrame小技巧

文章目录gf gen dao设置参数可传可不传model作为结构体类型模型关联添加数据主程序如下:gomeGoods.MainImgs的定义:批量插入数据配置插件自动生成service总结一起学习有朋友问我能不能搞一个GoFrame技巧篇,让新手少踩坑的那种。今天他来了&am…

数据库-范式例题

目录 1、请简述满足1NF、2NF和3NF的基本条件。并完成下题:某信息一览表如下:其是否满足3NF,若不满足将其化为符合3NF的关系。 解:     1NF: 属性都是不可分割的数据项 2NF: 不存在部分函数依赖,存在传递函数依赖。 2NF: 不存在

算法复杂度分析中的渐近分析(基于输入大小)

为什么要进行性能分析? 有许多重要的事情需要注意,例如用户友好性、模块化、安全性、可维护性等。为什么要担心性能?答案很简单,只有当我们有性能时,我们才能拥有上述所有东西。因此,性能就像货币&#xf…

磷酸化多肽Asp-Arg-Val-Tyr(PO3H2)-Ile-His-Pro-Phe、129785-85-9

在血管平滑肌细胞中有多种作用,包括正常动脉的收缩,培养的细胞或病变血管的肥大或增生等。 编号: 200676 中文名称: 八肽DRV-pTyr-IHPF CAS号: 129785-85-9 单字母: H2N-DRV-pTyr-IHPF-OH 三字母: H2N-Asp-Arg-Val-Tyr(PO3H2)-Ile-His-Pro-Phe-COOH 氨基…