作为一个测试人员,需要做性能测试时候,如果没有实际数据,或者实际数据不适合做压测,就要自己着手造数据了。
以下面的接口测试为例,简单介绍下需要的数据:
这是一个会员注册接口,入参比较多,你可以选用全部必填字段,忽略非必填字段,你也可以选用所有入参来进行测试; 我这里就选用了下面的入参
一般注册接口中,邮箱,手机号,身份证号,openid,unionid都是必须唯一的,不能与已经存在的会员重复。
这个时候造数据就需要造一些唯一的邮箱,手机号,身份证号和openid,unionid。
CREATE TABLE LoadTestTable ( ID INT IDENTITY(1,1), NAME VARCHAR(50), GENDER INT, HEIGHT INT, MOBILE BIGINT, IDnum VARCHAR(50), singautre VARCHAR(50), OPENID VARCHAR(50), UNIONID VARCHAR(50), MEMO VARCHAR(50) );
如上先创建了一张表,你可以创建临时表 #LoadTestTable,但是这边我最近可能要用2-3天,而且在一个单独的QA数据库,我可以任性一点,创建一个物理表。^_^
DECLARE @NAME VARCHAR(50) DECLARE @GENDER INT DECLARE @HEIGHT INT DECLARE @MOBILE BIGINT DECLARE @IDNUM VARCHAR(50) DECLARE @OPENID VARCHAR(50) DECLARE @UNIONID VARCHAR(50) DECLARE @SINGAUTRE VARCHAR(50) DECLARE @VAR INT SET @VAR=1000 SET @MOBILE = 21111173440 WHILE @VAR<10000 BEGIN SET @NAME = '微信小程序' +CONVERT(VARCHAR(50),@VAR); SET @GENDER=1; SET @HEIGHT=160; SET @MOBILE = @MOBILE+1; SET @IDNUM = 'ABCD12341QAZ12' + CONVERT(VARCHAR(50),@VAR);-----18位身份证 SET @OPENID = 'OPENID1234'+ CONVERT(VARCHAR(50),@VAR); SET @UNIONID = 'UNIONID1111'+ CONVERT(VARCHAR(50),@VAR); INSERT LOADTESTTABLE(NAME,GENDER,HEIGHT,MOBILE,IDNUM,SINGAUTRE,OPENID,UNIONID) VALUES(@NAME,@GENDER,@HEIGHT,@MOBILE,@IDNUM,NULL,@OPENID,@UNIONID) SET @VAR=@VAR+1 END
先用while循环生成了9000个会员,这些会员姓名不一样,手机号不一样,等等。
身份证这边主要用了18位,并没有完全遵守国家规定的身份证格式。
大概看一下测试数据:
报文中加密字段,签名需要注意下,这边我没有一步计算出来,放在了第二步
UPDATE A SET A.SINGAUTRE = SUBSTRING(SYS.FN_VARBINTOHEXSTR(HASHBYTES('MD5', CONVERT(VARCHAR(50),B.GENDER)+'XXX')),3,32) FROM LOADTESTTABLE B JOIN LOADTESTTABLE A ON A.ID = B.ID
这边根据性别随意计算了一下对应的MD5 32位加密后的值,由于性别是int类型,这边转换了一下,否则会有报错 Argument data type int is invalid for argument 2 of hashbytes function.
因为性别一样,计算出的签名也是一样的,实际应用中当然不会选择这个字段,这选择别的字段,或者多个字段
得到希望的数据到,SELECT * FROM LOADTESTTABLE,将数据复制到一个excel或者txt文档中,添加Jmeter的元件CSV Data Set Config进行配置即可