• 0
  • 0
分享
  • 详解接口测试构造测试数据——软件测试圈
  • 小丸子🍡 2024-06-04 16:33:54 字数 2554 阅读 489 收藏 0

  构造数据方法

  构造少量数据

  对于上面例子(2)是我们经常碰到的情况。如果只需要构造一个人的信息,即可满足测试,我们可以使用SQL 语句在数据库里面 insert 插入一条数据,或者 update 一条历史数据使其满足查询条件即可

  下面演示一下,先在数据库里面创建person数据表,创建SQL语句如下:

  create table `person` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id', 
    `age` bigint(20) unsigned NOT NULL COMMENT '年龄', 
    `height` bigint(20) DEFAULT NULL COMMENT '身高', 
    `sex` char(10) NOT NULL DEFAULT '' COMMENT '性别', 
    `city` char(10) NOT NULL DEFAULT '' COMMENT '所在城市', 
    `qq` char(10) NOT NULL DEFAULT '' COMMENT 'qq号码', 
    `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间', 
    `update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间', 
    PRIMARY KEY (`id`)
  ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '个人信息测试表';

  创建好了以后,执行SQL语句show create table person ;可看到数据表结构。

1-1.jpg

  假设现在有个需求需要查询,身高大于180,年龄小于25,性别为男的QQ号信息。

  现在数据表里数据为空,为了进行测试,现在我们在数据库里面插入几条数据,其中一条为满足需求的数据,其余为不满足需求的数据。

  #满足条件的数据
  insert into person(
    id, age, height, sex, city, qq, create_time, 
    update_time
  ) 
  values 
    (
      1, 18, 185, "男", "北京", "12345678", 
      "1654855117", "1654855117"
    );
  #不满足条件的数据
  insert into person(
    id, age, height, sex, city, qq, create_time, 
    update_time
  ) 
  values 
    (
      2, 18, 155, "女", "南京", "7783434", 
      "1654855117", "1654855117"
    );

  最后用select  SQL语句查询一下指定数据,有了测试数据后就可以开始测试了。

1-2.jpg

  采取这种方法应注意避免在数据库里面产生脏数据,理解好业务逻辑后,再写入符合需求的数据。

  除了自己手动在数据库写入数据外,如果系统有暴露数据生产接口(即通过调用该写接口能在数据库写入正确的数据),我们还可以通过调用数据生产接口去产生数据,推荐使用这种方式,一般不会产生脏数据。

  先介绍一下工程结构:

1-3.jpg

  · bean目录:存放类

  · controller目录:入口

  · dao目录:数据库相关操作

  · service目录:处理业务逻辑

  · utils目录:存放工具类

  项目使用方法如下:

  (1)安装Python 3.x环境,以及必要的依赖库,项目当中已经包含requirements.txt,所以在执行??pip install -r requirements.txt??即可安装依赖库。

  (2)Pycharm里面启动Flask Web服务。

1-4.jpg

  (3)验证启动成功,在浏览器访问http://127.0.0.1:5000,若出现Hello World!,则说明服务启动成功。

  (4)调用接口写入数据库。

  在此工程当中,有一个接口名叫add_person,请求方式是post,请求参数格式为json,通过调用此接口就能往数据库里面写入个人信息。

  @app.route('/add_person', methods=['POST'])
  def add_person():
      req_params = request.get_json()
      print(f"req_params: {req_params}")
      print(type(req_params))
      insert_id=service.person.add_person(req_params)
      base_ret['data']={"insert_id":insert_id}
      return base_ret

  我们可以使用Postman调用接口,往数据库写入数据。

1-5.jpg

  最后可以使用SQL语句select在数据库里面查看到插入的数据:

1-6.jpg

  有了满足需求的数据,我们就能继续进行接口测试了,当然细心的朋友发现,直接调用写接口仍然有可能会产生脏数据,在调用前大家不要忘了仔细阅读接口文档。

  这是一个很简单的调用数据生产接口写入数据库的例子,希望给大家一些启发,另外此工程当中用到了操作数据库用到了ORM框架,感兴趣可以自行研究。

  最后小结一下构造数据的两种方法:

  · 直接使用SQL语句写入数据库

  · 调用数据生产接口写入数据库

  构造大量数据

  有时候,我们需要上百条的测试数据,手动调用接口,或者手动写SQL效率就非常低下了,可以通过结合数据生产接口编写数据构造脚本批量生产数据。


作者:Bug挖掘机    

来源:http://www.51testing.com/html/91/n-7798991.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   会计日期是银行的记账日期,银行所有的账务都以会计日期为准来进行全行账务核对。在测试环境下,会计日期的切换是验证业务逻辑正确性的重要工具。然而频繁执行会计日期切换会影响在正常日期进行的其他测试,也会造成系统环境的不稳定。如何在尽可能满足测试需求的情况下,保证环境稳定可用,是管理测试环境会计日期的难点。要想既满足多数测试人员对会计日期维持当前日的需求,又支持部分测试项目对于特定会计日期的需求,需要设计一套会计日期切换的调度机制和相匹配的管理系统,形成会计日期调度方案。图1:测试效果和系统稳定之间需要权衡  1、会计日期调度现状  出于对权限统一控制的需求和对银行复杂核心系统操作难以普及的考虑,...
            10 10 1969
            分享
          •   MySQL数据库作为目前流行的数据库大量应用于PHP、JAVA、Python等Web语言开发项目中,大多数情况下,数据库的操作性能成为整个应用的性能瓶颈。数据库的性能是程序员需要去关注的事情,当设计数据库表结构以及操作数据库(尤其是查询数据时),都需要注意数据操作的性能。  一、优化目标  1、减少 IO 次数  IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。  2、降低 CPU 计算  除了 IO 瓶颈之外,S...
            15 15 1489
            分享
          • 大家都知道 UI 自动化最重要的就是页面元素的定位和操作但是现在我们会发现元素越来越难定位了,前端可能会使用流行的 VUE 框架,页面控件元素经常没有 id、name 等属性,对我们定位产生了一定的困扰,需要我们灵活运用查找方式,去解决遇到的问题。1.下面列举一些 Cypress 提供的定位方式首先,它提供了 3 种专有的定位器,data-*属性,即使 CSS 或 js 改变也不会影响测试,看上去很美哈data-cy、data-test、data-testid。(个人认为这种方式极少用到,想让前端给你加上这种属性会很难。。)``` //例如为button添加一个data-*属性 <but...
            1 1 3124
            分享
          •   有一次,我在做一个web网站的压测时,总感觉并发上不去,后台,中间件包括网络等所有性能都是OK的,后来在排查前端时才发现,原来是图片加载速度过慢造成的瓶颈,如果我当初能对前端图片的性能优化多一些认知,那么可能排查起来就更加的丝滑了,所以作为测试人员,是很有必要了解前端图片的优化方法的,这也能提升你在开发心中地位。在当今数字化的世界中,无论是网页设计、移动应用开发,还是各种多媒体软件,图片都是不可或缺的元素。然而,图片的加载速度却常常成为影响用户体验的关键因素。  一、图片压缩   图片压缩是提升加载速度的首要手段。通过减少图片文件的大小,可以显著缩短加载时间,同时又能最大程度地保...
            0 0 627
            分享
          • 1、自动化测试面试技术详解:web自动化APP自动化接口自动化今年的软件测试的招聘需求,在所有薪资相对客观的岗位上都会明确标注:懂得一门编程语言,Java/Python懂得研发测试工具、测试框架、具备自动化测试能力今年的面试官主要询问的面试问题方向:自动化元素定位:是自动化测试中最为基础的能力在测试框架中,如何准确进行元素的定位,以及在版本迭代中如何轻便维护元素的相关信息。核心就是自动化测试中如何管理页面元素。2、解决元素问题一般会选择套用设计模式来进行管理:基于关键字的形态。所有的元素信息全部保存在文件中。基于POM的形态,所有的元素信息与页面对象关联。关键字驱动面试讲解(关键在于你需要自主...
            11 12 1692
            分享
      • 51testing软件测试圈微信