【译】统一测试运行器&测试分析

发表于2016-03-07
评论0 3k浏览

原文地址:http://blogs.unity3d.com/2015/10/07/unified-test-runner-test-analytics/

原文作者未做版权声明,视为共享知识产权进入公共领域,自动获得授权


  你好,我是Yan,过去两年我是Unity团队的工具工程师。我们团队的规模进来增长的比较快,同时我们的测试套件数目也在增长,同样增长的还有无法在本地重现的不稳定以及失败的测试。在这篇文章里,我将讨论下我们是如何解决这些问题,但是首先要跟你介绍下我们的自动化环境,仅仅是让你更好地了解我们要面临的挑战。

  在Unity,我们有很多不同类型的测试框架(见图1)和测试套件

· 运行时测试,会在所有Unity支持的平台上验证Unity的公开运行时API
· 集成测试用来测试哪些不好用运行时测试解决的问题,包括测试Unity编辑器功能以及那些集成进来的组件如Cache ServerBug Reporter
· C++测试会测试原生代码而不通过脚本层。
· 图形测试会测试渲染功能,通过与一个给定图像的比较来判断是否正确。
· 许多其他的测试(性能测试、加载测试、IMGUI测试)

1 Unity的测试框架


  在最高级别时,所有的测试会根据测试框架的不同而被划分为不同的子集合。但是,他们会进一步依据平台、运行频率、执行时间和其他一些标准进行区分。这些区分将产生大量的测试点。我们会在一会说到这个问题。管理这么框架和测试并不容易,所以大概一年前我们开始做一个统一测试运行器(UTR):所有测试的统一入口。它给所有测试框架一个入口(见图2).这使得任何人都可以用命令行来运行我们的测试套件。


2 统一测试运行器

  测试产生的所有问题都会被发送到一个地方,并且会根据条件进行分类和整理。UTR还提供其他服务:

· 测试可以用testfilter=TestName进行过滤

· 所有测试都有会一个相同的报告格式

  起初,UTR是用来做本地测试的。然后我们开始云构建项目。我们希望在云构建上也使用UTR。我们的目标是在本地或者云构建上可以以相同的方式使用UTR。或者用另外一种表述,如果在云构建上失败了,我们希望也能把这个信息很容易地报告到本地。

  慢慢地UTR开始称为Unity测试的唯一入口。这使得它非常适合做另外一项工作:从本地和云测试中收集执行数据。当一个测试失败的时候,UTR把数据传到网页服务器上。这就是我们的测试数据解决方案Hoarder为什么会出现。Hoarder的职责是手机存储测试数据并对外提供接触方法。它可以对单独的测试提供聚合数据分析。见图3。



3 构建代理和用户向Hoarder网页服务提供数据。分析应用获取這额数据

  我们根据这些数据发现很多有趣的事情并做了很多重要的决定,我将会在下一篇文章里面谈到我们都做了哪些决定



 



如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引