目前我们项目上的 SDK 都是基于现有业务,封装成 jar 包提供给其他部门研发进行使用,由于接口变动性大,且一直更多的在测试新增接口所以,所以目前仅手动进行的功能测试,自动执行方面处理比较弱,需求也并不高,所以从接手该项任务开始到现在并没有花费很多心思去思考测试方法的迭代和革新。
测试方法:引 jar 包方式进行测试,依赖框架:JUnit4,数据加载:feed4testng,仅做了接口验证,无具体业务 demo 测试,例如以下接口,接口入参是 User、title、content:
/** 群发外图文(单条)消息*/
@Test(dataProvider = "feeder")
@Source("src/test/testData/qa/sendNewsTestCase.csv") //csv文件的位置
public void sendMassNewsSingleTest(String toUser,int titlelen,int contentlen,boolean status){
NewsMsg newsMsg=new NewsMsg();
String result="";
File file = new File("F:\\工作文档\\测试文件\\test.jpg");
String thumb_media_id = MediaService.upload(file, MsgType.RICH_MSG,access_token);
//组合所需参数
List<Article> articles=new ArrayList<Article>();
Article at=new Article();
String title=tools.getRandomChinaString(titlelen);
at.setTitle(title+"mass1");
System.out.println("title:"+title);
at.setAuthor("作者信息");
at.setUrl("www.baidu.com");
String content=tools.getRandomChinaString(contentlen);
at.setContent(content+"content");
System.out.println("content:"+content);
at.setThumbMediaId(thumb_media_id);
at.setShowCoverPic(1);
articles.add(at);
newsMsg.setArticles(articles);
newsMsg.setCover(at);
result=MassMessageService.sendNewsMsg(userlist,newsMsg,access_token);
Assert.assertTrue(status,result);//该接口时发送消息,无返回数据信息,所以仅断言了接口状态,日常会去检查页面,是否有对应消息。
}
然后在 Excel 中传入不同类型的数据,来达到参数的校验
上面代码对应的 Excel 一般我会如下处理:
测试重点:在入参组合检查点方面与上一篇 HTTP 接口测试点一致 ,但是在结果检查方面,除了检查整体返回值是否正确,还需要检查,每个返回结果中每个字段能否取出并使用
@RunWith(Suite.class)// 声明套件运行器
@Suite.SuiteClasses({// 将需要一起测试的类放进来
TokenServicesTest.class,
SSOServiceTest.class,
RoleServiceTest_All.class,
...
})
public class TestCaseAll {
@Test
public static void main(String[] args) {
System.out.println("test case");
}
因为之前从业务角度上,回归次数并不多,每次测试新增接口的时候更多一点,所以一直没有进行改进,但是目前公司注重测试效率的提升,后续会思考一下这方面测试效率的提升,和改进。
按照传统接口自动化执行需要解决的难题
- 数据维护问题,目前数据都在 Excel 中,各种场景下来,表格中数据还是挺多,加上数据代码分离,维护数据也需要对着代码先找到具体某一条数据,维护上不灵活
- 代码维护问题,目前每次接口改动和新增,只能手动维护,没有好的办法
- 以及结果校验问题,因为前面提到不能只校验返回正确,还需要能验证依次取出来
大家公司的 SDK 都是如何测试的呢?或许有其他角度,去切入,来更好的完成这样测试,希望有这方面经验的朋友能够指点一,二。
PS:下一篇讲 DUBBO 接口自动化
上一篇:接口测试记录首篇