接口测试中的模块化思想

发表于:2012-1-18 10:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:wangguilin    来源:51Testing软件测试网采编

  在自动化测试逐渐普及,测试越来越向专业化和职业化发展的今天,接口测试单元测试成为一个测试人员必备的技能,但是随之而来的却是高维护成本。特别是在互联网公司,测试的业务和逻辑变化和更新特别频繁。如何让自己的接口测试代码维护方便,快速编写和持续回归呢?

  首先抛开接口测试不说,看一个测试用例的执行过程,无非分为3个步骤:数据准备,执行操作和校验结果。那么在一个接口测试的用例中同样有这些步骤,可以将他们进行模块化。

  下面用一个例子来说明。例如要测试的类UserManager有一个接口是addUser(User user);其中User 类 有3个属性:Long userId,  int sex; int age,String name; 返回结果保存在Result 对象里面。

  假设业务规则如下:

  1、userId 不能为空,不能重复

  2、name 不能为空,且不能重复

  3、sex ,age 可以为空  其中sex 取值范围[0,1] age[0,150] 默认为0

  如果要对这个接口进行测试,如何写测试用例会比较快的呢?

  可以想象得到这些用例会有哪些操作?

  1、如果为了校验重复肯定需要有数据库的清理操作

  2、要初始化参数

  3、调用接口

  4、校验结果,分为成功校验和失败的校验

  那么可以模块化出来以下方法:

  cleanUser()从数据库清理掉用户

  initUser() 在数据库里面进行用户初始化,为了校验已经存在用户名的

  initParam() 参数初始化

  checkIsSuccessful(Result re)校验增加用户成功

  checkIsFaild(Result re)校验增加用户失败

  那么对于具体的一个用例只需要选择以上方法中的一些方法就好了。例如:

public class UserManagerTest {
 
 /**
  * 参数
  */
 Long userId = null; //用户id
 Integer sex = null; //性别,0为男,1为女,默认为0
 String  name = null ; //姓名
 Integer age = null ;// 年龄 默认为0 最大150

 @Test
 public void test_01_参数都正常时_增加成功() {
   Long userId = 1L; //用户id
   Integer sex = 0; //性别,0为男,1为女,默认为0
   String  name = "test" ; //姓名
   Integer age = 25 ;// 年龄 默认为0 最大150
   cleanUser();
   User  user = initParam();
   Result re = userManager.add(user);
   checkIsSuccess(re);
 }
 
 @Test
 public void test_02_用户名已经存在_增加失败() {
   Long userId = 1L; //用户id
   Integer sex = 0; //性别,0为男,1为女,默认为0
   String  name = "test" ; //姓名
   Integer age = 25 ;// 年龄 默认为0 最大150
   initUser();   
   User  user = initParam();
   Result re = userManager.add(user);
   checkIsFaild(re);
 }

  这样进行模块的好处是,写用例非常快,基本一个写好,其他都是复制就行了。另外修改时也非常快。这里说下几种可能修改的应对策略:

  1、User 对象增加了一个属性String work;那么为了不影响目前的脚本运行,我们可以增加一个参数 String work 并赋上一个初值,再修改下initParam 方法就ok了。

  2、返回的结果对象Result 改变,只需要修改Check的两个 方法。

  3、业务规则改变,原来成功的可能要失败了,例如sex变成了必选,那么只需要把checkIsSuccess 改成checkIsFailed

  模块化的思想可以把一个整体抽象成相对独立的模块,根据具体的需要进行模块化的组合。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号