测试背景描述
由于金融系统要求的严肃性,我司要求在接口测试过程中,对于接口测试的数据,无论是查询数据还是写入数据,都必须从数据库中进行查询后比对校验。在以往的接口测试过程中需要测试人员一方面进行接口测试的同时,另一方面需要及时查库人工比对,从而导致测试效率低,一直无法进行大规模的回归测试。在此之前也尝试过采用pytest进行接口的自动化回归测试,但是由于pytest对测试人员能力要求较高,而且对大量的接口测试用例难以形成有效管理,所以采用Pytest技术框架路线从也难以持续推进。
一次偶然机会得知MeterSphere项目https://www.fit2cloud.com/metersphere/index.html,MeterSphere不同于PostMan,Jmeter等工具,从平台角度对测试进行管理,盖测试跟踪、接口测试、性能测试等功能,还兼容Jmeter标准。所以我司在MeterSphere上尝试了下接口自动化场景测试。
测试场景描述
此系统测试要求接口返回数据与数据库查询结果的比对。需要将要比对的数据从接口返回结果和数据库查询结果中取出,然后再进行逐个字段值进行循环比较。由于循环断言比对具有一定的复杂性,针对不同的场景需要采用不同的断言方式,目前主要涉及到两种断言模式:BeanShell高级断言和ForEach循环断言。以用户注册场景为例:
此系统的注册涉及到注册人的身份证、手机号、用户名称、客户类型、银行卡号等数据,步骤为手机验证-》身份证验证-》设置密码-》注册成功登陆-》银行卡信息验证-》绑定成功,细节步骤如下:
- 手机验证:输入手机号-》发送验证码-》数据库查询验证码-》界面输入验证码-》校验是否注册过该手机号-》手机验证通过
- 身份证验证:上传身份证正反面-》识别身份证有效性-》维护个人信息-》验证通过
- 设置密码:设置密码-》是否满足密码要求-》通过
- 注册成功:注册成功-》进行登录
- 银行卡信息验证:输入银行卡号-》银行卡号识别-》发送验证码-》数据库查询验证码-》界面输入验证码-》校验验证码是否正确-》完成绑卡
- 银行卡绑定成功:绑定成功-》查询用户银行卡信息-》校验银行卡信息-》验证成功
该场景涉及6个步骤,涉及14个接口,断言14个,提参14个,自定义脚本8个。
整体测试逻辑为用户在接口请求信息需要从数据库进行一次查询,采用数据库查询结果和界面请求响应进行断言比对,比对通过后则测试通过。
测试前数据准备
因为测试涉及到人员信息、手机号码、身份证、银行卡等信息。此为敏感信息,所以需要提前伪造测试数据信息,在以往的测试模式中,都采用的python脚本提前生成测试数据,然后在人工复制至接口测试用例中,此工作量巨大。MeterSphere中支持MockJS,通过MockJS可以提前伪造号人员信息数据,身份证信息等。如下图伪造身份证号
测试数据可以提前在项目管理的环境变量中进行定义或者接口自动化中的公共参数定义,后续在接口用例或者接口自动化场景中使用${Idcard}进行使用:
Beanshell脚本断言
具体操作步骤如下:
一、MeterSphere设置数据库源,创建SQL请求,将查询结果按照“存储结果”进行存储,返