【软件测试】测试开发?开发一个自动化测试系统如何做?

news2024/11/20 22:38:08

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

当我们开始分析一个自动化系统的构成时,首先应该思考一下,自动化究竟需要解决一个什么样的场景,它是为了解决测试人员写脚本难的问题,还是解决测试效率的问题,又或者是解决复杂场景的问题.

只有先搞清楚了这一点,我们才明确设计核心是什么。

举个例子
网易一款自动化平台 AirTest,它重点解决了两类问题:
1.就算不熟悉 python 的人,用了它也能把自动化用例实现出来;
2.因为很多游戏 APP 的控件不是原生的 View 渲染的,必须依赖图像识别技术,或者界面渲染引擎的控件定位技术,这在业务上难度是比较大的,用了它这一切也就不成为问题。
因此,它的设计核心是解决测试人员写脚本难的问题,以及解决复杂场景的问题。

再举个例子
蚂蚁金服开源的 SoloPi 是一款 APP 自动化工具,它重点解决了这两类问题:
1.脚本录制回放功能,解决的是测试人员写脚本难的问题;
2.一机多控,解决的是测试效率的问题;
每一个产品都有自己核心立足点,明确了核心,才知道要怎样去做技术选型。
所以,第一步是确认好,这款自动化产品它的核心解决场景是什么。

有了核心,就如同设定好了目标,接下来的具体设计都是围绕目标展开的。
有一些同学在做设计的时候,想做到 Appium 那样支持多语言客户端,获得更广泛的群众基础;或是像 SoloPi 那样支持录制回放功能,还想添加……

这种持续做加法的原则对原型开发并不友好。

原型版本的设计,应该尽可能做减法,让主流程能跑通,再考虑锦上添花的事。
做技术开发往往都知道 “迭代” 这个词,产品很难一口吃成一个大胖子,一开始做得简单。

三个好处:
容易对不明确的技术做调试,确认其可行性;
容易围绕核心去做事,不会迷失在过多的细节中;
开发过程往往会伴随 “重构” 的发生,越是简单的东西,越容易做重构。

核心的功能现在已经基本梳理好了,整个业务流程图这时就应该筹备起来。这里要考虑系统是如何进行工作的,在哪个环节有输入,哪个环节有输出,等等。

拿 SoloPi 举例
录制回放业务中,整个过程分为两部分,一个在录制,把用户操作的过程和设置的参数进行保存,输入的是操作,输出的是数据;另一部分是回放,将得到的数据作为新的输入,传给固定的操作模板去执行,这样整个业务流程的闭环就有了。

要考虑分工协作的事,将模块进行拆分。
一个产品不管是独立开发还是一群人合作开发,都要将其功能进行合理拆分,尽可能让不同的模块独立化开发,这样不仅可以将任务分解出去,也能让新的模块更好的扩展进来。

拿 AirTest 举例
划分为 IDE 模块,系统支持模块,控件识别模块的话,一组人专门把界面做好,实现 button,代码编辑器等;一组人去支持 Android,iOS,Windows,Web 等系统的连接,控制;一组人做好图像识别,Unity 控件识别。这样就可以同步干活了。

设计一款自动化测试系统,首先要确认好核心功能是什么,其次让原型设计做得尽可能简单,再次考虑整个业务流程是如何流转的,抓住几个关键的输入输出点,最后合理将模块进行拆分,进行团队的分工协作。

下面是我整理的2022年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

事业总有大起大落,人总会遇到挫折,只要你不怕跌倒你一定会开创出自己的一片天地来,记得还有我在你身边鼓励你!祝你心想事成!

人家说,梦想都是用来骗自己的,以前我总是倔强的反对着这个说法,求学时代的我不断的在老师和长辈们的熏陶下不断将梦想渐渐的深深的刻在脑海里。以至于后来一听到亵渎梦想的话就表示强烈的反感。

生命,需要我们去努力。年轻时,我们要努力锻炼自己的能力,掌握知识、掌握技能、掌握必要的社会经验。

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

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

相关文章

ADI Blackfin DSP处理器-BF533的开发详解67:PCM的播放(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 代码实现功能 代码实现了打开代码工程目录下的“test.snd”文件,并读取 6MB 的数据到内存中,然后将内存中的数据进行循环…

C语言重点解剖第17课笔记

1.预处理阶段,先去注释,再宏替换。所以宏替换不能用于去注释。 #define bsc //就变成了一个空的宏。(//在这里面本来就是注释,只是注释后面的内容为空) 2.宏定义并不是简单的无脑替换。 printf(" ")中,双引号里面的东…

uniCloud云开发----3、uniApp中文件上传(通过插件(uniFilePicker)或者 uniCloud.uploadFile实现方案)

uniApp中文件上传前言效果图1、使用unifilePicker插件(1)安装unifilePicker插件(2)简单案例2、通过原生的 uniCloud.uploadFile来实现共同成长共同进步前言 uniapp图片上传插件unifilePicker 在开发uniapp的时候上传文件是必不可…

从月入5千到现在的月入1W+,会计转程序员,“谁说女的不适合学编程?”

前言 我毕业五年了,但与技术和 Python 相关的工作经验也就两年。今天我想跟大家分享自己转行的故事,希望能够鼓励那些跟我一样的朋友共同前行。 我们将会聊到我个人的经历和入行故事,讨论快速学习的方法,最后推荐一些学习资源。…

“互联网+”获奖项目专访 | 阿尔兹海默症患者辅助诊断研究分享

在本届“互联网”创新创业大赛中 昇思MindSpore群英荟萃团队荣获全国总决赛铜奖 本期有幸邀请到 团队负责人李鹏和指导老师胡悦进行采访 一起来看看夺奖背后的故事吧 PART ONE 团队介绍 群英荟萃团队 1. 项目成员 李鹏、周晨、邹静、纪雨萍、李晓迪、张英豪 2. 指导老…

Insight Enterprises EDI 850 采购订单报文详解

Insight Enterprises 是一家世界 500 强解决方案集成商,在全球拥有 11,500 多名员工,帮助企业加速数字化转型。Insight为管理其庞大的供应链建立了EDI(Electronic Data Interchange,中文名称是电子数据交换)系统&#…

Android 进阶——Framework 核心之Touch事件分发机制详细攻略(一)

文章大纲引言一、Android 事件分发概述二、Touch事件分发的对象MotionEvent三、分发事件的核心对象及方法1、分发事件的核心对象2、事件分发的核心方法四、Touch事件分发的流程1、Activity的事件处理流程2、ViewGroup&View的事件分发流程五、事件分发的应用1、事件拦截2、响…

刨根问底Kafka 40问,看看你能坚持到第几问

Kafka最初是由Linkedin公司开发的,是一个分布式的、可扩展的、容错的、支持分区的(Partition)、多副本的(replica)、基于Zookeeper框架的发布-订阅消息系统,Kafka适合离线和在线消息消费。它是分布式应用系…

【JavaSE】内部类

目录 前言: 内部类 什么是内部类? 内部类的分类 1、静态内部类 1、静态内部类,不能直接被实例化 2、 静态内部类当中,不能直接访问外部类的非静态成员,但是可以直接访问外部类的静态成员。 3、外部类可以访问静…

java -数据结构 - 集合框架及背后的数据结构

什么是集合框架 数据结构,我们知道数据结构就是组织数据的一种方式,比如所链表,就是将数据存储在链表的value域中,next域就是存储下一个节点的地址,通过这样的方式将数据组织起来。 在我们学习中,所知道 的…

接口幂等实现基于注解(适用于分布式系统中支持spEl动态过滤)

在网络卡顿时,容易出现在极短的时间内产生重复请求,或重复支付,一般我们会在数据操作时先通过数据查询是否存在,然后再进行业务逻辑操作的方式来进行避免,但是这种方式并不是原子性,很容易出现第一次请求未进行落表,第二次重复的请求就已经通过了数据库查询,可通过设置唯一索引…

用于开发语音 AI 应用程序的 GPU 加速 SDK

NVIDIA Riva 简介:用于开发语音 AI 应用程序的 GPU 加速 SDK 语音 AI 用于多种应用,包括联络中心的座席助理以增强人类座席的能力、智能虚拟助理 (IVA) 的语音界面以及视频会议中的实时字幕。 为了支持这些功能,语音 AI 技术包括自动语音识别…

基于springboot的社区团购管理系统的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

FineReport企业报表工具-JS根据条件显示参数控件

1. 概述 1.1 版本 报表服务器版本 功能变更 11.0 -- 1.2 问题描述 在使用参数控件时,有时我们希望部分参数控件在没满足条件时不显示,满足条件后再显示,如下图效果,只有前面的下拉框选择了内容之后,后一层下拉框控…

【C语言】重要函数qsort函数的用法

目录 一、qsort函数的介绍 1、整形数组 2、字符数组 3、字符串 4、结构体 二、qsort函数的使用 一、qsort函数的介绍 qsort函数是一种底层快速排序的函数,它的特点就是可以排序任意类型的数据,比如:整形、字符串、浮点型、以及结构体类型。 …

VUE3-组件之间传值《四》

目录 一.父传子,父组件向子组件传值 二.子传父,子组件向父组件传值 三.兄弟组件之间互传,2个组件之间是平级关系,互相传值 组件之间的传值,分为3种方式 一.父传子,父组件向子组件传值 1.建立一个默认的…

零信任深入理解--概念,架构和实现方案

1. 零信任究竟解决了什么问题? 很多人在初步了解“零信任”概念,乃至进一步研究一些技术和产品方案之后,会有种“不过如此”的感觉。 毕竟, IAM(Identity and Access Management,身份识别与访问管理&…

6. 【gRPC系列学习】Balance原理详解

本节开始分析Balance执行原理,通过上面流程可知,Balance Build的创建来自于Resolver的解析完成后调用updateResolverState方法,我们从updateResolverState方法开始分析Balance执行流程。 1. Balance调用流程 1)updateResolverState(s resolver.State, err error) error 方…

Java培训MySQL之全局序列

1.本地文件 不推荐,存在宕机序列丢失问题。 2.数据库方式 数据库序列方式原理 利用数据库一个表 来进行计数累加。但是并不是每次生成序列都读写数据库,这样效率太低。 mycat会预加载一部分号段到mycat的内存中,这样大部分读写序列都是在…

第二章:Linux的目录结构-[基础篇]

一:基础介绍 linux的文件系统是采用级层式的数状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。 深刻理解linux树状文件目录是非常重要的,这里我给大家说明一下。 记住一句经典的话:在Li…