在LinkedIn,我们相信设计会给我们的会员提供很有价值的产品,快速便捷使用这些产品,完成所有工作而且在质量上不会打折扣。在这篇文章中,我将描述使得这一切成为可能的测试方法。
团队
在LinkedIn,一个典型的测试团队包括产品经理、开发工程师, 测试工程师和质量工程师。我们有一个专门的工程师团队,一周滚动制,这一周唯一的工作是解决并关闭bugs。
测试策略和过程
测试生命周期可以运行多个星期,第一周是为正式开赛做准备。质量工程师做产品规范审查和创建一个测试计划以及发布日期的评估。接下来的几周, 在一个内部工具编写详细的测试用例,这称为测试经理。培训环节同时举行,告诉开发工程师产品测试生命周期。测试用例和培训完成后,测试就正式开始了。
任务是每天分配的。任务指示板跟踪进展和监控,而每天都会开会来讨论问题。这种激励的status-tracking方法帮助我们保持当前和不断向前的释放计划。
集成测试
集成测试和功能测试并列地运行。 SETs(软件测试工程师)在测试集上基于api执行正面、负面和边界条件测试。集成测试都写在TestNG - Java测试框架上。这些测试每天晚上运行,按每次代码check-in。(集成测试在后续的文章细说)。
性能测试
性能测试是我们发布周期的一个重要组成部分。SETs以后端负载测试为开端——我们运行负载测试,性能指标,比如每秒高峰值和响应时间。然后我们使用Apache JMeter和其他内部工具来确保我们的系统可以处理每个业务的标准生产负荷。在这一点上,工程师从前端性能测试和生产指标开始,如页面加载JavaScript执行时间,页面大小,页面组件加载时间等。bug提交到处理完成后,我们会重新执行测试,直到达到我们的性能目标。
功能测试
测试团队,主要是质量工程师或和部分开发工程师,从事手动测试用例,是执行功能测试的一部分。功能是分配给测试人员的,特别要小心,不要出现有相同的工程师开发和测试功能(即不要将相同模块开发和测试分给同一个人)。提交bug、积极解决,确保bug的生命周期更短。
在LinkedIn,我们有开发,在线实验平台和管理生命周期的测试和实验。每个产品的特性后面是有执行测试和功能测试的开启和关闭的。测试团队参与测试pagekeys的跟踪,跟踪Kafka consumer上的代码,在iPad和iPhone设备上测试,发现兼容性的差异。
跨浏览器测试
功能测试完成后,团队转换到浏览器测试,这发生在不同版本的IE,Firefox,Safari和Chrome。找到并修复这些浏览器的问题是很重要的,特别是与web开发团队合作尤为重要。
自动化
每个测试人员为下一个分配新特性编写脚本时,自动化其实就开始了,使用Ruby和Selenium作为自动化工具。脚本i18n(国际化)兼容,并传递给i18n团队开始测试周期。测试用例需要标记为自动化测试的,并且跟踪管理。
产品经理和海外资源参与到bug验证。我们使用仪表板监控错误活动,跟踪缺陷捕获的数量,这是每天固定的工作。这有助于我们重新评估任何一个bug,并在接近发布日期没有阻滞。
L10N测试
自动化完成后,测试脚本传递到L10N团队来执行不同的语言(本地化)的测试。每种语言环节下添加代码,然后采取截图的方式,再翻译,以确保所使用的UI元素上下文意义。任何bug提出后,开发人员需要立即解决bug所描述的问题。只有在L10N团队在UI有签字确认,我们才能推出不同的语言的产品。
推送
当代码被推送到生产环境下,测试团队还会运行可用性测试(或理解为冒烟测试),才可以确保功能都能正常运行。随着正在慢慢增加到100%,我们还会不断监控异常。
在LinkedIn,我们为最高质量的产品而奋斗。测试团队,与我们的开发工程师一起工作,扮演着保证产品质量看门人的角色。
【英文原文:http://engineering.linkedin.com/testing/quality-control-linkedins-testing-methodology】
{测试窝原创译文,译者:紫晴}