Unity API测试框架

来源:互联网 发布:numpy 矩阵运算 编辑:程序博客网 时间:2024/05/21 00:20
嗨,我叫Kasper AmstrupAndersen,我现在在Unity公司领导着Toolsmiths团队。Toolsmiths团队由6个开发人员组成,我们开发工具、框架以及基础设施-并且实际上我们也要花大量的时间来测试Unity。这个团队在哥本哈根(丹麦)、敖德萨(乌克兰)和赫尔辛基(芬兰)都有。在这篇博文里我会讲述一下我们最近在开发的一个框架-Unity运行测试框架。

       在Unity“QA”两个字里(质量评价),我们更在乎Q-Quality(质量)。我们喜欢测试,更喜欢在我们的测试里加入灵活的成分。我们现在拥有4个非常专业、非常职业的测试人员和开发人员的团队,他们每日的职责就是保证Unity能够为每个人正常的工作。这些团队是:测试工程师团队,测试开发人员团队,Toolsmiths团队和学生工人团队(以前我提起过这个团队)。测试Unity时的一个巨大的挑战就是符合逻辑的结构在现实中崩溃,并且在测试的范围还是讲的通的。最让人头痛的是Unity的多平台在很多情况下(不是全部)都跟核心功能设置有关。举个例子:我们有范围也有平台,但是仍然有一部分是平台特殊范围(功能)的地方。这就像测试爆炸的源头。

      在我们运行时API测试框架里我们把平台完全的和功能结合起来。这种假设允许我们使特殊的框架用最小的努力带来很大的成果。写一次测试,这个框架就会在所有的地方运行。

开始之前,我先来举些数据和例证。

  •    今天,我们已经有了超过750个经典的运行API测试案例。
  •    超过9000个运行时API测试案例(横跨超过10个平台/用户)在一个单独自动编译校验测试套件中运行。这个数字还在迅速的增长。
  •    我们每天可以轻松地完成超过150.000个运行时API的测试方案。
  •    此框架可以在所有提供给Unity的平台/用户上运行。
  •    此框架(包括我们自己的编译系统)可以在多平台上并行测试。整个套件平均处理时间小于30分钟,其中一般的时间石化在建立环境并编译上(事实上平均的处理时间一般都在15分钟左右)。
  •    此框架也能为其他公司集成Unity的产品提供测试。

 

运行时测试框架

    我们给我们的运行时API测试框架命名为“运行时测试”。那么什么是运行时测试呢?它是基于验证一些Unity运行时类功能的测试方案。运行时测试框架下我们用C#写一个测试方案并且它将在所有的平台上不带修饰运行代码。框架已经被集成到我们的编译系统里,开发人员和测试人员可以运行他们主干底下的所有分支的测试,我们共享的代码库,随时会变化更新。以下是一部分框架的主要性能:

  • 写一次测试代码。框架可以随处运行他们。
  • 一个使用方的断言方法库可以为所用玩家提供使用。
  • 快速测试(处理速度从毫秒级到几秒钟之间)
  • 测试运行在独立场景里。没分测试在各场景里分别处理。
  • 测试可以轻易被取消,也仅用于特殊平台。
  • 框架于强大的后端连接,可以尽可能地实时显示关键词。
  • 自动添加新人不必修改框架内核。

    运行时测试框架由下列模块组成:

  • Unity.Automation:用于Unity编辑器的启动和交互的函数
  • Unity.Automation.Players:用于玩家启动并与其交互、用作构建pipeline的函数
  • Unity.RuntimeTests.Framework:框架的核心逻辑
  • Unity.RuntimeTests.Runner: 测试运行器。它加载承载测试方案并启动测试处理的模块。
  • Unity.RuntimeTests:运行时API测试方案。

不同的模块以及他们互相之间的依赖关系显示如下:

     这个框架由运行方和使用方组成。使用方只需一个很简单的执行动作(不用接口、派生等)就能在所有的使用者那里运行

     下面是一个实际测试执行的示例:

      运行器加载测试集合(Unity.RuntimeTests)然后经过框架的控制(1,2)。框架首先启动编辑器进程(3)。然后,创建(或复制)所需的全部资源去运行测试,并且开始为每个测试创建场景(4)。这些都是在唤醒了的预置编辑器进程里完成。如果测试到WWW类,框架会启动网络服务,这时[需求,答复]组合会在建立的时候被保存(5)。在运行时www请求测试会被生成,框架会让网络服务返回结果。最后,一个玩家就被建立并启动了,测试结果被提交,并且测试报告被生成了(6,7a,7b,8)。

后端报告

后端报告扫描测试集合(Unity.RuntimeTests)并且显示所有测试。这是我们能够跟踪关键词。下面是个例子:

    这个表表明所有的运行时测试的范围集合。横坐标代表“种类范围”,纵坐标代表“测试的数量”。

这就是它

       现在你了解了吧。这就是我们的运行时测试。我们喜欢测试,给unity的用户写测试简单、有趣。而且他们也同样简单的给我们带来相应的报酬。但这只是我们最近在Toolsmiths团队里的工作之一。非常期待在未来的博文里能跟大家分享更多。