unity自动化测试
Hello everybody, my name is Elvis Alistar and I have been working with Unity for more than 2 years. I am responsible for leading the team of Software Development Engineers in Test (SDET), which is part of Unity’s QA department. As the job title implies, we are a team of software developers that absolutely love testing. In this post, I would like to let you know why it is so critical for Unity to have a team of expert developers focusing on test automation.
大家好,我叫Elvis Alistar,我在Unity工作超过2年了。 我负责领导测试软件开发工程师团队(SDET),该团队是Unity质量保证部门的一部分。 顾名思义,我们是一支绝对热爱测试的软件开发人员团队。 在本文中,我想让您知道为什么拥有一支专注于测试自动化的专家开发团队对于Unity如此重要的原因。
The Challenge
挑战
Unity is a rapidly growing company with more than 450 employees from 50 different nations, working in 27 locations. The wide-spread, distributed nature of our company means that we have to be able to work with developers on all the different time-zones, from different cultures and with different backgrounds. We also have more than 2.5 million registered developers and often we interact with them through our forums, feedback website, and alpha and beta groups and by handling some of the bug reports we receive from them. Close collaboration with our development teams means that good communication skills become key.
Unity是一家发展Swift的公司,在50个国家/地区拥有450多名员工,在27个地区工作。 我们公司的广泛分布和分散性质意味着我们必须能够与来自不同文化和背景的所有不同时区的开发人员合作。 我们也有超过250万注册开发人员,我们经常通过论坛,反馈网站,alpha和beta组以及处理从他们那里收到的一些错误报告来与他们互动。 与我们的开发团队紧密合作意味着良好的沟通技巧成为关键。
Unity supports 12 major platforms and a few smaller ones. Users can also use three different scripting languages for writing their game code. Multiply these with the fact that we have runtime tests, graphics tests, integration tests, unit tests, UI tests, performance tests, etc. and the number of different combinations our test automation infrastructure has to support and cope with is phenomenal. Take our runtime tests for example. We now have more than 1.300 unique Runtime API test cases. More than 13.000 test cases are run in a single automated build verification suite. We work in more than 100 development branches at the same time, which means that there are around 500.000 test points executed on our build farm every day. SDETs have to write, maintain, optimize and improve these on a daily basis.
Unity支持12个主要平台和一些较小的平台。 用户还可以使用三种不同的脚本语言来编写他们的游戏代码。 将这些乘以我们拥有运行时测试,图形测试,集成测试,单元测试,UI测试,性能测试等事实,并且测试自动化基础架构必须支持和应对的不同组合的数量是惊人的。 以我们的运行时测试为例。 现在,我们有1.300多个独特的Runtime API测试用例。 单个自动化构建验证套件中运行着13.000多个测试用例。 我们同时在100多个开发分支中工作,这意味着每天在构建场中执行约500.000个测试点。 SDET必须每天编写,维护,优化和改进它们。
Just two years ago, we only had a few test frameworks, which were not very well documented, we didn’t have too many tests and nobody owned, maintained or improved the frameworks or the test code. The SDET team was formed with the mission of taking ownership of these frameworks and drive the effort of cleaning up, documenting and optimizing all our tests. We also made sure that all developers know how to use these frameworks and that they can easily create new tests using them.
就在两年前,我们只有几个测试框架,没有很好的文档记录,我们没有太多的测试,没有人拥有,维护或改进框架或测试代码。 SDET团队的任务是拥有这些框架的所有权,并推动清理,记录和优化我们所有测试的工作。 我们还确保所有开发人员都知道如何使用这些框架,并确保他们可以轻松地使用它们创建新的测试。
Unity’s code base is growing very fast and we need to make sure the product performs rock solid with every new release we are shipping. That is why we place great emphasis on test automation here at Unity. Just to put things in perspective, we now have somewhere around 2.2 million lines of code, out of which about 400.000 are test code spread over more than 7.000 files. This ensures that we can keep the quality bar high, avoid introducing new regressions and make sure that known bugs that were resolved will never show up in our product again.
Unity的代码库增长非常快,我们需要确保该产品在我们发布的每个新发行版中都具有坚如磐石的性能。 这就是为什么我们在Unity高度重视测试自动化的原因。 仅从角度来看,我们现在大约有220万行代码,其中约400.000是测试代码,分布在超过7.000个文件中。 这确保了我们可以保持较高的质量标准,避免引入新的回归,并确保已解决的已知错误不会再次出现在我们的产品中。
Now that is what I call a challenge!
现在这就是我所说的挑战!
Team organization
团队组织
We are a distributed team of 8 developers working on tools, frameworks and feature automation, with a big emphasis on the latter. Two of us are located in Copenhagen (Denmark), one in Silicon Valley (USA) and five in Odessa (Ukraine). Our job is to figure out ways to improve the overall workflow for everyone involved in the development of Unity, by improving the automation on the build farm, making regression suites to prevent bugs flowing in and also evangelizing the usage of the frameworks to both testers and developers.
我们是一个由8名开发人员组成的分布式团队,致力于工具,框架和功能自动化,重点是后者。 我们两个人位于哥本哈根(丹麦),一个位于硅谷(美国),五个在敖德萨(乌克兰)。 我们的工作是通过改善构建场的自动化,开发回归套件以防止错误流入以及向测试人员和测试人员推广使用框架的方式,找出改善Unity开发人员的总体工作流程的方法。开发人员。
Unity is a very complex product and to help work more efficiently we have split it into different areas: Scripting, Lightmapping, 2D, Animation, etc. Every SDET is responsible for writing, maintaining and reviewing tests in one or more of these areas. New SDETs will usually start with one area and work on it until they become proficient with using our processes, frameworks and strategies. After they gain enough knowledge and build enough confidence they take on more areas. All SDETs eventually work on improving our existing frameworks or adding new ones. We have 7 different kinds of automation frameworks at Unity and SDETs have to be able to work with all of them and help anyone else that has to work with them.
Unity是一个非常复杂的产品,为了帮助更有效地工作,我们将其划分为不同的区域:脚本,光照贴图,2D,动画等。每个SDET都负责在其中一个或多个区域中编写,维护和检查测试。 新的SDET通常会从一个领域开始并进行工作,直到他们精通使用我们的流程,框架和策略。 在他们获得足够的知识并建立足够的信心之后,他们将涉足更多领域。 所有SDET最终都会致力于改善我们现有的框架或添加新的框架。 我们在Unity上有7种不同类型的自动化框架,SDET必须能够与所有这些框架一起使用,并帮助必须与之协同工作的其他任何人。
Our job requires a strong collaboration with the other teams inside QA and across teams in our R&D department. We have to communicate well with developers and Software Test Engineers (STE) to make sure we know who is working on any given feature, which parts of it have been developed and tested and what needs to be automated. We all participate in QA’s main test activities on any given release, even if they don’t involve test automation: Exploratory Testing, Full Test Pass and Release Acceptance Testing (see Manual Testing session on our Testing Unity 4.0 blog post).
我们的工作需要与质量保证部门内的其他团队以及研发部门中的各个团队进行强有力的协作。 我们必须与开发人员和软件测试工程师(STE)保持良好的沟通,以确保我们知道谁在使用任何给定功能,已经开发和测试了哪些部分以及需要自动化什么。 即使不涉及测试自动化,我们也都参与QA的主要测试活动,即使它们不涉及测试自动化:探索性测试,完整测试通过和发行接受测试(请参阅我们的Testing Unity 4.0博客文章上的“手动测试”会话)。
Our automation work is rarely tied to a specific Unity release and that gives us a lot of freedom and flexibility to focus on what we want to improve. This also allows us to travel to our different offices to assist developers or to work with other testers on location. We attend the bigger testing conferences and we speak at conferences whenever we have the chance. We participate in our now famous HackWeeks where we can experiment with whatever ideas and projects we want, no matter how outlandish they are.
我们的自动化工作很少与特定的Unity版本绑定,这给了我们很多自由和灵活性,可以专注于我们要改进的地方。 这也使我们能够前往不同的办公室来协助开发人员或与其他测试人员合作。 我们会参加较大的测试会议,只要有机会,我们都会在会议上发表讲话。 我们参加了我们现在著名的HackWeeks,无论他们多么怪异,我们都可以尝试我们想要的任何想法和项目。
Skills and attitude
技能和态度
As SDETs we are required to have extensive knowledge about programming, object oriented design and test automation (unit testing, TDD, high level tests, etc.). We have to be able to spread the word about testing frameworks and practices, offer great feedback in code reviews and be able to work well together with developers. We value clean code and development best practices.
作为SDET,我们需要在编程,面向对象的设计和测试自动化(单元测试,TDD,高级测试等)方面拥有广泛的知识。 我们必须能够传播有关测试框架和实践的信息,在代码审查中提供大量反馈,并能够与开发人员一起良好地工作。 我们重视干净的代码和开发最佳实践。
At Unity, we also need to be able to work efficiently with many tools we use internally like FogBugz, QMetry, TeamCity, RhodeCode, Sikuli, NUnit, Moq, Unittest++, Atomiq and others.
在Unity,我们还需要能够使用内部使用的许多工具(例如FogBugz,QMetry,TeamCity,RhodeCode,Sikuli,NUnit,Moq,Unittest ++,Atomiq等)有效地工作。
We’re hiring…
我们正在招聘…
So, there you have it! Being an SDET at Unity is both awesome, very rewarding, and the diversity of tasks we take part in is simply mind-blowing. The challenge is on! Are you up for it?
所以你有它! 在Unity上成为SDET既很棒,又非常有意义,而且我们参与的任务的多样性简直令人难以置信。 挑战来了! 你准备好了吗?
翻译自: https://blogs.unity3d.com/2014/07/15/unitys-test-automation-team/
unity自动化测试