在第二章中咱们简单地介绍了接口自动化平台的基本功能,主要包括如下几个方面:php
(1)接口文档管理功能:管理接口信息,包括增,删,改,查等。前端
(2)用例管理功能:新建,展现,查询,删除,运行测试用例。java
(3)测试用例集管理:新增,修改,删除,查找,运行测试用例集。python
(4)任务管理:管理定时任务,或者其余任务触发机制。mysql
(5)测试报告管理功能:展现,查找测试报告,对测试报告进行统计和分析。jquery
(6)日志管理功能:记录错误日志,对日志进行过滤及分析。nginx
(7)用户管理功能:以便对测试用例,测试计划,任务,报告和日志的相关操做进行权限控制。git
本章咱们将对每一项目作详情的设计分析,最后给出设计实现思路。github
接口文档管理最近是一个单独的部分,相似于wiki上面的一个功能,属于文档技术沉淀或是开发说明等。后来在接口自动化平台功能愈来愈强大后,此功能正式成功接口自动化平台的一部分。接口文档应该详情记录接口的调用地址,接口功能,调用方式,接口的参数,参数中是必选的,仍是非必选的,接口返回示例或是字段等信息。sql
此部分功能应该包含如下具体功能:
(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
用例功能管理是接口自动化测试平台的核心功能,也是发挥比较多的模块,咱们就基本的内容介绍一下,若是你有新的想法能够随意创新。
(1)用例的总体展现,以列表的形式进行用例展现,固然左侧也能够以接口为单位进行用例的组织,以树型结构进行筛选。单击左侧的对应接口名,右侧展现出该接口下的全部用例。用例的基本信息包含:用例名,用例功能,检测点,建立时间,执行结果和建立人等。
(2)搜索功能,必须能够以测试用例名,测试用例功能,接口名和建立人进行对测试用例进行搜索。
(3)翻页功能,一页不能展现太多的测试用例,须要根据页面部署进行翻页设置。
(4)新增功能:有添加测试用例权限的用户能够对相应的接口添加测试用例,此处有两种作法:一种是彻底手工,选择接口后添加对应的参数,参数值 ,检测方法与预期结果。第二种是在选择接口,根据接口文档自动添加上相应的参数,返回值示例等,你只须要填写参数值,选择检测方法和填上预期结果值。
(5)修改和删除功能 :对测试用例必须进行权限控制,用例的建立者才有权限修改和删除,其余人没有这个权限。
(6)执行功能:测试用例必须有执行功能,执行功能包含单个用例的直接执行,选择多个用例的同时执行两个执行操做。以及有接口能够将选择的用例保存成测试用例集。
随着测试用例数量的增长,咱们须要对其有合理的管理方法。很多测试框架都有测试用例集的这个概念,如java的Testng.xml,Python的testsuite等。咱们在开发平台的时候,这一功能也是很是重要的。
测试用例集的管理包含如下几个功能 :
(1)测试用例集展现:测试用例集同测试用例,接口文档同样,须要有展现功能,展现项应该包含:测试用例集名称,测试用例集功能,包含用例,执行结果,建立时间,建立人等信息。同时展现页面也须要有相应的搜索和翻页功能,此处就不在累述了。
(2)测试用例集的建立:建立测试用例集的时候,须要填写用例集的名称,功能,而包含的测试用例是须要有选择已有测试用例的功能。
(3)修改和删除,和上面是同样的,必须进行合适的权限控制,防止不一样的用户相互影响。在修改用例集的能够选择增长或是删除相应的测试用例。
(4)用例集的执行:测试用例集包含两种执行方式,一个是直接执行,单击触发相应的用例执行;二是设置定时任务或是触发策略。
任务管理通常是定时任务,固然也能够包含其余如jenkins上触发任务。不过咱们此处只讨论定时任务,先无论定时任务如何实现。定时任务的管理至少包含如下几个功能:
(1)定时任务展现 :展现出定时任务的功能,执行策略,通知策略,当前状态等信息。若是有必要,须要添加上搜索和翻页功能。
(2)定时任务的建立:有相应操做权限的用户能够建立相应的定时任务,应该包含定时任务名称,选择须要执行的测试用例集,触发策略,通知策略,以及接收通知人的邮件或是手机号列表等。
(3) 定时任务的中止及删除:定时任务修改的价值不大,能够直接删除了,再建立便可。根据相应的权限对定时任务进行中止,启动和删除等操做。
测试报告是咱们查看测试计划执行结果的重要手段,若是作数据分析的话,这也是重要的数据来源。因此咱们也分两部分进行介绍此处的功能.
一, 简化版本
若是是简化版本的测试报告管理的话,须要具有如下功能:
(1)测试报告的展现:展现出测试报告的基本状况,如:测试计划名,测试计划功能,执行时间,执行策略,执行结果,执行人等。并且要提供搜索的翻页功能。
(2)测试报告的查看:单击执行结果,能打开具体的测试报告页面,若是使用的测试框架能自动生成,就打开相应的报告,若是不能先生成详情的测试报告。
二, 详情版本
简化版提供查看相应的测试报告信息便可,若是要作复杂一点儿,须要对报告进行数据统计,主要统计的维度有:
(1)报告维度
统计每一个测试用例集的执行状况,成功或是失败的次数,固然若是能再细度化的话,还能够细化到测试用例细别。这样能够分析出测试用例集的执行状况,里面有用例是否合理等。出错的缘由,以出错的几率。
(2)执行用户维度
以执行测试用例集的用户为维度来统计成功失败状况,以此来分析每一个用户的执行习惯 ,测试范围,以及失败的缘由,建立的测试用例集是否合适等。
(3)执行时间维度
以测试用例集的时间来统计测试用例集的执行状况,以此来分析每一个时间段的执行状况,用户的使用习惯,以便错开执行峰值或是作成异步多线程等执行方法。
(4)统计展现
在上面作了相应的统计后,咱们须要作相应的展现,若是不展现就失去了统计的意义。因此要借助于第三方的前端开源框架或是插件展现出来,这个就要看我的使用的熟练程度与审美了。
一个完善的系统都会有相应的日志功能,用来记录执行状况,错误信息,以便进行更好的错误排查与跟踪。咱们接口自动化平台需求记录的日志不是太多,由于对应的测试框架会记录错误信息的。可是咱们也要记录以下信息:
(1)出错接口的出错现场:出错时的参数,出错的接口输出,执行时间等等。由于测试框架只对比对信息进行出错记录,如实际结果与预期结果不符之类的。
(2)平台出错信息:如接口请求不通,或是页面加载出错,执行函数出错等。
(3)日志分析:根据本身的业务需求,对日志作相应的分析 ,以便统计出相应的数据以供后期使用。
(4)数据展现:咱们对日志分析的数据,要作相应的展现,不能仅仅放到数据库中,这不符合咱们平台开发的目的。
用户权限管理对任何一个系统来讲都很是重要,由于一个系统的数据不可能对全部人都无限的使用。因此咱们的接口自动化测试平台也须要作相应的权限管理,大体先将用户分为如下几个权限:
(1)访客:能够查看接口文档,执行接口测试用例,接口测试用例集,查看测试报告及相关的统计数据。简单来讲只有查看和执行权限,也能够视状况而定,不授于其执行权限。
(2)接口开发人员:接口开发人员能够对接口文档拥有全部权限,以便管理全部的接口文档。同时能够执行现成的接口测试用例,能够用来验证开发的接口以及查看相关统计信息。
(3)接口测试人员:编写接口测试用例,接口测试用例集以及设置相应的定时任务等,能够查看接口文档以及相关统计信息。
(4)系统管理员:拥有系统全部权限。
而用户管理功能包括如下几个方面:
(1)用户权限申请:申请系统相应的权限,填写必要的信息,以便管理员审核。
(2)用户管理功能:审批用户申请,更改用户权限,以及删除用户信息。
(3)申请记录管理:管理用户的申请记录,以便分析用户的申请行为。
以上功能只有系统管理员能够进行相应的操做。
上面咱们详情介绍了一个接口自动化平台的相关模块的功能,整体来讲就是表格以及对数据的相关操做,因此就完成上面的功能咱们分析一下可能用到的技术:
开发框架:
能够是现成的php的CI,python的django,java咱们公司有现成的框架,而开源的我不太了解,你们能够根据须要去选择。
测试框架:
php的phpunit,python的unittest,java的TestNG等都是不错的选择。
前端框架:
Bootstrap+jquery,固然选择bootstrap table加上相关的插件就能很好地完成前端设计。
数据库:
建议用mysql,轻量级的,sql操做也比较熟悉,也有用mangodb的,本身根据须要选择便可。
服务器:tomcat+nginx足以完成需求。
本章咱们详情介绍了接口自动化平台的各个相关功能模块,若是很好地完成了这些模块,一个不错的接口自动化平台就已经呈如今你面前了。固然这仅仅是一个基本的平台,而咱们大部分人也玩的就是这个套路,在知识不断积累,眼界愈来愈开阔的时候,也会有不少深刻的玩法,下节咱们将介绍几种比较新颖的接口测试平台设计案例,你们来相互交流一下。