第二章,平台开发规划
从写了第一章 测试平台开发简介,到现在开始写第二章的内容,差不多有三个月了。中间赶上过春节,然后春节回来之后一边要冲刺第一季度的绩效,一边忙着其他的事情,几乎没有闲的时间。现在抽空继续我们的系列教程,不过提前说明,我们的相关文档不会介绍实现细节代码,而是从更高的层次来进行分析,介绍。具体的代码实现是比较初级的内容,如果你不能实现,还是先去做自动化测试,不要入手平台开发,结合自身情况有计划地来提升自己。
2.1 如何产生出平台需求
任何一个测试平台,说小了就是完成一系列功能的综合系统,说大了就是一个产品,和你通常在网上看到的如百度,腾讯等网站类似,是为大众服务的。而我们可能客户群体会小一些,是普通的测试人员,或许只是你们部门的测试人员,而其与大型的平台从原则上是一致的,麻雀虽小,五脏俱全嘛!
一个好的测试平台,是需要根据测试人员在平时的测试过程中,遇到取繁琐的问题,或是不太容易操作的地方,但是能借助工具来解决,为了聚合各种资源,达到简化操作,流程化工作等目的来产生出来的。不能为了开发平台而开发平台,就算你开发的平台功能再强大,不能解决实际问题,或是使用起来要求比较高,操作复杂的话,也是没有任何意义的。
艺术来源于生活而高于生活;平台需求来源于测试工作,而简于测试工作。
2.2 平台需求规划
在我们搞清楚了需求的来源后,就需要对需求进行全面的规划。因为我们要开发的是一个平台,一个生态系统,不是解决特定问题的代码集合;所以在考虑问题的时候,就需要有更高的视角和眼界。下面我们从一个需求入后,介绍一下如何分析需求,以及如何产生出平台。
一,测试需求
目前很多产品都在转向以app为主,这就要求后端的服务或是接口质量比较可靠,即使出现了问题,也能及时发现。而测试采取的办法是,编写接口自动化测试,进行监控回归测试。但是无论以什么语言编写接口自动化,都有技术门槛,而不会技术的同学没有办法参与进来,参与的同学比较少,维护起来比较麻烦。如何降低技术门槛,提高可维护性,人员的传承和培训等问题比较明显。
二,问题分析
针对测试人员有上面这个需求,我们测试开发的同学就要分析问题,然后产生出解决具体问题的方法,进而产生出平台需求。而这个需求的主要问题如下:
(1)技术门槛,不能使所有的同学都参与进来。而如果只有那么一两个同学参与开发接口自动化测试的话,周期比较长,维护成本也比较高。
(2)运行成果不直观。不管使用任何语言做接口自动化测试,最好的效果就是测试用例执行完成后,产生测试报告。而没有对测试报告进行管理和统计的工作。
(3)测试用例管理不便。在执行测试用例的时候,一般是通过测试用例集来进行管理测试用例的,不能灵活地组合需要的测试用例。
(4)监控的时候需要借助于jenkins, 或是服务器的定时任务,都不方便管理。
三,规划需求
既然分析出上面的问题后,我们就可以详细规划需求了,也就是我们要怎么解决上面的这些问题。主要方法如下:
(1)降低使用成本,通过技术手段将编写接口自动化测试进行可视化,不需要写任何代码,只需要填写测试数据,即可生成接口自动化测试用例。
(2)管理测试用例,测试用例包含测试对象,测试数据,预期结果等,要进行合理的管理,以便减少维护成本。
(3)管理测试用例集,方面我们自由组合测试用例,以适合不同的测试需要。
(4)测试用例集的运行方法控制,抛开第三方工具Jenkins,来进行合理的管理。
(5)统计测试报告,清晰的展示每次运行的结果,并能进行必要的统计功能。
(6)错误记录功能,一旦测试用例出错,需要记录错误发现的现场环境,方便进行错误排查。
所以具体化成为平台开发的功能后,就应该是下面这样的功能:
(1)接口文档管理功能:管理接口信息,包括增,删,改,查等。
(2)用例管理功能:新建,展示,查询,删除,运行测试用例。
(3)测试用例集管理:新增,修改,删除,查找,运行测试用例集。
(4)任务管理:管理定时任务,或者其他任务触发机制。
(5)测试报告管理功能:展示,查找测试报告,对测试报告进行统计和分析。
(6)日志管理功能:记录错误日志,对日志进行过滤及分析。
(7)用户管理功用:以便对测试用例,测试计划,任务,报告和日志的相关操作进行权限控制。
2.3 其他更加细致的规划
通过测试人员的具体困难,分析产生困难的原因或是问题,然后再根据问题提升出具体的需求。这是非常重要的一步,也是由问题到平台的关键。但是有了具体的需求后,还没有办法立刻去开发平台,还有许多其他的问题需要考虑。
一, 技术考虑
要完成我们需要的功能,目前有哪些成熟的技术?Java和Python选哪种语言比较好?数据库用什么?业界有没有对应的开源框架,或是公司其他人或部门有没有这方面的尝试?如果有现成的经验可供参考,将减少我们的开发成本,少走很多弯路。
二, 开发资源配置
如果我们投入了相应的平台的开发,人员如何配置:是你自己全面开发,还是团队开发?团队的人员是什么水平,他们能投入多少时间到平台开发中?平台开发时代码如何管理?平台能部署到哪里?相应的软硬件资源容易协调吗?
三, 需求细化
如果上面的资源没有问题,就需要细化我们的需求了。每一项功能必须细化一下,出一个详细的需求文档。细化到显示接口文档的时候,应该显示哪些信息?新增的时候需要填写什么字段等等。如果不如此细化出需求文档,开发的时候就没有依据。平时在我们的正常工作中,是由产品来进行相关的工作的,可是如果我们自己开发平台的话,这就是我们需要做的工作。
四, 代码架构分析
细化完成需求后,就需要编写代码实现主要的功能。在写代码之前需要进行详细的代码架构设计,不能写一段程序完成一个功能,然后都堆放在一起,眉毛胡子一把抓,后期维护成本相当大的。如果是团队开发的话,没有前期的代码架构设计与分析,参与的人员越多,灾难就会越大,合并代码和维护会使人疯掉的。
五, 实施维护和管理
在平台开发初具规模的时候,就需要合理的维护和管理了。以便能使平台更好地为测试人员服务,此时的影响时间,问题排查,功能扩展等就会变成更加重要了。不管你前期如何做需求调研,代码如何规划,功能如何强大,在投入使用后会出现各种问题。修改问题,优化代码,新增功能将会持续好久的。
2.4 总结
本章我们从了解了测试平台后,应该投入的下一个阶段:平台开发规划,来简单地介绍了相关需要规划的内容,并以简单的接口自动化平台为例进行了分析。当然如果测试平台功能比较强大的话,需要考虑的内容更多,不过整体方向也是这几个。希望通过这方面的介绍能给想做平台开发的同学带来一些帮助,后面我会详细介绍上面提到的各项规划,请大家多多关注!