接口测试 接口测试第二篇-java sdk 测试

测试测试测试 · 2021年04月12日 · 3012 次阅读

接口测试记录第二篇-java sdk 接口测试

目前我们项目上的 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 接口测试点一致 ,但是在结果检查方面,除了检查整体返回值是否正确,还需要检查,每个返回结果中每个字段能否取出并使用

目前问题

  • 测试过程中重复工作多
    • 每次新增接口或变动接口,都需要新增对应测试代码或调整测试代码
  • 自动化实施难
    • 更多的是新增接口,每次新增接口都要重复那一套操作
    • 部分接口无返回数据,最初是检查对应页面功能,目前正在修改为查询数据库对应信息。
    • 入参数不可控,变化性大,没有准备单独隔离的数据
    • 断言不够灵活,接口返回值,不同接口返回变化大,断言多了之后很容易失败
    • 使用 JUnit4 测试框架,批量执行上不如 testNg 灵活,目前处理方式是用的测试套件@RunWith@Suite注解 ,例如:

@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 接口自动化

上一篇:接口测试记录首篇

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册