学自动化测试可以用这几个练手项目
练手项目的业务逻辑比较简单,只适合练手,不能代替真实项目。
学习自动化测试最难的是没有合适的项目练习。 测试本身既要讲究科学,又有艺术成分,单单学几个 api 的调用很难应付工作中具体的问题。
你得知道什么场景下需要添加显性等待,什么时候元素定位需要写得更加优雅,为什么需要断言这个元素,而不是另一个。你得有合适的页面控件才能练习某种操作。
现在网上关于练习自动化的文章有很多,但是可以供学习使用的练习项目却非常稀缺。有的项目操作比较简单,无法达到练习各种操作的效果。有的项目非常复杂,光熟悉业务就要半个月。
可以说,一个好的练习项目对掌握好自动化测试至关重要。练习项目的业务不应该太复杂,否则我们需要花很多时间理清业务关系。 也不能太简单,否则我们无法练习到有用的技能。 项目应该尽可能涵盖较多的知识点,让我们在学习过程中反复练习不太熟练的技能, 而且它最好有通用的管理权限,方便我们自己选择角色等等要求。
我推荐几个还算不错的在线练习项目,如果你苦于没有项目练习,可以去看看。
第一个项目叫 JpetStore
网址是: https://petstore.octoperf.com/actions/Catalog.action
这是一个电商项目,你可以在网站上购买各种宠物。 常见的电商网站操作在这个项目中都可以找到,比如注册,登录,查找商品,选择商品,添加购物车,下单,查看定位,确认收货地址等等。
网站需要的个人信息并不需要真实的,付款也不需要真的付钱,并不需要担心个人信息泄漏等问题。而且这个项目由大名鼎鼎的 mybatis 提供,使用 spring 框架搭建, 很多Java 开源项目都用它来举例子。
业务简单,流程清晰,操作类型丰富,几乎是完美的练习平台,非常适合练习 web 自动化测试。
第二个项目叫 letcode,
项目地址是 https://letcode.in/test
这是一个网页 ui 元素展示网站,列举了几乎所有流行的网页控件,如果你正在学 selenium 这样的框架,那可以赶紧用这个项目练习一下 selenium 的操作方法。比如点击、拖动、切换等常见的页面元素,在这个网站上都有现成的控件可以操作。你只需要进入首页,然后点击合适的控件,就可以进入这个控件的专题界面。
第三个项目叫 booker,
项目地址是 https://automationintesting.online/#/
它是一个在线预定房间的项目,有点类似携程、艺龙这样的网站。你可以在网站上通过滑动选择房间,然后输入自己的信息完成房间预定。这个网站使用 RESTful 风格的接口,你可以分析后端接口和前端的交互,对输入信息的合法性进行校验, 适合练习前后端交互和联调。
可能很多人会说:为什么不直接用真实项目,而要用这些在线的练习项目。 首先,我还是建议能用真实项目就直接用真实项目,如果没有再考虑练习项目。 你也可以在学习还不是特别熟练的时候先用练习项目上手, 熟练后再通过真实项目实战。
练习项目还有一些额外的好处:
- 没有对自动化测试工具做拦截和屏蔽,你可以直接上手 selenium 这样的工具,如果在真实项目中,很有可能被检测到,禁止通过 selenium 访问
- 对个人信息保护更直接。练习项目通过你可以随意构造自己的身份信息,不用担心自己的信息泄漏。
- 用户交互往往更简单直接。
- 质量一般没有正式项目那么高,你更容易找到 bug, 有点成就感。
当然它也有明显的不足:
- 设计会比较丑,可能会影响你的心情
- 不支持大规模的并发操作,不然会崩
- 业务逻辑比较简单,很难模拟真实的业务复杂度。
总的来说,在没有正式的项目经验前,找到一个合适的练手项目,把自己的专业知识转变成可以应用的技能,还是非常好的。希望对正在学习的同学有帮助,如果你也有很好的练习项目,欢迎和我一起分享。
最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】
相关文章:
学自动化测试可以用这几个练手项目
练手项目的业务逻辑比较简单,只适合练手,不能代替真实项目。 学习自动化测试最难的是没有合适的项目练习。 测试本身既要讲究科学,又有艺术成分,单单学几个 api 的调用很难应付工作中具体的问题。 你得知道什么场景下需要添加显…...
2023年保健饮品行业分析:市场规模不断攀升,年度销额增长近140%
随着人们健康意识的不断增强,我国保健品市场需求持续增长,同时,保健饮品的市场规模也在不断攀升。 根据鲸参谋电商数据显示,2022年度,京东平台上保健饮品的年度销量超60万件,同比增长了约124%;该…...
2023-02-17 学习记录--TS-邂逅TS(一)
TS-邂逅TS(一) 不积跬步,无以至千里;不积小流,无以成江海。💪🏻 一、TypeScript在线编译器 https://www.typescriptlang.org/play/ 二、类型 1、普通类型 number(数值型ÿ…...
SpringMVC创建异步回调请求的4种方式
首先要明确一点,同步请求和异步请求对于客户端用户来讲是一样的,都是需客户端等待返回结果。不同之处在于请求到达服务器之后的处理方式,下面用两张图解释一下同步请求和异步请求在服务端处理方式的不同:同步请求异步请求两个流程…...
MySQL(二)表的操作
一、创建表 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 说明: field 表示列名 datatype 表示列的类型 character set 字符集,如…...
SpringCloud - 入门
目录 服务架构演变 单体架构 分布式架构 分布式架构要考虑的问题 微服务 初步认识 案例Demo 服务拆分注意事项 服务拆分示例 服务调用 服务架构演变 单体架构 将业务的所有功能集中在一个项目中开发,打成一个包部署优点: 架构简单部署成本低缺…...
进一步了解C++函数的各种参数以及重载,了解C++部分的内存模型,C++独特的引用方式,巧妙替换指针,初步了解类与对象。满满的知识,希望大家能多多支持
C的编程精华,走过路过千万不要错过啊!废话少说,我们直接进入正题!!!! 函数高级 C的函数提高 函数默认参数 在C中,函数的形参列表中的形参是可以有默认值的。 语法:返…...
Chapter6:机器人SLAM与自主导航
ROS1{\rm ROS1}ROS1的基础及应用,基于古月的课,各位可以去看,基于hawkbot{\rm hawkbot}hawkbot机器人进行实际操作。 ROS{\rm ROS}ROS版本:ROS1{\rm ROS1}ROS1的Melodic{\rm Melodic}Melodic;实际机器人:Ha…...
Sass的使用要点
Sass 是一个 CSS 预处理器,完全兼容所有版本的 CSS。实际上,Sass 并没有真正为 CSS 语言添加任何新功能。只是在许多情况下可以可以帮助我们减少 CSS 重复的代码,节省开发时间。 一、注释 方式一:双斜线 // 方式二:…...
计算机启动过程,从按下电源按钮到登录界面的详细步骤
1、背景 自接触计算机以来,一直困扰着我一个问题。当我们按下电脑的开机键后,具体发生了哪些过程呢?计算机启动的具体步骤是什么? 计算机启动过程通常分为五个步骤:电源自检、BIOS自检、引导设备选择、引导程序加载和…...
LeetCode 刷题之 BFS 广度优先搜索【Python实现】
1. BFS 算法框架 BFS:用来搜索 最短路径 比较合适,如:求二叉树最小深度、最少步数、最少交换次数,一般与 队列 搭配使用,空间复杂度比 DFS 大很多DFS:适合搜索全部的解,如:寻找最短…...
Hadoop01【尚硅谷】
大数据学习笔记 大数据概念 大数据:指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 主要解决,海量数据的存储…...
Echarts 配置横轴竖轴指示线,更换颜色、线型和大小
第018个点击查看专栏目录本示例是描述如何在Echarts上配置横轴竖轴指示线,更换颜色、线型和大小。方法很简单,参考示例源代码。 文章目录示例效果示例源代码(共85行)相关资料参考专栏介绍示例效果 示例源代码(共85行&a…...
OpenAI 官方API Java版SDK,两行代码即可调用。包含GhatGPT问答接口。
声明:这是一个非官方的社区维护的库。 已经支持OpenAI官方的全部api,有bug欢迎朋友们指出,互相学习。 注意:由于这个接口: https://platform.openai.com/docs/api-reference/files/retrieve-content 免费用户无法使…...
SpringBoot 日志文件
(一)日志文件有什么用?除了发现和定位问题之外,我们还可以通过日志实现以下功能:记录用户登录日志,以便分析用户是正常登录还是恶意破解用户。记录系统的操作日志,以便数据恢复和定位操作 。记录程序的执行时间&#x…...
SQL71 检索供应商名称
描述Vendors表有字段供应商名称(vend_name)、供应商国家(vend_country)、供应商州(vend_state)vend_namevend_countryvend_stateappleUSACAvivoCNAshenzhenhuaweiCNAxian【问题】编写 SQL 语句,…...
02:入门篇 - 漫谈 CTK
作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 十万个为什么 五千个在哪里?七千个怎么办?十万个为什么?。。。生活中,有很多奥秘在等着我们去思考、揭示! 同样地,在使用 CTK 时,很多小伙伴一定也存在诸多疑问: 为什么 CTK Plugin Framework 要借…...
SpringBoot常用注解
SpringBootApplication注解包含如下三个SpringBootConfigurationEnableAutoConfigurationComponentScanSpringBootConfiguration等同于Configuration,是属于spring的一个配置类这里的 Configuration 对我们来说并不陌生,它就是 JavaConfig 形式的 Spring…...
RBAC权限模型
什么是RBAC权限模型? RBAC是基于角色的访问控制,在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。 1.0级 用户、角色、权限 2.0 权限分级 公司>部门>小组 2.1 权限继承 ps: 这个人是一个小组长…...
【郭东白架构课 模块一:生存法则】07|法则三:架构师如何找到自己的商业模式?
你好,我是郭东白,今天我们来聊聊架构活动中对商业价值的考量。 今天我们要讲的是架构师的第三个生存法则:作为一个架构师,必须要在有限的资源下最大化架构活动所带来的商业价值。对于任何一个架构活动而言,架构师的可…...
STM32 - 看门狗
独立看门狗 IWDG专业时钟LSI 低功耗仍可以运行对定时的控制比较松喂狗这些时间是按照40kHz时钟给出。实际上,MCU内部的RC频率会在30kHz到60kHz之间变化。此外,即使RC振荡器的频率是精确的,确切的时序仍然依赖于APB接口时钟与RC振荡器时钟之间…...
Redis集群搭建
一、哨兵模式 在 redis3.0之前,redis使用的哨兵架构,它借助 sentinel 工具来监控 master 节点的状态;如果 master 节点异常,则会做主从切换,将一台 slave 作为 master。 哨兵模式的缺点: (1&…...
车载基础软件——AUTOSAR AP典型应用案例
我是穿拖鞋的汉子,魔都中一位坚持长期主义的工程师! 最近不知道为何特别喜欢苏轼的一首词: 缺月挂疏桐,漏断人初静。谁见幽人独往来,缥缈孤鸿影。 惊起却回头,有恨无人省。拣尽寒枝不肯栖,寂寞…...
消息中间件----内存数据库 Redis7(第3章 Redis 命令)
Redis 根据命令所操作对象的不同,可以分为三大类:对 Redis 进行基础性操作的命令,对 Key 的操作命令,对 Value 的操作命令。3.1 Redis 基本命令首先通过 redis-cli 命令进入到 Redis 命令行客户端,然后再运行下面的命令…...
react-03-react-router-dom-路由
react-router-dom:react路由 印记中文:react-router-dom 1、路由原理 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>前端路由的基石_history</title> </head> <body><a hre…...
2自由度悬架LQR控制
目录 1 悬架系统 1.1 悬架结构示意图 1.2 悬架数学模型 1.3 路面激励 2.仿真分析 2.1simulink模型 2.2 仿真结果 2.3 结论 3. 总结 1 悬架系统 1.1 悬架结构示意图 1.2 悬架数学模型 其中:x1为悬架动扰度,x2为车身加速度,x3为轮胎…...
C语言返回类型为指针的一些经典题目(下)
续上一篇文章,上一篇文章题目都很经典,这一篇也不例外。一.返回类型为指针经典题目(下)1.代码(第六题)char *GetMemory3(int num) {char *p (char *)malloc(sizeof(char) * num);return p; } void Test3(void) {char *str NULL;str GetMemory3(100…...
OpenAI 官方api 阅读笔记
网站 API Key concepts Prompts and completions You input some text as a prompt, and the model will generate a text completion that attempts to match whatever context or pattern you gave it. Token 模型通过将文本分解成token来理解和处理, 处理token数量取…...
微服务项目【分布式锁】
创建Redisson模块 第1步:基于Spring Initialzr方式创建zmall-redisson模块 第2步:在zmall-redisson模块中添加相关依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</a…...
JavaWeb5-线程常用属性
目录 1.ID 2.名称 3.状态 4.优先级 5.是否守护线程 5.1.线程类型: ①用户线程(main线程默认是用户线程) ②守护线程(后台/系统线程) 5.2.守护线程作用 5.3.守护线程应用 5.4.守护线程使用 ①在用户线程&am…...
wordpress 注册/百度置顶广告多少钱
本文由 网易云 发布。 作者:冯宇 本篇文章仅限内部分享,如需转载,请联系网易获取授权。 本文是Impala源码笔记的第一篇,本文主要根据源代码学习一下statestored模块的实现,众所周知,Impala包含三个模块&am…...
云网站功能/网站建设技术托管
说好了面试系列已经完结了,结果发现还是真香,嗯,以为我发现我的Java基础都没写,所以这个就算作续集了,续集第一篇请各位收好。 说说进程和线程的区别? 进程是程序的一次执行,是系统进行资源分…...
wordpress从/网页seo
Eclipse的Activiti-designer插件有在线和离线两种安装方式 一、在线安装 在eclipse的help下选择安装新的插件, 点击Add,在 Name (自定义)和 Location输入如下信息 设计器在线地址为:http://activiti.org/designe…...
图书馆建设网站打不开/济南seo优化外包
1. 对于MVVM的理解 MVVM 是 Model-View-ViewModel 的缩写 Model: 代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。我们可以把Model称为数据层,因为它仅仅关注数据本身,不关心任何行为 View: 用户操作界面。当ViewModel对Mode…...
常州网站制作公司排名/抖音搜索seo排名优化
初级 fun() 全局对象window obj.sayName扩展 1this是什么 任何函数本质上都是通过某个对象调用的,如果没有指定就是window 所有函数内部都有一个变量this 它的值是调用函数的当前对象 2如何确定this的值 test()…...
电子商务网站 技术方案/百度一下全知道
Android 程序的安装、卸载和更新 原创 2010年08月10日 14:21:00标签:android /application /string /delete /file /api 20911 作者:徐建祥(netpirategmail.com) 日期:2010/07/28 网址:http://www.anymobile.org 安装程序&#x…...