在 LinkedIn, 我们相信设计为我们的成员提供很有价值的产品,快速迭代这些产品,并且在质量上也是不打折扣的。早这篇文章中,我将描写下使这一切成为可能的测试方法。

团队

一个典型的测试团队包括产品管理,开发工程师,软件测试工程师,还有质量工程师。我们有一个专门的工程师团队每周测一遍,这一周唯一的工作是解决并关闭Bugs。

测试策略和过程

test

测试的生命周期可以长达多个星期,并且会用第一周去为正式测试做准备。质量工程师做产品规范审查和创建一个测试计划以及估计发布日期。接下来的几周,用一个内部工具(Test Manager)来编写详细的测试用例。 同时在整个测试生命周期也会作为培训课程对产品工程师进行培训。测试用例和培训完成后,测试便开始了。

每天都会分配任务。任务指示板会跟踪进展和监控新提交的补丁,而且每日站立会议会讨论这些问题。这种激进的跟踪状态(status-tracking)可以帮助我们保持更新并不断达到发布计划。

dashboard

集成测试

集成测试和功能测试是并行进行的。测试工程师对api做正常、异常和边界条件测试。集成测试是用 TestNG (一种java测试框架)写的。这些测试每天晚上会测试每一行代码。(集成测试的细节将会在随后的文章的公布.)

性能测试

性能测试在我们的发布环节是一个重要的部分。测试工程师开始对后端做压力测试,执行压力测试并且得到测试指标。比如最大QPS和响应时间。我们使用 Apache JMeter 和其他内部工具来我们的系统可以处理每个正常业务负载。然后,工程师开始对前端性能测试和生产指标如页面加载,JavaScript执行时间,页面大小和页面组件的加载时间。bug提交并修复,我们重新运行测试,直到我们达到我们的性能目标。 testresult

功能测试

在测试团队里,大部分质量工程师和一些开发工程师都会把手动执行测试用例作为功能测试的一部分。功能都会特别分配给一些没有做相同的功能开发或测试的人员。提交bug、积极解决,确保缺陷的生命周期更短。

在 LinkedIn 我们开发了LiX,一个在线实验平台用来管理所有的测试和实验的生命周期。每个产品的特性都是用Lix来测试,并且其功能测试也是用LiX开启和关闭的。测试团队参与测试跟踪pagekeys,用 Apache Kafka consumer 跟踪代码,在iPad和iPhone设备测试,找出个指标差距。

跨浏览器测试

功能测试完成以后,整个团队将会转移到浏览器测试,测试到的浏览器包括不同版本的IE,Firefox,Safari,Chrome.找到并修复这些浏览器的问题是很重要的,但与web开发团队合作更为重要。

自动化测试

下一步每个测试人员编写脚本进行自动化测试自己分配到的任务,他们使用Ruby和自动化测试工具Selenium 。脚本i18n(国际化)兼容的,并传递给i18n团队开始测试周期。测试用例会被标记为自动化测试并被Test Manager跟踪。

产品经理和海外人员参与Bug验证。我们使用仪表板监控错误活动,跟踪缺陷捕获的数量,每天修复。这有助于我们评估任何重现的bug并确保能够按时发布。

testplan

自动化脚本都准备好后,每天对所有支持的浏览器做回归测试,然后通过Test Manager重新打包,再捕获出现的Bugs.不同的团队组织反馈已经修复的bug,然后自动触发bug验证。

jobs

L10N测试

自动化测试完成后,测试脚本传递到L10N团队来处理不同的语言(即本地化)。团队添加代码然后每种语言都会截图,然后翻译,以确保所使用的UI元素上下文意义都正确。任何bug刚提出就立即被bug修复人员解决掉。只有在L10N团队处理完界面上的语言后,我们才推出不同语言的产品。

发布

当代码被推送到生产环境。测试团队运行功能检查,以确保功能没有异常。我们正在慢慢的完成LiX所有的功能,我们在不断监控生产环境的任何异常和日志。

在 LinkedIn,我们和对我们产品的高质量而努力。测试团队与开发工程师一起工作,他们作为看守人在保证版本质量。

原文地址