自动化测试只会用工具就行?真不是这样

2023-10-26

软件测试是对项目研发过程的产物(文档、代码等)进行审查,保障产品质量的过程。我们可以通过手工测试、自动化测试、工具扫描等方法完成这个任务。

其中,自动化测试是当前重要的一种测试方法,具有响应速度快、稳定性高、人工干预少的特点,很好地契合了高响应、海量数据验证等需求的测试任务。

数据驱动是自动化测试的灵魂,数据驱动的应用程度直接决定了自动化测试的水平和质量。

自动化测试和数据驱动

如果你有100亩麦子需要收割,你会怎么做?

  • 方法一:拎起镰刀或者雇几个人拎起镰刀割麦子。

  • 方法二:制造或者购买一台收割机,然后开着收割机割麦子。

显然,这两种方法都能完成任务,但是,方法二具有重资产、高效率的特点。

测试就如同割麦子,完成麦子收割是测试任务,手工收割和收割机收割对应手工测试和自动化测试两种方法。

这两种方法各有利弊,手工测试具有上手易(一把镰刀就行),适应性强(不论平地、梯田,还是丘陵都ok)的特点,自动化测试具有效率高(收割速度快)、质量稳定(机器不容易犯错)、不疲劳(机器不用休息)的特点。

对于那种对测试质量要求稳定,测试反馈要求快,需要反复验证和海量数据验证的测试任务,自动化测试技术可以很好满足这类测试任务的要求。

测试数据如同机油,是收割机运行的燃料。数据驱动是自动化测试的核心,如同机器的发动机,是机器运行的动力源。没有测试数据这个燃料和数据驱动这个动力源,收割机就是一台没有灵魂的废铁无法运转,自动化测试也就无从谈起。

测试数据

测试数据作为测试的输入,测试数据准备的质量直接决定到测试范围是否全面,测试程度是否充分,最终影响测试过程的质量。

测试数据从来源可以概括为源自存量数据和源自新增数据两类。

源自存量数据

源自存量数据是指利用原有系统运行积累的生产数据,经过脱敏、加工后生成的测试数据。这个原有系统可以是系统自身(升级优化前的系统、重构前的系统、手工记录的业务数据等),也可以是业务关联系统(业务上游系统、交互系统等)。

这类测试数据的特点是数据已经存在,可以直接使用,缺点是这类数据是通过正常的业务逻辑积累产生的,通常是还是高频交易产生的数据。这类数据天然具有局限性,无法覆盖系统的所有业务场景,如:异常操作、低频交易等。

源自新增数据

源自新增数据是指根据业务需求、系统设计,创造出来的符合业务需求的数据。

该类数据是测试人员通过分析业务需求、系统设计,针对项目业务需求(含高频交易和低频交易)、异常处理、边界值检验等人为创造的数据。

这类测试数据的特点是测试数据经过系统性分析,覆盖面较广,代表性较强。不足之处在于数据都需要人工创造,当系统较为复杂或者规模较大时需要的测试数量较多,人工制造成本较大。

基于这两个数据来源,我们结合业务需求,就可以完成项目测试数据的准备工作,通过分析、筛选、提炼,最终沉淀为本次测试所需的测试数据。

数据驱动测试

数据驱动测试是自动化测试的灵魂,在数据驱动测试的思想中,自动化案例就是流水线,测试数据像水一样通过流水线,触发系统做出响应。

然后,通过配置在流水线上的断言、检查点,比对系统响应是否符合预期响应。

  • 符合,则表示该功能场景正常

  • 不符合,则预示该功能处理存在异常

显而易见,测试数据是至关重要的。那么自动化测试中的测试数据都从哪里获取呢?

自动化测试数据本质上和手工测试数据类似。但是,由于自动化测试是程序自动运行,相较于手工测试数据天然具有需求量大、需求范围广、数据来源多等特点。

传统的手工准备数据从数量上和来源上无法满足自动化测试运行所需的庞大数量要求,这时,我们需要在手工准备数据的基础上引入自动化的数据生成方法。

大体上自动化测试数据可以归为四大类、、八小类,详见下表。

在这里插入图片描述
自动化测试所需要的测试数据部分仍可通过手工制作,主要为固定标签类值和数据资源池两类。

固定标签类值

固定标签类值即该字段有明确的取值列表,如银行卡账户类型(0-I类、1-II类、3-III类)、是否属地(0-本地、1-异地)、客户类型(G-政府、B-商户、C-个人)等。

数据资源池

数据资源池即将某些可以重复使用且数量少的数据,存储在数据库、CSV文件、text文件、ini文件等介质中供程序反复抽取使用,这个数据池子我们称为数据资源池,如身份证号、手机号、卡号、商户号等这类离散数据。

通过自动化方式准备测试数据,主要可以分为查询、修改、新增这三类。

查询类测试数据

查询类测试数据可以通过联机查询和sql查询两种方式获得,查询类测试数据说明测试数据本身是存在的,需要通过筛选条件甄别出本次需要的数据,作为测试数据。

联机查询和sql查询的区别就在于我们所需的数据是否有现成的查询接口可用,若无,则需手动编写sql语句完成数据筛选修改类数据也是一种已存在的数据。

修改类数据

修改类数据和查询类数据的区别在于查询类测试数据的源数据满足测试需要可以直接使用,而修改类测试数据的源数据无法满足测试需要不能直接使用,需通过修改某些属性才能满足测试要求。

因此需要通过修改操作对源数据进行二次修改,联机修改和sql修改的区别在于是否有联机修改接口可供使用。

新增类测试数据

新增类测试数据说明当前环境中无满足测试需求的源数据或者修改源数据无法满足测试要求时,需新增测试数据。

比如银行账户类数据,由于涉及客户信息校验、记账校验等,单纯的插入一条数据很难通过系统校验,我们通常直接通过系统开户交易直接新增数据。比如新建系统无存量数据,或者环境中缺乏某些稀有类型的数据时,我们需要新增交易添加铺底数据。

结语

市面上有各种形形色色的自动化测试工具,诸如JMeter、Postman、Metersphere等等。

测试人员在接触自动化测试之初,容易沉迷于了解、掌握更多的测试工具,忽略提升自动化测试认知水平,而陷于初级自动化测试的陷阱,疲于学习而无法提升自我。

本文致力于提升大家对自动化测试的认识,引导大家向更高层次的自动化测试发展,提升测试人员整体价值。

最后也分享一份我自己整理的学习资料,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!加入我们交流群:642830685就可以免费获取了,希望对大家有所帮助…….

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自动化测试只会用工具就行?真不是这样 的相关文章

  • APP端网络测试与弱网模拟

    当前APP网络环境比较复杂 网络制式有2G 3G 4G网络 还有越来越多的公共Wi Fi 不同的网络环境和网络制式的差异 都会对用户使用app造成一定影响 另外 当前app使用场景多变 如进地铁 上公交 进电梯等 使得弱网测试显得尤为重要
  • 测试工程师能否作为一份「终身职业」?30岁+怎么办?

    讨论 测试工程师可否作为一份终生的职业 这是我在论坛看到的一个讨论 你的答案是什么呢 我希望大家能认真思考后给出一个属于自己的答案 无论你是新手入门 还是资深专家 回答这个问题请不要凭一腔热血 也不用过分消极 别总和钱挂钩 平心而论即可 就
  • 测试用例评审流程优化

    测试用例 评审是QA日常工作流程中的关键一环 是QA同学完善测试用例 交流测试经验的好机会 负责组内测试用例建设以来 作者对于评审流程做了一些优化工作 本文作者将整个优化过程中的心得体会做了一个总结 希望能给大家带来帮助 01 原始流程 1
  • 软件测试|SQLAlchemy环境安装与基础使用

    简介 SQLAlchemy 是一个强大的 Python 库 用于与关系型数据库进行交互 它提供了高度抽象的对象关系映射 ORM 工具 允许使用 Python 对象来操作数据库 而不必编写原生SQL查询 本文将介绍如何安装 SQLAlchem
  • 软件测试|使用matplotlib绘制平行坐标系图

    简介 绘制平行坐标系图 Parallel Coordinates Plot 是一种用于可视化多维数据的强大方法 在这篇文章中 我们将介绍如何使用Matplotlib库创建平行坐标系图 以及如何解释和定制这种图表 我们将使用一个示例数据集来演
  • 软件测试|Python数据可视化神器——pyecharts教程(九)

    使用pyecharts绘制K线图进阶版 简介 K线图 Kandlestick Chart 又称蜡烛图 是一种用于可视化金融市场价格走势和交易数据的图表类型 它是股票 外汇 期货等金融市场中最常用的技术分析工具之一 可以提供关于价格变动 趋势
  • 软件测试|使用matplotlib绘制多种柱状图

    简介 在数据可视化领域 Matplotlib是一款强大的Python库 它可以用于创建多种类型的图表 包括柱状图 本文将介绍如何使用Matplotlib创建多种不同类型的柱状图 并提供示例代码 创建基本柱状图 首先 让我们创建一个基本的柱状
  • 盲猜你不懂H5架构和原生架构的区别

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 跨平台UI自动化框架:Airtest,游戏开发和应用测试的利器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 如何写好一个错误报告

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 新手也能看懂的【前端自动化测试入门】!

    前言 最近在网上搜索前端自动化测试相关的文档 但是发现网上的文章都是偏使用 没有把一些基础概念说清楚 导致后续一口气遇到一些 karma Jasmine jest Mocha Chai BDD 等词汇的时候很容易一头雾水 这次一方面整理一下
  • 甜蜜而简洁 —— 深入了解Pytest插件pytest-sugar

    在日常的软件开发中 测试是确保代码质量的关键步骤之一 然而 对于测试报告的生成和测试结果的可读性 一直以来都是开发者关注的焦点 Pytest插件 pytest sugar 以其清晰而美观的输出 为我们提供了一种愉悦的测试体验 本文将深入介绍
  • Python常用的自动化小脚本!

    一 list转json string转json 可以使用Python内置的 json 模块将列表 List 和字符串 String 转换成JSON格式 List转JSON假设我们有一个列表 List my list apple banana
  • 探索自动化测试断言:提升测试效率与质量的关键!

    前言 断言在自动化测试中起着关键的作用 它是验证测试结果是否符合预期的重要手段 如果在自动化测试过程中忽视了断言 那么这个测试就失去了其本质的意义 因为我们无法得知测试结果是否达到了预期的效果 因此 断言在自动化测试中的重要性不言而喻 那么
  • 2024拒绝行业内卷!八年软件测试20K*16薪行业心得 想入行必看

    目前工作做软件测试工作8年 属于高级测试员那个级别吧 现在看到各行各业的人都在转行学习软件测试 想给大家一些学习建议和忠告 很多粉丝都跟我说今年行情很差 找不到工资 真的找不到工作了吗 我们常在网上看到的 程序员饱和 程序员过剩 其实一般是
  • 程序员找工作难!拿到外包公司的 offer 我应该去么?

    引言 前一阵子有一个帖子引起了非常广泛的讨论 描述的就是一个公司的外包工作人员 加班的时候因为吃了公司给员工准备的零食 被公司的HR当场批评 这个帖子一发出来 让现在测试行业日益新增的外包公司备受关注 那么外包公司和非外包公司有什么样的不一
  • 外包干了2个月,技术倒退2年。。。

    先说一下自己的情况 本科生 20年通过校招进入深圳某软件公司 干了接近4年的 功能测试 今年国庆 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了3年的女朋
  • 一文让你快速写出高效的软件测试用例

    前言 编写测试用例的目的就是确保测试过程全面高效 有据可查 但要编写出高效的测试用例 需要搞清楚什么是测试用例 以及如何编写出高效的测试用例 接下来将从以下几个部分来进行展开 1 什么是测试用例 2 如何编写测试用例 3 软件测试学习资源分
  • 外包干了3个月,技术退步明显。。。。。

    先说一下自己的情况 本科生 20年通过校招进入广州某软件公司 干了接近3年的 功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了3年的功能测试 已经让我变得不思进取 谈了2年的女朋
  • 深入解析 YAML 配置文件:从语法到最佳实践

    一 认识YAML YAML YAML Ain t Markup Language 是一种人类可读的数据序列化语言 它的设计目标是使数据在不同编程语言之间交换和共享变得简单 YAML采用了一种简洁 直观的语法 以易于阅读和编写的方式表示数据结

随机推荐

  • 教程资源(持续更新中)

    https www liwenzhou com posts Go golang menu 下面这个也很牛逼 the way to go ZH CN directory md at master piexlmax the way to go
  • 数据结构与算法 ---- 线性表 及Java实现 顺序表、链表、栈、队列

    数据结构与算法是程序设计的两大基础 大型的IT企业面试时也会出数据结构和算法的题目 它可以说明你是否有良好的逻辑思维 如果你具备良好的逻辑思维 即使技术存在某些缺陷 面试公司也会认为你很有培养价值 至少在一段时间之后 技术可以很快得到提高
  • 散列表(hash表)的基本原理以及hash冲突(碰撞)

    散列表为什么诞生 它用于做什么 先说说数组 数组的优点是查找比较快 但是添加和删除效率比较低 再说说链表 链表的优点是添加和删除效率比较快 相对于数组 但是遍历需要一个指针从头节点往后找 两者都各有优点和缺点 那么有没有一种方法 既可以添加
  • MAC(m1)-VMWare Fusion CentOS8设置静态IP、SSH连接

    在使用虚拟机的时候 默认情况下使用的DHCP协议 根据网段自动分配ip 分配的动态IP地址 使得每次打开虚拟机后当前的IP地址都会发生变化 这样不方便管理 为了能够给当前虚拟机设置 一个静态IP地址 方便后期使用XShell连接工具进行连接
  • 打造属于自己的正则表达式

    概述 首先需要说明的一点 无论是Winform 还是Webform 都有很成熟的日历控件 无论从易用性还是可扩展性上看 日期的选择和校验还是用日历控件来实现比较好 前几天在CSDN多个版块看到需要日期正则的帖子 所以整理了这篇文章 和大家一
  • 【windows无法自动将IP协议堆栈绑定到网络适配器的一种解决办法】

    今天打开笔记本发现没网了 能够连上WiFi但无法连接到互联网 以太网能够检测到网线插入 但同样无法连接到互联网 使用windows自带的疑难解答进行检测结果为网络适配器的驱动程序可能出现问题 以管理员身份进行修复也失败 查看详情提示wind
  • linux命令之sh的用法

    shell简介 sh命令就是shell 而我们知道shell的作用是什么 shell就是用来解释linux命令的 我们输入命令 指示linux帮我们做什么 而linux本身是看不懂我们输入的命令的 它只认识01 而事实显然不是如此 那么在用
  • vcs import src < ros2.repos失败

    网上找到的ros安装教程 但是运行到下面几部的时候出现了问题 1 mkdir p ros2 ws src 2 cd ros2 ws 3 wget https raw githubusercontent com ros2 ros2 dashi
  • 大Sql文件使用cmd命令执行

    sqlcmd S 127 0 0 1 U sa P 123 d tcd test1217 i E fap sql 键入 sqlcmd S 127 0 0 1 U sa P 000000 d DataBaseName i sqlfileNam
  • 读书笔记 - Direct93D游戏程序设计入门

    这本书是directx入门很好的教材 门槛低 可以了解directx很多基本的东西 可以作为跳板 看完以后去学习更高级的东西 比如directx自带的sample 以前看过这本书 现在再看一遍 主要目的是熟悉dx基本绘制知识 书中主要包含到
  • 2012-04-26 14:42 PROFILE各种选项

    2012 04 26 14 42 PROFILE各种选项 1 用户创建语句选项 引发的血案 如果大家细心的话 在创建用户的语法中有这么一个选项 PROFILE profile 下面是 11gR2官方文档中关于创建用户的语法描述 较之的文档可
  • 漏洞补丁:漏洞命名(CVE和CNNVD)及补丁查找

    摘要 以前一个项目 最近收到一份脆弱性分析报告 漏洞报告 通过这份报告小技能 1 记录一下报告中几个重要编号说明和如何下载对应的补丁文件 一 名称介绍 截图为报告的部分内容 里面包含了编号 描述 解决地址 这里对 CVE编号 CVSS分值
  • redis集群的维护(redis-cli --cluster 命令用法)

    目录 前言 1 cluster create 创建集群 2 cluster check 检查集群 3 cluster info 查看集群 4 cluster fix 修复集群 5 cluster rehard 迁移槽位 6 cluster
  • Windows10下安装Carla及基本操作

    1 Carla介绍 一款用于自动驾驶研究的开源模拟器 2 安装依赖 首先我们需要确保电脑已安装Python3 X 在命令行中输入 pip install user pygame numpy 安装pygame和numpy模块 3 下载ZIP文
  • 回归预测

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 内容介绍 采用 DNN 深度神经网络作为模型训练架构 具体如图 3 所示 模型输入 将网络训练
  • WebAssembly学习(三)——初步读取本地文件

    WebAssembly学习 三 初步读取本地文件 在之前的学习记录里面 已经实现了简单的hello word打印 在这一步学习如何利用SDL库打印图案以及加载文件 原文参考Emscripten的官网 利用SDL库打印图案 SDL库 SDL是
  • 【动态规划】背包问题(详细总结,很全)

    动态规划 一 背包问题 1 背包问题总结 1 动规四部曲 2 递推公式总结 3 遍历顺序总结 2 01背包 1 二维dp数组 代码实现 2 一维dp数组 代码实现 3 完全背包 代码实现 4 多重背包 代码实现 一 背包问题 1 背包问题总
  • Docker查看容器挂载目录

    只显示Docker容器挂载目录信息 docker inspect format Config Volumes 369a1376f78c 显示Docker容器和物理主机挂载目录信息 方法一 docker inspect f Mounts 36
  • AttributeError: module ‘faiss‘ has no attribute ‘StandardGpuResources‘

    pip install faiss gpu pip install faiss cpu 若安装了GPU版本的Faiss 仍然报以下错误 module faiss has no attribute StandardGpuResources m
  • 自动化测试只会用工具就行?真不是这样

    软件测试是对项目研发过程的产物 文档 代码等 进行审查 保障产品质量的过程 我们可以通过手工测试 自动化测试 工具扫描等方法完成这个任务 其中 自动化测试是当前重要的一种测试方法 具有响应速度快 稳定性高 人工干预少的特点 很好地契合了高响