• 1
  • 1
分享
  • 一文带你弄清楚数据驱动测试这点事儿
  • 九哥 2022-10-19 14:57:51 字数 2383 阅读 1928 收藏 1

软件测试是对项目研发过程的产物(文档,代码等)进行审查,保障产品质量的过程。我们可以通过手工测试,自动化测试,工具扫描等方法完成这个任务。其中,自动化测试是当前重要的一种测试方法,具有响应速度快、稳定性高、人工干预少的特点,很好的契合了高响应、海量数据验证等需求的测试任务。数据驱动是自动化测试的灵魂,数据驱动的应用程度直接决定了自动化测试的水平和质量。

一、自动化测试和数据驱动

如果你有100亩麦子需要收割,你会怎么做?方法一:拎起镰刀或者雇几个人拎起镰刀割麦子。方法二:制造或者购买一台收割机,然后开着收割机割麦子。显然,这两种方法都能完成任务,但是,方法二具有重资产、高效率的特点。

测试就如同这割麦子,完成麦子收割是测试任务,手工收割和收割机收割对应手工测试和自动化测试两种方法。这两种方法各有利弊,手工测试具有上手易(一把镰刀就行),适应性强(不论平地、梯田,还是丘陵都ok)的特点,自动化测试具有效率高(收割速度快)、质量稳定(机器不容易犯错)、不疲劳(机器不用休息)的特点。对于那种对测试质量要求稳定,测试反馈要求快,需要反复验证和海量数据验证的测试任务,自动化测试技术可以很好满足这类测试任务的要求。

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

二、测试数据

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

测试数据从来源可以概括为源自存量数据和源自新增数据两类。源自存量数据是指利用原有系统运行积累的生产数据,经过脱敏、加工后生成的测试数据。这个原有系统可以是系统自身(升级优化前的系统、重构前的系统、手工记录的业务数据等),也可以是业务关联系统(业务上游系统、交互系统等)。这类测试数据的特点是数据已经存在,可以直接使用,缺点是这类数据是通过正常的业务逻辑积累产生的,通常是还是高频交易产生的数据。这类数据天然具有局限性,无法覆盖系统的所有业务场景,如:异常操作、低频交易等。

源自新增数据是指根据业务需求、系统设计,创造出来的符合业务需求的数据。该类数据是测试人员通过分析业务需求、系统设计,针对项目业务需求(含高频交易和低频交易)、异常处理、边界值检验等人为创造的数据。这类测试数据的特点是测试数据经过系统性分析,覆盖面较广,代表性较强。不足之处在于数据都需要人工创造,当系统较为复杂或者规模较大时需要的测试数量较多,人工制造成本较大。

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

三、数据驱动测试

数据驱动测试是自动化测试的灵魂,在数据驱动测试的思想中,自动化案例就是流水线,测试数据像水一样通过流水线,触发系统做出响应。然后,通过配置在流水线上的断言,检查点,比对系统响应是否符合预期响应。符合,则表示该功能场景正常,不符合,则预示该功能处理存在异常。显而易见,测试数据是至关重要的。那么自动化测试中的测试数据都从哪里获取呢?自动化测试数据本质上和手工测试数据类似。但是,由于自动化测试是程序自动运行,相较于手工测试数据天然具有需求量大、需求范围广、数据来源多等特点。传统的手工准备数据从数量上和来源上无法满足自动化测试运行所需的庞大数量要求,这时,我们需要在手工准备数据的基础上引入自动化的数据生成方法。大体上自动化测试数据可以归为四大类,八小类,详见下表。

表-1自动化测试数据来源

微信截图_20221019143533.png

自动化测试所需要的测试数据部分仍可通过手工制作,主要为固定标签类值和数据资源池两类。固定标签类值即该字段有明确的取值列表,如银行卡账户类型(0-I类、1-II类、3-III类)、是否属地(0-本地、1-异地)、客户类型(G-政府、B-商户、C-个人)等。数据资源池即将某些可以重复使用且数量少的数据,存储在数据库、CSV文件、text文件、ini文件等介质中供程序反复抽取使用,这个数据池子我们称为数据资源池。如身份证号、手机号、卡号、商户号等这类离散数据。

通过自动化方式准备测试数据,主要可以分为查询、修改、新增这三类。查询类测试数据可以通过联机查询和sql查询两种方式获得,查询类测试数据说明测试数据本身是存在的,需要通过筛选条件甄别出本次需要的数据,作为测试数据。联机查询和sql查询的区别就在于我们所需的数据是否有现成的查询接口可用,若无,则需手动编写sql语句完成数据筛选修改类数据也是一种已存在的数据,修改类数据和查询类数据的区别在于查询类测试数据的源数据满足测试需要可以直接使用,而修改类测试数据的源数据无法满足测试需要不能直接使用,需通过修改某些属性才能满足测试要求。因此需要通过修改操作对源数据进行二次修改,联机修改和sql修改的区别在于是否有联机修改接口可供使用。

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

四、结语

市面上有各种形形色色的自动化测试工具,诸如jmeter、postman、metersphere等等。测试人员在接触自动化测试之处,容易沉迷于了解,掌握更多的测试工具,忽略提升自动化测试认知水平,而陷于初级自动化测试的陷阱,疲于学习而无法提升自我。本文致力于提升大家对自动化测试的认识,引导大家向更高层次的自动化测试发展,提升测试人员整体价值。


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 今天给大家分享一个“VirtualEnv(虚拟环境)”的概念。在学习RobotFramework时遇到这么一个问题:电脑本地环境已经安装了python3,但是RobotFramework接口测试框架一开始对python3的兼容还不够完全,存在较多的问题,所以需要使用python2环境来开展接口自动化工作。这个时候就遇到python和python3版本造成的环境冲突的问题了。如果卸载python3重新安装python2会导致我原有的其他项目可能出现问题;那么如果直接使用python3环境对应的RobotFramework又存在很多兼容性问题。怎么办?这时候“VirtualEnv(虚拟环境)”的好...
            0 0 1436
            分享
          • 调用JMeter的 "jmeter -?"命令将打印所有命令选项的一个列表。列表说明如下:-h, --help 打印使用信息并退出-v, --version 打印版本信息并推出-p, --propfile {argument} 使用的JMeter属性文件-q, --addprop {argument} 附加的属性文件-t, --testfile {argument} 运行的JMeter测试文件(.jmx)-l, --logfile {argument} 日志取样文件-n, --nongui 非用户界面运行JMeter-s, --server 运行JMeter服务器-H, -...
            0 0 1313
            分享
          •   作为一个工程师,你找工作的敲门砖是什么?是学历?是经验?还是年龄?  从事测试工程师的人员日趋增多,自然而然竞争也会变得激烈。如何让我们的工作履历变的更加精彩,除了我们实际的工作经验之外,能够直观我们技术的还有我们的职业证书,很多公司HR为了增加企业资质库、更快地筛查适合的人员,在招聘时会更倾向于拥有相关证书的应聘者。 今天我们就来盘点软件测试工程师领域含金量较高的几个证书吧! 软件测试工程师必须要了解的4个证书。  1.软件评测师  软件评测师考试(以下简称“软考”)是全国计算机技术与软件专业技术资格考试(简称计算机软件资格考试)的中级考试项目,它属于职业资格考试,又是职称资格考试,具有...
            1 1 11896
            分享
          •   据报道,谷歌之前一直在为“Z世代”(1995至2009年出生的)用户开发一款人工智能移动聊天机器人应用,并在其中配以互动数字角色。  但资料显示,该公司最近在内部重组中将该项目“降级”。通常而言,当谷歌对某个产品降级后,相关工作就会暂停。  这款应用在内部被称作“Bubble Characters”,它会提供多个数字对话角色供用户选择,方便“Z世代”与之交流。该公司自2021年第四季度以来就一直在开发这个项目。谷歌拒绝对此置评。  该应用的描述显示,它将可以进行“类人”对话,并“采取行动”,“对Z世代很有吸引力”。相关对话均由大语言模型支持,这类模型可以通过海量数据集来理解和生成与人类相似...
            0 0 882
            分享
          •   软件测试是用来验证软件解决方案或产品是否符合要求和期望的过程。软件测试的旨在发现缺陷,并证明软件是适合使用的。有许多测试方法、类型和技术可用于验证功能和非功能需求。  测试自动化是使用其他软件来自动化手动测试或在应用程序中执行手动用户操作的过程。在手动测试不可能或费时的情况下,用其他软件的帮助来验证软件是一个好主意。  自动化测试是使用专门的软件工具验证软件解决方案,通常涉及自动化功能作为测试过程的一部分。  自动化测试是使用特殊的软件,与被测试的软件分开,来控制和执行测试,包括实际结果与预测结果的比较和报告。应用程序被称为被测应用程序(AUT the application under ...
            0 0 872
            分享
      • 51testing软件测试圈微信