测试数据与代码分离的测试

发表于:2013-1-10 10:16

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

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

  今天看到花花同学写的白盒测试的白皮书,大致翻了下。感觉缺少点什么,之前也一直都在讨论,测试数据与测试代码是否需要分离,测试代码如何建设冗余的问题。如何解决这2个问题,feed4junit是一种思路,我对比junit 4和feed4junit的功能,大致了解这些功能的实现。

  --------------------------------------------------------------------------------

  对于网站的接口测试,常常面临的一个场景:大量不同的输入,但处理逻辑的业务不变,对其结果进行验证也会有不同的期望值。按照之前的一些思路,往往会为每一组输入和输入写一个case,达成大量的代码冗余。

  基于上面的场景,junit 4给出了参数化的特性,从而实现了不同的输入对应相同的代码。

  待测的方法:

publicclassUserAccess {
       // simple validation for user name and password
       publicstaticboolean accessCheck(String userName, String password) {
              if(userName.length() <= 4 || userName.length() > 8 )
                     returnfalse;
              if(password.length() <= 4 || password.length() > 8 )
                     returnfalse;
              if(userName.contains("@"))
                     returnfalse;
              if(password.contains("*"))
                     returnfalse;
              returntrue;
       }
}

  1、使用Junit参数化,减少代码冗余:

  测试代码:

import java.util.Arrays;
import java.util.Collection;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
importstaticorg.junit.Assert.assertEquals ;

import sample.junit.code.UserAccess;

/*
* JUnit - Parameter test sample
*/
@RunWith(Parameterized.class)
publicclassJunitSample {
       privateString user ;
       privateString pwd ;
       privateboolean expected ;

        @Parameters
       publicstaticCollection dataGenerate(){
              returnArrays.asList(newObject[][]{
                           {"user01","123456",true},
                           {"user02","123456",true},
                           {"user03","12345678",true}
              });
       }

       publicJunitSample(String user,String pwd,boolean expected){
              this.user = user;
              this.pwd = pwd;
              this.expected = expected;
       }

        @Test
       publicvoidtestAccessCheck(){
               assertEquals(expected,UserAccess. accessCheck(user, pwd));
       }
}

  运行结果如下所示:

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号