点击上方蓝字关注我们!
| 导语 使用YAML文件描述测试用例,自动化生成测试用例,并提供网页访问的能力;同时对测试用例数据进行多维度的统计,提供丰富的测试用例管理和查看视图,更好的保障客户端迭代质量。
“开发负责质量”是研发效能提升的重要一环,有利于推动更合理的架构设计,形成研发上的闭环,让做自动化、做单元测试的成本足够低。
在研发效能提升的大背景下,开发也要开始着手编写测试用例。我们先来看下测试用例是什么:
测试用例是从测试角度对需求各个功能点的详细文字描述,包括执行步骤、预期结果等,用于指导需求的测试工作,以及单元测试和自动化测试的编写。
一直以来,我们都是在TAPD上编写需求的测试用例,TAPD上可以比较方便的进行需求和测试用例的关联。但随着我们对测试用例的要求越来越高,在TAPD编写测试用例的缺点也逐渐暴露了出来:
TAPD测试用例举例:
这些问题暴露出来之后,我们就开始规划使用新的测试用例管理方案。因为测试用例的完备性会直接影响到迭代质量,如果测试用例写得不好,迭代质量就很难保证了。从实际经验看,我们每个版本总有因为测试用例缺失导致的bug。
那么如何能够既保证测试用例的质量,同时能让大家写起来更轻松呢?我们定了如下几个目标:
目标列完后,其实基本方案也就浮出水面了。既然测试用例交给开发管了,那我们就用开发的方式去管管。
用git管理测试用例的好处很多,但是怎么去写测试用例呢?写个excel文件放上去?那还不如直接用TAPD。 我们想做的是用git 管理 测试用例,而不是简单的把测试用例托管到git上。
为了尽可能地降低写测试用例的成本,我们希望大家在写测试用例时只需要填好必需的字段,其他的数据我们进行自动化的解析和完善,最终形成一个完整的测试用例。
YAML文件写起来方便,而且更好解析,非常适合用来编写测试用例。
我们定义了一系列测试用例的描述字段,用来表示一个测试用例。一个YAML文件,就对应了一条测试用例描述。 YAML文件中主要包含了以下字段:(以上面截图中的TAPD测试用例为例)
#【必填】Desc: 测试用例详细描述Desc: 直播轻互动和互动热度#【可选】PreCondition 前置条件PreCondition: 使用6.0.80及以上版本#【必填】TestPlan:编写测试用例TestPlan: #【必填】CheckPoint 表示“测试点” - CheckPoint: #【必填】desc:测试点描述 desc: 互动资源下发错误 cases: #【必填】cases:放置具体测试用例 - case: action: 没有下发动效资源btn_like_resource,或者下发的不合法 assert: 不展示飘心动画,不展示热度,也不去轮询拉取热度接口 iOSAutoTest: testInvalidResource androidAutoTest: testInvalidResource - CheckPoint: desc: 互动资源下发正确 cases: - case: action: 展示动画 assert: UI符合预期 - case: action: 拉取热度值 assert: 拉回来N条,按照每秒N/5去递增的展示 - case: action: 查看热度值展示 assert: 位置:在心的上方,数字规则:按照通用的来,大于9999显示万 - case: action: 点击心 assert: 本地假写,热度值+1,同时调用点赞计数增加的接口#【必填】版本变更记录,版本号+负责人,中间按空格分开,版本号必须是3段格式,包含4个数字,如6.0.90ChangeLog: - 6.0.80 (authorname)#【可选】Story: 需求链接(多个需求使用数组格式)Story: http://tapd.oa.com/10045201/prong/stories/view/1010045201857627509#【可选】RelatedModule:额外关联模块,如果此用例同时影响其他模块,则在此处填写RelatedModule: - Video/直播底层/普通直播#【可选】IncludeTestCase:引入测试用例,填写后会自动将关联的测试用例包含进来IncludeTestCase: - 日夜间适配 - 网络适配
其中,测试用例描述、前置条件、测试点描述、执行步骤、预期、需求链接、等级等都是我们在TAPD中写测试用例必填的字段,这里通过YAML文件来写更加方便,不会增加大家编写测试用例的工作量。
除此之外,我们额外添加了几个重要字段,用来管理测试用例。
整体看来,相比于在TAPD中填写,虽然增加了几个字段,但是填写起来都非常简单,并不会增加大家的工作量,反而规避了很多的重复工作。
YAML文件只是测试用例的描述,那最终的测试用例到底长什么样子呢?和写的YAML文件有什么不一样的呢?
我们对YAML文件进行解析和数据填充,就生成了最终的Markdown文件。为什么要再生成一份Markdown文件呢?
首先YAML文件里只是测试用例的基本描述信息,并不足以作为真实的测试用例描述。其次,相比于YAML文件,Markdown文件更方便阅读。
比如对于上面的YAML描述文件,我们会自动生成如下Markdown文件。
可以看到:
大家只需要在YAML文件中填好对应的描述字段,提交后就能自动生成这样的测试用例文件,全自动进行,非常优雅。
4. 自动生成文档网站,支持内网访问
现在我们可以自动生成测试用例文件了,但还不够好用。
为了进一步提升体验,我们使用gitbook将Markdown文件以文档网页的形式进行发布,这样就可以在网页中浏览测试用例。
同时,基于腾讯内网静态网站服务,我们进行进一步的配置,支持在内网直接访问 来查看所有的测试用例。
在这个网页中,我们可以轻松的查看、搜索所有的测试用例!
同时,丰富的数据统计维度可以更好地推动大家写单元测试和自动化测试,提升整体代码质量。
所有的能力,都是通过解析YAML文件,并进行一系列的自动化操作获得。 开发同学只需要写YAML文件,提交后会自动触发蓝盾流水线的执行。在蓝盾流水线中,我们会进行格式校验、数据组装、文档发布等一些列操作。流水线执行完毕后,就可以直接通过网页查看测试用例。
5. 本地预览
我们写了一套命令行工具(qntc),提供本地预览能力,大家写好YAML文件之后,可以先在本地进行页面预览,预览没问题之后再进行提交。 除了本地预览测试用例页面之外,我们还提供了在本地查看测试用例、进行数据校验等能力。
我们基于git的测试用例管理方案,使用YAML文件描述测试用例,自动化生成测试用例,并提供网页访问的能力;同时对测试用例数据进行多维度的统计,提供丰富的测试用例管理和查看视图,更好的保障客户端迭代质量。
测试用例描述作为核心数据,直接存储git仓库中,也非常方便后续的扩展,比如生成更丰富的统计视图,将数据导入其他平台等。
end
扫描二维码获
取更多精彩干货
注:图片均来源于网络,无法联系到版权持有者。如有侵权,请联系后台做删除处理。