软件测试-如何准备测试数据

这篇具有很好参考价值的文章主要介绍了软件测试-如何准备测试数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

准备测试数据是软件测试种非常重要的一个环节,无论是手工测试、动化测试还是性能测试,准备工作种除了分析外最重要的就是准备测试数据。

从创建测试数据的维度来看,准备测试数据的方法主要分为四大类
1.基于 GUI 操作生成测试数据;
2.通过 API 调用生成测试数据;
3.通过数据库操作生成测试数据;
4.综合运用 API 和数据库的方式生成测试数据。

基于 GUI 操作生成测试数据:
基于 GUI 操作生成测试数据,是最原始的创建测试数据的方法。简单地说,它就是采用 E2E 的方式来执行业务场景,然后生成数据的方法。 比如,你想要测试用户登录功能,那么首先就要准备一个已经注册的用户,为此你可以直接 通过 GUI 界面来注册一个新用户,然后用这个新创建的用户完成用户登录功能的测试。 这个方法的优点是简单直接,在技术上没有任何复杂性,而且所创建的数据完全来自于真实 的业务流程,可以最大程度保证数据的正确性。

但是,该方法的缺点也十分明显,主要体现 在以下这四个方面:
1. 创建测试数据的效率非常低。一是因为每次执行 GUI 业务操作都只能创建一条数据,二 是因为基于 GUI 操作的执行过程比较耗时。
2. 基于 GUI 的测试数据创建方法不适合封装成测试数据工具。由于测试数据的创建是通过 GUI 操作实现的,所以把这种数据创建方法封装成测试数据准备工具的过程,其实就是 基于 GUI 操作生成测试数据; 通过 API 调用生成测试数据; 通过数据库操作生成测试数据; 综合运用 API 和数据库的方式生成测试数据。 在开发 GUI 自动化测试用例。无论是从开发工作量,还是从执行效率来讲,把基于 GUI 操作的测试数据创建方法封装成测试数据准备工具都不是最佳的选择。 
3. 测试数据成功创建的概率不会太高。因为,测试数据准备的成功率受限于 GUI 自动化执 行的稳定性,而且任何界面的变更都有可能引发测试数据创建的失败。
4. 会引入不必要的测试依赖。比如,你的被测对象是用户登录功能,通过 GUI 页面操作准 备这个已经注册的用户,就首先要保证用户注册功能没有问题,而这显然是不合理的。

通过 API 调用生成测试数据:
通过 API 调用生成测试数据,是目前主流的测试数据生成方法。其实,当我们通过操作 GUI 界面生成测试数据时,实际的业务操作往往是由后端的 API 调用完成的。所以,我们 完全可以通过直接调用后端 API 生成测试数据。 还是以用户登录功能的测试为例,我们通过 GUI 界面注册新用户时,实际上就是调用了 createUser 这个 API。既然知道了具体要调用哪个 API,那么我们就可以跳过在 GUI 界面 的操作,直接调用 createUser 生成“已经注册的用户”这个测试数据了。

通过 API 调用生成测试数据的方法,优点主要体现在以下几个方面:
可以保证创建的测试数据的准确性,原因是使用了和 GUI 操作同样的 API 调用; 
测试数据准备的执行效率更高,因为该方法跳过了耗时的 GUI 操作;
把创建测试数据的 API 调用过程,封装成测试数据函数更方便,因为这个调用过程的代 码逻辑非常清晰;

测试数据的创建可以完全依赖于 API 调用,当创建测试数据的内部逻辑有变更时,由于 此时 API 内部的实现逻辑也会由开发人员同步更新,所以我们依旧可以通过调用 API 来 得到逻辑变更后的测试数据,而这个过程对使用来说是完全透明的。

但是,该方法也不是完美无瑕的,其缺点主要表现在:
1. 并不是所有的测试数据创建都有对应的 API 支持。也就是说,并不是所有的数据都可以 通过 API 调用的方式创建,有些操作还是必须依赖于数据库的 CRUD 操作。那么,这 时,我们就不得不在测试数据准备函数中加入数据库的 CRUD 操作生成测试数据了。
2. 有时,创建一条业务线上的测试数据,往往需要按一定的顺序依次调用多个 API,并且 会在多个 API 调用之间传递数据,这也无形中增加了测试数据准备函数的复杂性。
3. 虽然相比于 GUI 操作方式,基于 API 调用的方式在执行速度上已经得到了大幅提升,并 且还可以很方便地实现并发执行(比如,使用 JMeter 或者 Locust),但是对于需要批 量创建海量数据的场景,还是会力不从心。 因此,业界往往还会通过数据库的 CRUD 操作生成测试数据。

通过数据库操作生成测试数据:
通过数据库操作生成测试数据,也是目前主流的测试数据生成方法。这个方法的实现原理很 简单,就是直接通过数据库操作,将测试数据插入到被测系统的后台数据库中。

常见的做法是,将创建数据需要用到的 SQL 语句封装成一个个的测试数据准备函数,当我 们需要创建数据时,直接调用这些封装好的函数即可。 可以保证创建的测试数据的准确性,原因是使用了和 GUI 操作同样的 API 调用; 测试数据准备的执行效率更高,因为该方法跳过了耗时的 GUI 操作; 把创建测试数据的 API 调用过程,封装成测试数据函数更方便,因为这个调用过程的代 码逻辑非常清晰; 测试数据的创建可以完全依赖于 API 调用,当创建测试数据的内部逻辑有变更时,由于 此时 API 内部的实现逻辑也会由开发人员同步更新,所以我们依旧可以通过调用 API 来 得到逻辑变更后的测试数据,而这个过程对使用来说是完全透明的。 还是以用户登录功能测试为例,当我们通过 GUI 界面注册新用户时,实际上是在后端调用 了 createUser 这个 API,而这个 API 的内部实现逻辑是,将用户的详细信息插入到了 userTable 和 userRoleTable 这两张业务表中。 那么此时,我们就可以直接在 userTable 和 userRoleTable 这两张业务表中插入数据,然 后完成这个新用户的注册工作。

通过数据库操作生成测试数据的方法,主要优点是测试数据的生成效率非常高,可以在较短 的时间内创建大批量的测试数据。

当然,这个方法的缺点也非常明显,主要体现在以下几个方面:
很多时候,一个前端操作引发的数据创建,往往会修改很多张表,因此封装的数据准备函 数的维护成本要高得多; 容易出现数据不完整的情况,比如一个业务操作,实际上在一张主表和一张附表中插入了 记录,但是基于数据库操作的数据创建可能只在主表中插入了记录,这种错误一般都会比 较隐蔽,往往只在一些特定的操作下才会发生异常; 当业务逻辑发生变化时,即 SQL 语句有变化时,需要维护和更新已经封装的数据准备函数。

综合运用 API 和数据库的方式生成测试数据
目前,在实际的工程实践中,很少使用单一的方法生成测试数据,基本都是采用 API 和数 据库相结合的方式。最典型的应用场景是,先通过 API 调用生成基础的测试数据,然后使 用数据库的 CRUD 操作生成符合特殊测试需求的数据。所以,你经常会看到很多的数据准 备函数中,既有 API 操作,又有数据库操作。
我以创建用户为例,和你分享一下如何综合运用 API 和数据库两种方式创建测试数据吧。 假设,我们需要封装一个创建用户的函数,这个函数需要对外暴露“用户国家”和“支付方 式”这两个参数。由于实际创建用户是通过后台 createUser API 完成的,但是这个 API 并 不支持指定“用户国家”和“支付方式”,所以我们就需要自己封装一个创建用户的函数。 自己封装用户创建函数的方法,你可以通过下面这个思路实现:
首先,调用 createUser API 完成基本用户的创建;
然后,调用 paymentMethod API 实现用户对于不同支付方式的绑定,其中 paymentMethod API 使用的 userID 就是上一步中 createUser API 产生的用户 ID;
最后,通过数据库的 SQL 语句更新“用户国家”。
在这个例子中,createUser API 和 paymentMethod API 只是为了说明如何综合运用 API 的顺序调用,而其具体参数并不是我要阐述的关键内容,所以我并没有和你详细说明这两个 API 的参数、实现方式等问题。另外,我在最后一步综合运用了数据库的 CRUD 操作,完成了创建测试数据的全部工作。

总结

我从测试数据创建的角度,和你分享了准备测试数据的四种方法。 其中,基于 GUI 操作生成测试数据是最原始的方法,但是效率很低,而且会引入不必要的 依赖;通过 API 调用以及数据库操作的方式生成测试数据是目前主流的做法,通过 API 调 用的方式具有数据准确度高但是创建效率较低的特点,而通过数据库的方式具有创建效率高 但是维护复杂度也高的特点。 所以,在实际项目中,业界往往会综合采用 API 和数据库的方式生成测试数据,即通过 API 调用生成基础数据,然后使用数据库的 CRUD 操作进一步生成符合特殊测试需求的数据。文章来源地址https://www.toymoban.com/news/detail-477557.html

到了这里,关于软件测试-如何准备测试数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件测试之语音识别功能如何测试?

    语音识别功能的测试需要考虑以下几个方面: 1. 语音输入测试 测试语音识别系统能否准确识别用户的语音输入。这包括测试系统对各种不同语言、方言和口音的理解能力,以及对不同声音质量和噪音环境的鲁棒性测试。 2. 语义理解测试 测试语音识别系统能否准确解析和理解

    2024年02月16日
    浏览(43)
  • 【软件测试】学习笔记-如何做好单元测试

    在正式开始今天的话题之前,我先给你分享一个工厂生产电视机的例子。 工厂首先会将各种电子元器件按照图纸组装在一起构成各个功能电路板,比如供电板、音视频解码板、射频接收板等,然后再将这些电路板组装起来构成一个完整的电视机。 如果一切顺利,接通电源后

    2024年02月03日
    浏览(50)
  • 软件测试技术之如何编写测试用例

    1、刚刚从事软件测试职业,如何快速掌握编写测试用例的方法?该怎样编写测试用例呢? 专家分析: 1、根据需求文档,完全按照需求文档框架/功能描述,根据自己的理解整理为用例。简单来说,就是将需求文档描述的内容,重新按照用例的格式编辑一次,把能想到的各种

    2023年04月12日
    浏览(33)
  • 软件测试中如何编写单元测试用例(白盒测试)

    目录 前言: 一、 单元测试的概念 二、开始测试前的准备 三、开始测试 四、完成测试 前言: 单元测试是软件测试中一种重要的测试方法,它是在代码级别进行测试,通过对每个模块或功能进行独立测试来保障代码的正确性和可靠性。单元测试可以有效地避免产生隐藏的代

    2024年02月09日
    浏览(34)
  • 软件测试如何自我提升

    当一个软件测试工程师刚刚进入行业一到三年的时间,他们通常需要掌握一些基本技能和知识,并且需要学习一些新的技术和工具,以便更好地完成自己的测试工作。以下是一些建议,帮助测试工程师在这个阶段提升自己的技能。 在软件测试领域,有一些基本的技能和知识是

    2024年01月19日
    浏览(43)
  • 软件测试简历如何包装?

    首先明确的包装简历不等于欺骗,只是把你的最好一面展示出来,给别人一个好的映像;(就相当于相亲,哈哈) 无论如何包装简历,注意简历上的东西一定要会、一定要会、一定要会(面试官一般会针对简历上的问题进行提问,万一不会,多尴尬呢) 包装简历从以下几点

    2024年02月09日
    浏览(30)
  • 新人如何学习软件测试

    零基础学习软件测试不失为一个好的选择,虽然IT行业里对小白最友好的非软件测试莫属了,但是也要看你个人在学习软件测试这件事上面花费了多少的时间和努力了~ 每年毕业季,IT行业依然是比较热门且收入是最高的行业。对于应届毕业生来说想要进入IT行业,除了前后端

    2024年02月05日
    浏览(48)
  • 软件测试工程师如何对算法做测试?

    最近几年,随着大数据、人工智能等领域的快速发展,算法受到前所未有的重视,算法测试也随之兴起。 为了让大家能对算法测试有个初步的了解,这篇文章将对“如何做算法测试”进行梳理,大纲如下: 1、算法测试测什么? 2、算法测试如何做? 3、算法测试的一个真实案

    2024年02月09日
    浏览(43)
  • 软件测试-功能测试-测试流程-如何进行需求评审?对于测试人员来讲,如何从测试的角度评审需求文档?

    产品人员编写的需求文档,无疑是一个项目或者一项新功能的开端。需求文档的优劣,直接影响开发人员的代码质量,更会影响到后续的测试工作。所以,我认为,需求评审对于开发质量以及测试质量至关重要,那么,如何做好一次优秀的评审,或者说,如何去评审一份需求

    2024年02月19日
    浏览(45)
  • 新人如何入门学习软件测试

    1. 技能要求 1)Linux使用 使用Linux是测试工程师的基本功,无需掌握太难的Linux命令,能做到查看日志、定位问题就可以了。 2)数据库使用 测试工程师需要熟练掌握数据库,后台服务程序会处理各种数据,如订单、合同、用户数据等,这些数据一般存储到数据库中。数据库的

    2023年04月08日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包