🌈赏金任务 - 接口测试产生的垃圾数据如何清理?

赏金任务每周更新,请持续关注哦 :love_letter:

题目

  • 接口测试产生的垃圾数据如何清理?

参与方式

  • 本帖下方回复你的答案即可

赏金

  • 100元京东购物卡

活动时间

  • 2023年2月6日 - 2023年2月10日

本周赏金任务汇总:🌈 赏金任务发布 2023-02-06

本问题参与赏金活动,详情点击 :rainbow: 赏金活动上线啦 丨做赏金任务挑战千元奖金 查看活动介绍

有以下几种方式:
1.可以在接口测试用例的teardown 清理测试数据
2.测试数据也可以统一规整,带有某个标签,测试结束,统一清理测试数据——-适用线上测试
3.测试的时候,可以将测试环境的数据库切换为某个测试数据库,确保不会影响功能测试环境
4.某些测试数据有有效期,可以将在库中的有效期设置短一点,利用现有网元或者数据库的自动清理机制清除

测试过程中产生的数据,影响程序正常执行而报错的数据,可称为垃圾数据。
此类数据可以做1、删除操作,逻辑或物理删除。2、修改部分关键字段,使之对程序的执行不产生影响。3、修正数据,使数据可正常使用
测试过程中产生的正常数据,可保留,方便后期功能维护的优化测试,或者问题查找。

【1.函数级别:初始化与清除操作】
setup():初始化函数,会在每个测试用例执行之前运行
teardown():清除操作函数,会在每个测试用例执行完成之后运行
【2.class级别:环境初始化与清除】
setup_class():初始化方法
teardown_class():清除方法
【3.数据库直接清理】
直接在数据库写sql脚本,delete 删除;用python连接数据库,做增删改查操作;

通常情况下接口测试有几种途径:直接postman或者jmeter 之类的调用访问,或者借助代码(含有setup、teardown相关框架)实现
1. 如果使用代码,可以借助setup、teardown清除掉对应的数据(尽量走接口,少走数据库)
2. 如果代码逻辑里无法使用物理删除或逻辑删除,指定特殊前缀作为测试的垃圾数据并周知其他相关人员,只要不影响其他人员的相关测试以及代码逻辑,生产不会出现此类数据,可以忽略不计
3. 如果确实是代码层面有问题,可以在代码修复之后修改对应数据(看数据量大小和修复难易度),如果后续不会再有此类问题,可以不修复


1、代码层面:考虑再teardown、yeild等中最后进行删除;也可以使用相关联的删除接口进行删除;
2、数据库、redis方面:可以直接写SQL、redis 删除命令等进行删除;
3、其他:使用测试账号产生的数据,如有独特的标识(uid等唯一标识)可以统一进行删除;

用python连数据库,做增删改查的操作。测试用例前置操作,用setUp做数据准备比如登录。测试用路后置操作,tearDown连接数据库做数据清理

有以下几种方案供参考:
1:公司给测试人员、或者是测试人员单独搭建一套系统,先备份数据(生成sql文件),执行测试后,恢复数据。
2:被测接口的请求头进行打标,标志一直往下面的链路带,使用特殊请求头对数据进行标记,后期统一删除。
3:在方案 2 上更近一步,面向切面技术直接将数据保存到备份数据库,这样可以测试避免 uat和prd的 数据库中有垃圾数据。
4:上面都行不通的话,直接与开发公用一套环境,出了问题让开发人员协调一起去排查。