在第二章中我们简单地介绍了接口自动化平台的基本功能,主要包括以下几个方面:

(1)接口文档管理功能:管理接口信息,包括增,删,改,查等。

(2)用例管理功能:新建,展示,查询,删除,运行测试用例。

(3)测试用例集管理:新增,修改,删除,查找,运行测试用例集。

(4)任务管理:管理定时任务,或者其他任务触发机制。

(5)测试报告管理功能:展示,查找测试报告,对测试报告进行统计和分析。

(6)日志管理功能:记录错误日志,对日志进行过滤及分析。

(7)用户管理功能:以便对测试用例,测试计划,任务,报告和日志的相关操作进行权限控制。

   本章我们将对每一项目做详情的设计分析,最后给出设计实现思路。

3.1 接口文档管理

  接口文档管理最近是一个单独的部分,类似于wiki上面的一个功能,属于文档技术沉淀或是开发说明等。后来在接口自动化平台功能越来越强大后,此功能正式成功接口自动化平台的一部分。接口文档应该详情记录接口的调用地址,接口功能,调用方式,接口的参数,参数中是必选的,还是非必选的,接口返回示例或是字段等信息。

       此部分功能应该包含以下具体功能:

(1)接口总体信息的展示,不管是采取树型结构或是列表的样式,简单地展示出接口的基本信息,以便对整体接口中有个了解。

(2)搜索功能,接口信息量会非常大,不可能人工去查找想要的接口信息,必须有搜索功能,以接口名称和功能进行具体的搜索。

(3)展示翻页功能,为了达到比较好的用户效果,不可能把所有的信息都展示出来 ,一般一页展示10-15条信息比较好,多余的信息要进行翻页处理。

(4)新增加接口的功能,根据用户权限,对有权限的用户开通添加权限。在添加接口文档的时候,要求添加的信息比较明确,参数和返回示例比较容易增删。

(5)修改和删除功能,接口的添加者和系统管理员可以对接口进行修改或是删除操作,此处权限一定要控制好,不能修改和删除不是自己的接口文档信息。

可以参考以下的开源项目,说不定能给你带来不错的灵感:

(1)CrapApi https://github.com/EhsanTang/ApiManager

(2)ShowDoc  https://github.com/star7th/showdoc

(3)php-doc-system https://github.com/ares333/php-doc-system

3.2用例管理功能

用例功能管理是接口自动化测试平台的核心功能,也是发挥比较多的模块,我们就基本的内容介绍一下,如果你有新的想法可以随意创新。

(1)用例的整体展示,以列表的形式进行用例展示,当然左侧也可以以接口为单位进行用例的组织,以树型结构进行筛选。单击左侧的对应接口名,右侧展示出该接口下的所有用例。用例的基本信息包含:用例名,用例功能,检测点,创建时间,执行结果和创建人等。

(2)搜索功能,必须可以以测试用例名,测试用例功能,接口名和创建人进行对测试用例进行搜索。

(3)翻页功能,一页不能展示太多的测试用例,需要根据页面部署进行翻页设置。

(4)新增功能:有添加测试用例权限的用户可以对相应的接口添加测试用例,此处有两种做法:一种是完全手工,选择接口后添加对应的参数,参数值 ,检测方法与预期结果。第二种是在选择接口,根据接口文档自动添加上相应的参数,返回值示例等,你只需要填写参数值,选择检测方法和填上预期结果值。

(5)修改和删除功能 :对测试用例必须进行权限控制,用例的创建者才有权限修改和删除,其他人没有这个权限。

(6)执行功能:测试用例必须有执行功能,执行功能包含单个用例的直接执行,选择多个用例的同时执行两个执行操作。以及有接口可以将选择的用例保存成测试用例集。

3.3测试用例集管理

    随着测试用例数量的增加,我们需要对其有合理的管理方法。不少测试框架都有测试用例集的这个概念,如java的Testng.xml,Python的testsuite等。我们在开发平台的时候,这一功能也是非常重要的。

测试用例集的管理包含以下几个功能 :

(1)测试用例集展示:测试用例集同测试用例,接口文档一样,需要有展示功能,展示项应该包含:测试用例集名称,测试用例集功能,包含用例,执行结果,创建时间,创建人等信息。同时展示页面也需要有相应的搜索和翻页功能,此处就不在累述了。

(2)测试用例集的创建:创建测试用例集的时候,需要填写用例集的名称,功能,而包含的测试用例是需要有选择已有测试用例的功能。

(3)修改和删除,和上面是一样的,必须进行合适的权限控制,防止不同的用户相互影响。在修改用例集的可以选择增加或是删除相应的测试用例。

(4)用例集的执行:测试用例集包含两种执行方式,一个是直接执行,单击触发相应的用例执行;二是设置定时任务或是触发策略。

3.4任务管理

     任务管理一般是定时任务,当然也可以包含其他如jenkins上触发任务。不过我们此处只讨论定时任务,先不管定时任务如何实现。定时任务的管理至少包含以下几个功能:

(1)定时任务展示 :展示出定时任务的功能,执行策略,通知策略,当前状态等信息。如果有必要,需要添加上搜索和翻页功能。

(2)定时任务的创建:有相应操作权限的用户可以创建相应的定时任务,应该包含定时任务名称,选择需要执行的测试用例集,触发策略,通知策略,以及接收通知人的邮件或是手机号列表等。

(3)   定时任务的停止及删除:定时任务修改的价值不大,可以直接删除了,再创建即可。根据相应的权限对定时任务进行停止,启动和删除等操作。

3.5测试报告管理功能

    测试报告是我们查看测试计划执行结果的重要手段,如果做数据分析的话,这也是重要的数据来源。所以我们也分两部分进行介绍此处的功能.

一,     简化版本

    如果是简化版本的测试报告管理的话,需要具备以下功能:

(1)测试报告的展示:展示出测试报告的基本情况,如:测试计划名,测试计划功能,执行时间,执行策略,执行结果,执行人等。而且要提供搜索的翻页功能。

(2)测试报告的查看:单击执行结果,能打开具体的测试报告页面,如果使用的测试框架能自动生成,就打开相应的报告,如果不能先生成详情的测试报告。

二,     详情版本

     简化版提供查看相应的测试报告信息即可,如果要做复杂一点儿,需要对报告进行数据统计,主要统计的维度有:

(1)报告维度

统计每个测试用例集的执行情况,成功或是失败的次数,当然如果能再细度化的话,还可以细化到测试用例细别。这样可以分析出测试用例集的执行情况,里面有用例是否合理等。出错的原因,以出错的概率。

(2)执行用户维度

以执行测试用例集的用户为维度来统计成功失败情况,以此来分析每个用户的执行习惯 ,测试范围,以及失败的原因,创建的测试用例集是否合适等。

(3)执行时间维度

以测试用例集的时间来统计测试用例集的执行情况,以此来分析每个时间段的执行情况,用户的使用习惯,以便错开执行峰值或是做成异步多线程等执行方法。

(4)统计展示

在上面做了相应的统计后,我们需要做相应的展示,如果不展示就失去了统计的意义。所以要借助于第三方的前端开源框架或是插件展示出来,这个就要看个人使用的熟练程度与审美了。

3.6日志管理功能

一个完善的系统都会有相应的日志功能,用来记录执行情况,错误信息,以便进行更好的错误排查与跟踪。我们接口自动化平台需求记录的日志不是太多,因为对应的测试框架会记录错误信息的。但是我们也要记录如下信息:

(1)出错接口的出错现场:出错时的参数,出错的接口输出,执行时间等等。因为测试框架只对比对信息进行出错记录,如实际结果与预期结果不符之类的。

(2)平台出错信息:如接口请求不通,或是页面加载出错,执行函数出错等。

(3)日志分析:根据自己的业务需求,对日志做相应的分析 ,以便统计出相应的数据以供后期使用。

(4)数据展示:我们对日志分析的数据,要做相应的展示,不能仅仅放到数据库中,这不符合我们平台开发的目的。

3.7用户管理功能

       用户权限管理对任何一个系统来说都非常重要,因为一个系统的数据不可能对所有人都无限的使用。所以我们的接口自动化测试平台也需要做相应的权限管理,大致先将用户分为以下几个权限:

(1)访客:可以查看接口文档,执行接口测试用例,接口测试用例集,查看测试报告及相关的统计数据。简单来说只有查看和执行权限,也可以视情况而定,不授于其执行权限。

(2)接口开发人员:接口开发人员可以对接口文档拥有所有权限,以便管理所有的接口文档。同时可以执行现成的接口测试用例,可以用来验证开发的接口以及查看相关统计信息。

(3)接口测试人员:编写接口测试用例,接口测试用例集以及设置相应的定时任务等,可以查看接口文档以及相关统计信息。

(4)系统管理员:拥有系统所有权限。

而用户管理功能包括以下几个方面:

(1)用户权限申请:申请系统相应的权限,填写必要的信息,以便管理员审核。

(2)用户管理功能:审批用户申请,更改用户权限,以及删除用户信息。

(3)申请记录管理:管理用户的申请记录,以便分析用户的申请行为。

以上功能只有系统管理员可以进行相应的操作。

3.7 相关技术简介

上面我们详情介绍了一个接口自动化平台的相关模块的功能,总体来说就是表格以及对数据的相关操作,所以就完成上面的功能我们分析一下可能用到的技术: 

开发框架

     可以是现成的php的CI,python的django,java我们公司有现成的框架,而开源的我不太了解,大家可以根据需要去选择。

测试框架:

    php的phpunit,python的unittest,java的TestNG等都是不错的选择。

前端框架:

    Bootstrap+jquery,当然选择bootstrap table加上相关的插件就能很好地完成前端设计。

数据库:

     建议用mysql,轻量级的,sql操作也比较熟悉,也有用mangodb的,自己根据需要选择即可。

服务器:tomcat+nginx足以完成需求。

3.8 总结

     本章我们详情介绍了接口自动化平台的各个相关功能模块,如果很好地完成了这些模块,一个不错的接口自动化平台就已经呈现在你面前了。当然这仅仅是一个基本的平台,而我们大部分人也玩的就是这个套路,在知识不断积累,眼界越来越开阔的时候,也会有很多深入的玩法,下节我们将介绍几种比较新颖的接口测试平台设计案例,大家来相互交流一下。

----夫英雄者,胸怀大志,腹有良谋,有包藏宇宙之机,吞吐天地之志者也。