你的自动化框架如何设计的?为什么感觉面试官总是不满意,到底问题出在哪?

前言

去面试自动化测试岗位,尤其是接口自动化岗位,面试官总会问:说下你的自动化框架如何设计的?
为什么回答后,面试官对你的框架设计总是感觉不满意?

自动化测试实现的几种方式

对于不同的公司来说,实现自动化的方式不太一样,其实不管哪种实现方式,只要能解决工作中的问题,都是好的。
总的来说有以下这几种实现方式:

1.高度依赖于成熟自动化框架或自动化平台

作为一个公司的测试leader ,想要快速把自动化测试落地,年底好写PPT评绩效。那么会找个成熟的开源自动化框架,或者公司不差钱的可以买一些成熟的自动化平台。
如果你是参与者,你只需要按测试leader 部署好的框架或平台去落地就行了
比如:

  • robotframework 等一些成熟的关键字驱动框架,没代码功底的也可以快速入门
  • yapi, apifox, metersphere 或一些大公司自己开发的内部平台化的方案,部署后就可以直接在上面添加用例
  • postman, jmeter 等一些工具的使用

优点:
对于测试人员来说,可以快速参与到自动化项目中,有参与自动化测试的项目经验。
对于测试领导来说,落地快,出成果快,年底好写PPT评绩效(至于用例质量和高效性不care, 反正不是他自己去落实)
缺点:
对于测试人员,你只是在平台上添加用例,那么对你个人来说提升空间不大,一旦哪天脱离了平台,你什么都不是。
对于测试领导,你无法把控用例质量和提升编写用例效率,只能适用于一些常规项目的普通需求,有特殊需求需要二次开发的没能力解决,比如后续CI/CD集成与实施上就没那么灵活了。

2.基于unittest/pytest或junit 等测试框架

公司有招聘专门的自动化专员的,专职做自动化的人员,一般都是有代码功底掌握了python / java 等语言。
有代码功底的更倾向于开源的测试框架,可以结合单元测试框架(unittest/pytest或junit)去实现不能项目,不同需求的自动化,于是又可以细分成web,接口,app自动化。

web 自动化:
以python语言为例,通过实现方式是 unittest/pytest + selenium, 然后搞个 POM 模式去实现。

优点:
可以灵活的组织自己的测试用例了,写不同场景的自动化用例,还可以定制生成各种漂亮的报告,如allure报告
相同的模块可以代码复用

缺点:
由于不同人员代码质量参差不齐,定位元素只学了皮毛,大量的时间和精力都花在了定位上,你会看到学web自动化的人员,问的最多的永远都是:xx元素怎么定位?
代码质量不高的,不是在报错,就是在报错的路上,排错浪费大量时间和精力。

接口自动化:

以python语言为例,通过实现方式是 unittest/pytest + requests ,然后是搞参数化数据驱动,测试数据和代码分离。
常见的几种方式:
1.所有的接口用例和测试数据放到excel 文件,封装读取和执行excel 用例的方法,让小白也能参与使用
2.参数化(数据驱动、数据代码分离)接口数据放到yaml 或 json 文件,封装读取数据和执行的方法
3.写公共方法,调用函数的方式去组织不同场景用例,更偏重代码的方式实现
4.用httprunner框架,纯数据的方式实现

优点:
接口自动化实现相对来说比较简单,实现的方式也是各种各样的,一般只要有自己的一套方案,都能实现

缺点:
门派太多,实现方式各种各样,用excel的瞧不上用yaml的,用yaml的瞧不上用excel的,用excel、yaml的又瞧不上写代码的。
反正各门派之间内斗严重,去面试的时候也是没统一的标准答案。不像web自动化,POM就是标准答案。

APP自动化:

app 自动化分android 和 ios 两个平台,常用的有appium 和 airtest。
app 自动化是最难学的了,并且能真正落地的很少,没扎实的自动化功底很难做起来。

优点:
能做好的,前途无量

缺点:
环境问题就能劝退一大片的人了

3.基于自己公司的测开人员开发的平台

如果公司有专门的测开人员,根据自己公司的项目需求,开发自动化平台,或者工具。
那么有人会问了,既然有开源的接口自动化工具了,为什么要去开发一个呢?
现有的接口自动化工具,大部分都是基于HTTP/HTTPS 协议的,如果你们公司是其它的接口,比如:websocket/mqtt/Dubbo.
或者开发一个可视化的平台,在平台上维护用例。

优点:
自己公司开发的平台,具有保密性,接口和测试账号不会被泄露
可以根据自己公司的需求,灵活定制
可视化的平台方便领导查阅,知道你具体做了多少工作。
只要平台稳定了,后续其它测试也能快速参与到自动化的工作

缺点:
对测开人员能力要求高

说下你的框架是怎么设计的?

去面试自动化测试岗位,尤其是接口自动化岗位,面试官总会问:说下你的自动化框架如何设计的?
对于这种开放性的问题,因为每个人做的自动化实现方式不太一样,也没标准答案,这里我总结了自动化测试人员的几个阶段,大家可以对号入座,看自己处于哪个阶段。

一、初级入门-以线性用例为主

1.早期的以录制为主,生成的用例,对于不会写代码的人来说,录制简直就是神器。
页面上点点点,就可以自动生成用例了,只需要稍微改一改,快速的实现了自动化。
这种就是典型的线性用例(用例是一条直线形状,不带拐弯的),缺点也很明显,业务的改动,会导致大量用例失效,得重新去录制,复用性很差。

2.以postman、jmeter 等工具为主的接口自动化用例,这比录制稍微强一些了,能自己去组织用例,维护用例了,还可以继承一些报告。

postman 工具实现接口自动化

jmeter 工具实现接口自动化

这种工具为主的,确点也很明显,跨平台使用不方便,还有个很大的缺点,你写的用例,只能在你自己电脑上跑,别人无法跟你的用例共享。
2-3个人共同维护一个项目的时候,缺点就暴露出来了。

这种单个人实现的接口自动化,算是自动化初级入门了。

二、unittest/pytest 框架使用 - 代码复用

有一定的代码能力了, 于是可以学一些自动化测试框架。
以 unittest/pytest 为主的使用,结合selenium, requests 等库实现web或接口的自动化,可以解决前面说到的的问题。

早期基于unittest + excel的项目设计结构

或者以下一个简单的pytest 接口自动化项目结构

web自动化框架都是POM设计模式,主要写个base的文件,其它页面都基于base继承,每个页面封装一个Object 对象。页面上的点点点基于页面对象调用对应方法

这一阶段的主要目的是代码的复用,写一些读取excel或者json/yaml 文件的广告方法,公共模块的封装,比如登录这种公共方法,很多流程都会用到的,那么就可以写成公共函数去调用。

这时候面试官又会说了,那你的框架有没有实现数据和代码的分离呢?

三、 参数化/数据驱动 - 数据可维护性

当上一阶段实现了代码的复用,你会发现很多操作其实都是重复的动作,像接口自动化里面的发送请求,都是调用一个方法,传不同的接口参数就行了。
于是这一阶段的追求是数据驱动模式,通过代码和数据的分离实现参数化,写公共方法去读取excel/yaml/json 文件。
项目基本设计结构:
1.接口的数据写到excel/yaml/json 文件
2.写公共方法读取excel/yaml/json 文件,解析出测试数据,生成用例
3.写个main去执行用例

那么这一阶段的实现,具有代表性的实现方式如下pytest+yaml
在yaml 文件中写接口数据

学公共方法去读取接口数据,封装提取参数和校验参数的方法

最后写个方法去生成用例,通过main.py 去执行全部用例,生成报告
(目前网上看到的绝大部分都是这种思路)

四、 具有代表性的框架是 httprunner 框架

pytest+yaml 测试数据和代码分离成熟的方案就是httprunner框架了,可以直接使用别人封装好的框架。

上面一种自己写的和别人写的httprunner框架 对比有哪些不一样呢?
1.别人的框架始终是别人写的,你去面试的时候说用的httprunner框架,面试官会觉得你不会写框架,都是用的别人的
2.你给领导看的时候,你全写的yaml用例,领导觉得你没水平啊,换个人也能做
3.你没写代码,领导觉得你不会写代码吧,下次不给你涨工资了

所以自己的东西再烂,那也是自己的,可以唬住面试官和领导。
这就是为什么,网上都喜欢自己去写一套pytest+yaml 的方案的
1.代码在项目结构里面,可以唬住领导,让领导觉得你好厉害,写这么多
2.面试的时候,可以非常自信的说是自己写的,还可以介绍每个模块实现的功能
3.可以让其他不会代码的人员觉得你这20k不是白拿的,确实厉害,很有优越感
4.金框架银框架不如自己的狗框架

五、自己开发框架/插件

我这里说的自己开发框架,不是前面说的简单建几个文件夹的事情,是开发一个能给大家使用的,比如httprunner框架开发。
还有我近期开发的基于pytest 框架的 pytest-yaml-yoyo 插件,项目地址https://gitee.com/yoyoketang/pytest-yaml-yoyo?_from=gitee_search

所有的用例读取和执行都封装好了,只需一个pip安装就能使用

pip install pytest-yaml-yoyo

用例只需要写个yaml文件,不需额外的代码了

config:name: getteststeps:
-name: getrequest:method: GETurl: http://httpbin.org/getvalidate:- eq: [status_code, 200]

用例执行,跟pytest执行一样,只需一个命令

pytest test_demo.yml

只有当你熟练使用了各种测试框架后,你才会知道每个框架的优缺点,知道测试人员的痛点在哪,那么你设计的框架能解决这些痛点就是优秀的。

六、平台化-测试开发

有很多测试人员一直搞不明白,测试开发的工作是做什么,跟自动化测试有什么区别?
测试开发的工作是不是就是开发一个web网站这种测试平台呢?

不同公司对测试开发的岗位定位其实不太一样,总的来说,测试开发的工作是为给自动化测试提供服务的。
比如自动化测试人员需要一个测试平台,那么就需要开发一个平台让他们去维护自动化用例。
比如自动化测试人员想参与CI/CD的工作,那么测试开发就去建设对应的工作。
比如自动化测试人员需要一个测试dubbo接口的工具,那么测试开发人员就去开发一个工具。
还有其它很多能提高自动化效率的事情,都是测试开发人员的工作。

七、人工智能-自动生成自动化用例

最近chatGPT 很火,各大媒体都在蹭流量,它的出现,可以帮助程序员快速实现一些基础的逻辑代码。
我们做自动化测试的早期目的,就是为了解决手工的重复劳动。
于是早期我们通过代码的方式让双手解放了出来。
但是想一想,虽然不用手工点点点了,你去写自动化用例敲代码,也是需要双手的,所以并没有真正的解放双手,虽然双手没有解放,但节省了时间。
当接口自动化用例写多了之后,你会发现大部分工作都是复制粘贴,改改参数,这其实也是重复劳动。

于是就有面试官问:那你的框架能不能根据接口文档自动生成自动化用例呢?
如果开发给一个swagger文档,你写的框架能自动根据接口文档,生成不同的请求参数,自动去校验结果,那么就是面试官所需要的。

总结

总的来说,不管你处于哪个阶段,只要能让公司自动化落地,提升测试效率,都是好的。
如果你处于第一个初级阶段,想一下子实现到第七个阶段,那步子迈的有点大,怕你扯着。。。

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

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

相关文章

使用 ChatGPT 从头开始​​研究和构建 SwiftUI 应用程序

今天我试图从头开始构建一个应用程序,向 ChatGPT 征求意见。我想第一次尝试创建一个基于 IOS 16 的 100% SwiftUI 应用程序。 技术选择 我想在 SwiftUI 中创建一个应用程序,采用模块化、多语言的方法,采用 mvvm 架构并使用协调器。 所以我问我如何创建一个满足我要求的应…

大学生对chatGPT的认知和使用

新一代对话式人工智能chatGPT在全球范围狂揽1亿名用户,不止于科技界破圈,更成为街头巷尾的谈资。 chatGPT能干什么? https://openai.com/blog/chatgpt/ chatGPT官网 写解决方案编写代码 说笑话 个人体验: 实用性强,…

ChatGPT 成全球学生的“作弊神器”?韩国学生“喜”提 0 分……

整理 | 朱珂欣 出品 | CSDN程序人生(ID:coder_life) 仅仅横空出世 70 余天的 ChatGPT ,已经累计用户超 1 亿,创下了互联网最快破亿应用记录。根据 Similarweb 的数据,截至今年 1 月,平均每天…

本科论文查重网站分享

本科论文查重网站分享 本科论文需要查重,很多人都知道。知网作为查重届的权威代表,翟天临博士却不知道知网是什么,于是学历造假最终被发现。本文主角不是翟“博士”,而是和知网一样有论文查重功能的两个免费查重网站——YY和百度…

分享一个靠谱的免费论文查重网站

给大家分享一个靠谱的免费论文查重网站PaperPP:http://www.paperpp.com,可以一站解决“论文查重、改重、降重”等问题TOC 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑…

推荐几个免费论文查重网站

文章目录 一、paperyy二、 paperday三、 paperpass四、 paperfree五、 paperok六、 papertime 一、paperyy https://www.paperyy.com/ 二、 paperday https://www.paperday.cn/ 三、 paperpass https://www.paperpass.com/ 四、 paperfree https://www.paperfree.cn/…

股票证券行业,怎样快速获客,有效途径有哪些

证券行业最开始起源于荷兰,全世界第一家股票交易所便是荷兰的阿姆斯特丹交易所,这个交易中心确立了荷兰海上霸主的影响力。证券市场的主体作用便是处理企业融资难题。汇总起來,证券行业要把证券化,都切分优化制成标准物质&#xf…

如何利用tushare获得上市公司的日线行情

本人tushare ID:476096,欢迎交流,可通过此链接注册tushare账号:Tushare大数据社区 大家都知道日线行情对于我们分析股票非常有帮助,那我们如何通过tushare的接口实现这一需求呢。 首先我们打开tushare的数据接口&…

实现财务自由 之 你不可不知的投资股票、基金、房地产、REITs等指数指标查询必备网址(市盈率、国债收益率、派息率等等)

实现财务自由 之 你不可不知的投资股票、基金、房地产、REITs等指数指标查询必备网址(市盈率、国债收益率、派息率等等) 工欲善其事,必先利其器是说:工匠想要使他的工作做好,一定要先让工具锋利。我们想要实现财富自由&#xff0c…

2023ACP世界大赛教育者论坛:让职业教育直面AI机遇与挑战

“AI技术的普及对创意行业和教育带来的影响和变革-2023 Adobe Certified Professional教育者论坛”在苏州西交利物浦大学成功举办。 本次论坛,由Adobe Certified Professional 世界大赛中国赛区组委会主办,联动了来自院校、海内外杰出的创意公司及国际知…

工程落地实践|国产大模型 ChatGLM2-6B 阿里云上部署成功

“ 之前尝试过在各种不同的云平台、云算力,部署清华大模型 ChatGLM2-6B,有失败有成功,但不是很理想。这次使用免费的阿里云机器学习GPU资源,终于成功了。” 01 — 本来以为今天的部署又要失败,却获得意外之喜&#xff…

深度解读字节跳动开源的云原生数据仓库 ByConity

ByConity 基于 ClickHouse 内核开发,采用计算存储分离的架构、主流的 OLAP 引擎和自研的表引擎,提供便捷的弹性扩缩容和极速的分析性能,覆盖实时分析和海量数据的离线分析,帮助企业更好地挖掘数据价值。 责编 | 夏萌 出品 | CSDN&…

《吃豆人》问世 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 5 月 22 日,在 1994 年的今天,知名中文论坛曙光 BBS 站开通。1994 年 4 月 20 日,建立在中科院和北京大学、清华大学之间的中…

Java 之父诞生 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 5 月 19 日,在 1999 年的今天,分布式计算项目 SETIhome 正式向公众发布。SETIhome 是一个通过网际网路利用个人电脑处理天文数据的分布式…

纵览2023世界人工智能大会:百模大战4个月,中国AI产业怎么样了?

文|刘雨琦,编|王一粟 身处大模型的浪潮之中,AI的热度一波接着一波。 7月6日,2023年世界人工智能大会在上海召开,一度冲上了微博热搜榜。在5万平方米的会场中,400多家企业的展台员工都在不遗余…

2023中国费控报销领域最具商业合作价值企业盘点

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 在企业的日常运营中,控制费用是非常重要的一项任务。一个高效且经济稳健的企业,必然需要严格掌控各项支出。其中,报销费控更是企业控制费用的重要手段。 根据灼识咨询发布的白皮书&#x…

超强版干货投递!Milvus 的部署心得、运维秘籍都在这里了!

好奇 Milvus 读链路的演进?不知如何优化 Milvus?提到 Milvus 的业务场景只能靠想象?想获得其他人的部署经验?困惑于 Zilliz Cloud? 不藏了,摊牌了,对于上述的所有问题,你都可以在今天…

科研办公学习的开源免费神器汇总

科研办公学习的开源免费神器汇总 一.公式: 1.Mathtype 是一款专业的数学公式编辑工具,理科生专用的工具。mathtype公式编辑器能够帮助用户在各种文档中插入复杂的数学公式和符号。 2.Mathpix Mathpix可以将图片、PDF 文档、网页中,甚至是手写的数学…

斯坦福大学团队提出AI生成文本检测器DetectGPT,通过文本对数概率的曲率进行可解释判断

原文链接:https://www.techbeat.net/article-info?id4583 作者:seven_ 随着以ChatGPT等大型语言模型(large language models,LLMs)的爆火,学界和工业界目前已经开始重视这些模型的安全性,由于C…

张勇发全员信:阿里云将分拆上市;ChatGPT官方iOS应用上线,支持中文语音;Bun 0.6发布|极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#…