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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   在JMeter脚本设计中,搭配使用各类测试元设计接近实际场景的步骤是整个脚本设计环节的关键。各元件组合搭配,在完整的测试交互周期中,发挥了数据抽取转换、分支逻辑控制、响应解析判断等多种功能,将标准交互请求进行包裹、扩充、衔接、串联形成触达不同数据、激活不同逻辑的树形执行结构。  因此了解JMeter各测试元件在执行线程生命周期内的执行顺序,对复杂场景脚本设计有重要帮助。  取样器(Sampler)。作为支持JMeter实现协议交互的核心元件,也是线程执行的主体部分,在实现请求交互的前后阶段为其他元件发挥增强功能提供基础。环绕在取样器元件之外,有“切入式”的增强元件,也有具备全局性质的功能元...
            12 12 1742
            分享
          • 9 月 5 日消息,据腾讯 QQ 官方消息,在开学之际,QQ 上线了“QQ 学生卡”,可一键查看你的 Q 龄。在 QQ 搜索“QQ 学生卡”,即可查看你的 Q 龄。据了解,QQ 是 1999 年 2 月由腾讯开发的一款基于互联网的即时通信软件,最初称为 OICQ。2000 年 11 月,腾讯推出 QQ2000 版本,将名称由 OICQ 更名为 QQ。根据腾讯 2021 年财报,QQ 移动端月活跃账户数为 5.52 亿。作者:孤城文章来源:IT之家 (ithome.com)
            0 0 624
            分享
          • app性能测试分类:响应内存cpuFPS (app使用的流畅度)GPU过度渲染耗电耗流(app除了这些性能测试,还有:手机版本号兼容性,屏幕分辨率兼容性,稳定性测试,安全测试等,后续会持续更新… 流量测试同这些一起更新,这里就不在说明了 )App性能测试响应点:主要测试点:冷启动:首次启动app的时间间隔(只是启动时间,不包括页面加载)热启动:非首次启动app的时间间隔(只是启动时间,不包括页面加载)完全启动:从启动到首页完全加载出来的时间间隔有网启动:从发起跳转,到页面完全加载出来的时间间隔无网启动:从发起跳转,到页面完全加载出来的时间间隔(在项目中,主要测试关注点是冷启动,热启动)测试标准...
            0 0 1084
            分享
          •   最近行业里有个苦涩的笑话:公司扛过了之前的三年,没扛过摘下最近的一年,真是让人想笑又笑不出来。年前听说政策的变化,大家都满怀希望觉得年后行情一片大好,工作岗位激增,至少能有更多的机会拥抱未来。然而,事实远没有想象的美好。  年后迎来的,是各个大厂的裁员风波,加上前几年市场冗余的人员,又积压了一大批竞争者。再然后呢?GPT的问世,直接动摇了无数人本就端的不太稳的饭碗,如果用一个词形容,那就是“愁云惨淡”。  个人经历  所幸,笔者所在的科技公司在几波裁员潮后逐渐趋于平稳。但从个人发展和其他层面出发,跳槽成了一个很大必要但并非当下紧急的事。所以,笔者也抱着试一试的心态投入了找工作的大军。  今...
            0 0 1156
            分享
          • 工作中遇到了这样的场景,一名测试人员需要对多台移动设备进行回归测试,如何提高测试效率呢?那肯定离不开自动化啦,那有没有现成的开源工具可以支持移动端的自动化呢?有,sonic!下面阿常就来和大家分享一下 Sonic 云真机测试平台部署经验——由阿常同事整理:首先是环境准备,请看如下列表,供参考~环境准备设备:Macbook ProSonic:1.4.0-releaseMySql:5.7.27Docker:20.10.12Java:16.0.1Appium:1.22.2ADB:1.0.41Node.js:v17.4.0ChromeWebdriver:98.0.4758.102tidevice:0....
            0 0 1527
            分享
      • 51testing软件测试圈微信