自动化测试框架选型和落地实践路径

news/2024/7/25 21:32:27/文章来源:https://www.cnblogs.com/imyalost/p/18247750

有同学问了我这样一个问题:我想学习并且在工作中落地接口自动化测试,我该学Java还是Python,用哪个测试框架和工具更好?有什么推荐的学习资料和测试框架吗?

又是一个很典型的问题,也是新手最容易纠结的点。这篇文章分享一些我的经验和思考。

 

自动化测试框架选型

其实关于测试框架选型,要考量的无非是如下几点:

  • 个人技术基础如何,框架的学习难易曲线;
  • 框架功能是否丰富,官方文档是否详细,框架生态是否成熟;
  • 框架本身的扩展性如何,是否支持多语言,开源还是商业的;

如果个人技术基础比较薄弱,建议选择功能丰富开箱即用,且学习曲线比较平滑的。有些框架入门简单,但是进阶和落地难度就会特别高;有些框架入门难度稍微高点,但整体的学习难易曲线比较平滑,适合不断打怪升级,这点需要看个人适配程度和喜好。

第二点,功能丰富意味着落地实践阶段二次开发封装的成本投入较低。详细的官方文档可以帮助新手更快的入门,且其中也会有不少的案例。所谓的生态就是用这个框架的人多不多,用的多自然遇到的问题多,解决问题的方法也有更多人在前面趟坑。

至于第三点,就是选型后落地方面的考量。支持多语言,意味着和研发团队的技术栈以及被测应用更为匹配;开源意味着更低的直接成本,扩展性则是是否支持团队级别的定制化选项。

 

自动化测试落地实践路径

自动化测试框架和工具都很成熟了,落地实践的案例也不少,但具体落地过程肯定会遇到各种各样的问题,解决问题的过程需要考量具体的业务特性,基础设施建设,项目迭代频次等很多因素,很难说有普适性的通用案例可以参考。

我想换个角度,从自动化测试相关的面试题来聊聊它的落地路径,也许你能收获不一样的思路和方法。当然,下面列举的面试问题是由浅及深的,且会列出考察点和回答问题的逻辑,希望能对大家有所帮助。

1、自动化测试是如何做的?

回答思路:从问题出发,要解决什么问题,采用了什么工具/框架,原因是什么?自动化测试的流程,重点是哪些方面,要面临哪些挑战,如何解决的,是否有更好的方式。

2、选择自研框架和开源框架?

回答思路:这个问题考察两方面,一方面是对开源/商用框架优缺点的了解程度,以及和自身团队及业务的匹配性;另一方面则是自研框架和团队及业务的是配性更强,但成本更高。

3、自动化测试主要投入和产出是什么?

回答思路:同样考察两方面,一方面是前期的产出和效果肯定是低于成本投入的,自动化需要长期持续建设且项目相对稳定,才能在大后期收益覆盖成本。

另一方面则要表达出自己对自动化测试的理解,比如自动化就是用来辅助测试,解决重复性高的执行工作,如果最开始奔着提升效率,那大概率最后会不了了之。

4、如何管理自动化测试数据?

回答思路:分阶段用不同的方法。单人或者刚开始落地,以简单易懂为主,比如Excel;规模稍微起来或者参与自动化测试工作的人多了,就要考虑配置文件或者函数生成方式;大规模覆盖阶段则要考虑造数工厂方式。

测试数据管理是自动化测试中特别重要的一环。特别是团队扩大,业务复杂度上升之后,如何高效合理管理测试数据,需要很深入的思考和大量的实践。 重要的是要有持续迭代和优化的做事方式,而不是从一开始就求大而全

5、自动化测试如何融入CICD交付流水线?

回答思路:单纯的做自动化测试,产出和价值并不高,自动化测试如果不能持续集成,融入到持续交付流水线中,那只能说是测试用例自动化执行。更好的方式是让自动化测试成为整个研发交付流程的一部分,为研发交付提供辅助和支撑。

当然,CICD的交付流水线是整个技术团队要发力做的事情,需要解决很多前置问题,比如编码规范、代码分支命名规范、版本管理、完善监控,也需要技术团队内部各团队协同配合。

回答这个问题,可以从推动和参与CICD流水线建设来讲,解决了哪些问题,最终达成了什么效果。

6、如果让你来负责整体的质量保障工作,你会从哪些方面入手?

回答思路:这个问题看似和自动化测试没有直接关联,但实际上很考验测试工程师的全局思维和技术视野,以及对业务和技术关系的理解。

在质量保障体系中,流程建设、需求/风险/进度管理、质量门禁、团队赋能、工具提效、人员培养、知识库沉淀等多个方面都需要进行建设,自动化测试是质量门禁、工具提效辅助和团队赋能的重要抓手。

7、从零开始从零开始落地自动化测试,你会如何做?列举重要的几个方面。

  • 前期摸底:业务情况、团队的技术基础设施、团队成员的技术能力等。
  • 调研对比:商用&开源&自研框架的优劣势,做demo,拿到数据支撑结论,然后出落地方案。
  • 分阶段落地:不同阶段的重点是什么,要解决什么问题,采用什么方法和手段,需要的资源和面临的挑战。
  • 更进一步思考:能否为测试团队赋能,怎么做?能否推动整个研发交付流水线流程,有什么好的想法和思路。

 

以上就是我在面试候选人时,关于自动化测试经常问的几个问题。至于自动化测试的落地路径,答案都在上面的几个问题中包含了。从我的角度来说,无论是面试回答问题,还是技术工程落地,注意如下几点即可。

  • 事前-分析和思考:逻辑清晰条理明确。
  • 事中-推动解决问题:合理的方法,以拿结果为导向。
  • 事后-持续复盘改进:跟随业务和团队的变化,不断改进,使之更符合团队需要。

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

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

相关文章

数据平台:企业数字化转型的加速器

企业数字化转型的基本路径 数字化转型是一个逐步发展的进程,它遵循着从计算机化到连接、透明化、预测和自适应的路径。在这一进程中,企业从传统工厂向透明工厂、智能工厂转变,实现工业4.0的目标。这一转变涉及人机环境料法的各个方面,包括现场管理、制造管理、运营管理等,…

隐马尔科夫模型HMM——Python实现

隐马尔科夫模型(Hidden Markov Model, HMM)是一种统计模型,用于描述一个由隐藏的马尔科夫链驱动的随机过程,其中观测序列和状态序列之间存在某种统计依赖关系。HMM通过一组隐藏状态(隐含状态)和观测到的序列来描述系统的行为,通常用于解决时间序列分析、模式识别和自然语…

物理机开关机

关机[root@openstack017.xx.com xx]# init 0Receive Connection closedConnection websocket closed

根据业务数据计算系统并发

1、日活 访问量 活跃度 2.1 PV(Page View) 访问量, 即页面累计浏览量或点击量,衡量网站用户访问的网页数量;在一定统计周期内用户每打开或刷新一个页面就记录1次,多次打开或刷新同一页面则浏览量累计。 2.2 UV(Unique Visitor)访问用户数(去重),统计1天内访问某…

kettle从入门到精通 第六十九课 ETL之kettle kettle cdc mysql,轻松实现实时增量同步

1、之前kettle cdc mysql的时候使用的方案是canal+kafka+kettle,今天我们一起学习下使用kettle的插件Debezium直接cdc mysql。注:CDC (Change Data Capture) 是一种技术,用于捕获和同步数据库中的更改。1)Debezium步骤解析mysql binlog日志。 2)json input步骤解析json字符…

可视化学习:如何使用后期处理通道增强图像效果

GPU是并行渲染的,这样的渲染很高效。但是在实际需求中,有时我们计算片元色值时,需要依赖周围像素点或者某个其他位置像素点的颜色信息,这样的话想要一次性完成绘制就无法做到,需要对纹理进行二次加工处理。前言 大家好,本文分享的是如何使用后期处理通道增强图像效果,通…

wkhtmltopdf的下载和使用

wkhtmltopdf 是一个开源的命令行工具,用于将 HTML 页面转换为 PDF 文档。它使用 Qt WebKit 渲染引擎,支持 CSS、JavaScript 等前端技术,并提供丰富的配置选项,使用户能够控制转换过程。 下载步骤 (1)打开官网链接:https://wkhtmltopdf.org/downloads.html根据自己电脑系…

centos设置自定义服务并开机自启动

1、编写自定义脚本 cat /root/test.sh !/bin/bash 每隔5s打印当前时间并输出到指定文件里 while true do echo "date +%Y-%m-%d %H:%M:%S" >> /root/a.log sleep 5 done 2、将脚本设置成服务 vim /etc/systemd/system/zdy.service [Unit] Description=zidingyi…

Vue 3深度探索:自定义渲染器与服务端渲染

这篇文章介绍了如何在Vue框架中实现自定义渲染器以增强组件功能,探讨了虚拟DOM的工作原理,以及如何通过SSR和服务端预取数据优化首屏加载速度。同时,讲解了同构应用的开发方式与状态管理技巧,助力构建高性能前端应用。title: Vue 3深度探索:自定义渲染器与服务端渲染 date…

【干货分享】.NET人脸识别解决方案

前言 前段时间有同学在DotNetGuide技术社区交流群提问:.NET做人脸识别功能有什么好的解决方案推荐的吗?今天大姚给大家推荐2款.NET开源、免费、跨平台、使用简单的人脸识别库,希望可以帮助到有需要的同学。 人脸识别应用场景 现如今人脸识别应用场景比较广泛如:安防监控、人…

git-jenkins阶段04 jenkins自由风格项目(发布, 自动触发器, 返回状态给gitlab), maven项目, pipeline流水线项目

1.Jenkins创建项目点击创建一个新任务#类型: 自由风格项目: php,c,python项目 maven项目:要编译的,像java项目 pipeline:流水线操作创建一个自由风格项目,如图 项目配置中,可以选择丢弃旧的构建,只保存7天的构建记录,最多保留10个构建记录。(可配可不配) 构建一般只用shel…

ABC355E Guess the Sum 题解

前缀和上建图,有点典,但赛时没想出来ABC355E Guess the Sum 题目大意 给定一个长度为 \(2^n\) 的序列 \((A_0,A_1,\dots,A_{2^n-1})\),每次可以询问一个长度为 \(2^i\) 的区间 \([l,r]\),满足 \(l\) 是 \(2^i\) 的倍数,标准输入会返回 \([l,r]\) 的区间和 \(\bmod 10\) 的…

单文件静默安装包 2024年6月14日

单文件静默安装包 2024年6月14日"D:\Prog\7z SFX Builder\单文件静默安装包.txt" "D:\Prog\7z SFX Builder\单文件静默安装包.txt" Version 1.0 Builder 2024年6月14日1、目的目标 制作Windows系统平台上的应用软件的静默安装包, 例如:一键安装MS-Offic…

c/c++设计模式----命令模式

1. 通过一个范例引出命令模式代码编写方法//红烧鱼,锅包肉#include <iostream> #include <list>#ifdef _DEBUG //只在Debug(调试)模式下 #ifndef DEBUG_NEW #define DEBUG_NEW new(_NORMAL_BLOCK,__FILE__,__LINE__) //重新定义new运算符 #define new DEBUG_N…

增补博客 第二十二篇 python 牛顿迭代法

【题目描述】编写程序,使用牛顿迭代法求方程在x附近的一个实根。【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。【输入格式】请在一行中输入方程系数a、b、c、d和实数x,数据中间以空格为间隔。【输出格式】对每一组输入的数据,输出牛顿迭代法…

python学习笔记-scrapy源码流程和自定义爬虫框架

一、scrapy源码流程流程要点:1、执行CrawlerProcess构造方法  2、CrawlerProcess对象(含有配置文件)的spiders     2.1、为每个爬虫创建一个Crawler     2.2、执行d=Crawler.crawl(...)       d.addBoth(_done)     2.3、CrawlerProcess对象._active={…

RTE Open Day 联手 AGI Playground,最先锋 RTE+AI Builders 齐聚北京丨活动招募

6 月 22 日至 23 日,北京,AGI Playground 2024 即将引燃今夏!6 月 22 日至 23 日,北京,AGI Playground 2024 即将引燃今夏!这场备受瞩目的 AGI 盛会,将汇聚王小川、杨植麟等众多创业者。RTE 开发者社区的 Builders 和 RTE Open Day 也将亮相其中!「有一群人在一起,就很…

在DataSet数据集中 DataView筛选数据

1. 将从数据库拿到的DataSet数据集转为DataTable类型DataTable dt = SqlHelper.GetData()使用: RowFilter来实现筛选功能赛选出ClassId为我指定 ClassId的数据 dt.DefaultView.RowFilter = "ClassId=" + classId;筛选出年龄大于我 text 值的数据 dt.DefaultView.RowF…

增补博客 第十一篇 python 分段函数图形绘制

【题目描述】已知,在区间绘制该分段函数的曲线,以及由该曲线所包围的填充图形。 【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。import matplotlib.pyplot as plt import numpy as npx = np.arange(-2, 2, 0.0001) y1 = np.sqrt(2 * np.sqrt(x…

增补博客 第八篇 python 中国大学排名数据分析与可视化

【题目描述】以软科中国最好大学排名为分析对象,基于requests库和bs4库编写爬虫程序,对2015年至2019年间的中国大学排名数据进行爬取:(1)按照排名先后顺序输出不同年份的前10位大学信息,并要求对输出结果的排版进行优化;(2)结合matplotlib库,对2015-2019年间前10位大…