在团队合作中,您会多久遇到一次测试自动化部分任务落入待办事项并永久保留在手动测试中的情况? 我们经常遇到这样的问题,原因总是不同的:
- 没有时间/没有足够的时间,然后忘记了;
- 没有足够的经验;
- 自动化任务非常庞大,需要第三方集成。
受来自
Avito同事的想法启发,
我和
Yaromudr于5月中旬举行了首届自动化日,该活动的目的是使由于上述原因而我们没有这样做的自动化测试。
在此会议上,我们召集了所有感兴趣的质量检查工程师,并提前准备了:
- 积压的任务;
- 行为准则;
- 在技术栈上达成共识;
- 准备好的工具;
- 下令进行必要的访问。
为了实现自动化,选择了API集成测试层。 待办事项中的每个任务都包含:
- 指向端点的链接,以及json格式的其余请求的输入和输出参数;
- 测试的实质,我们如何以及为什么进行测试。
在项目开始时,我们选择了以下用于自动化的堆栈,正是在该堆栈上,我们准备了项目模板,该模板将填充自动测试:
可以在
此处找到示例项目模板。
应当指出的是,很长一段时间以来,我们一直在准备一种用于自动生成测试数据的工具,如果没有这个工具,我们就不想创建一个新的框架,因为对于静态测试数据(仅在其下一层)进行集成自动测试已经有糟糕的经验。 我们在会议
MAP定性交流中部分谈论了这个问题。
规则
自动化日参与者的规则尽可能简单。 在开始开发之前,我们演示了预先设计的项目结构,并进行了简短的介绍。 在开发时,参与者必须遵守给定的项目结构。
从10到19,有时会被午餐和晚餐分散注意力,参与者使用Java + JUnit5编写测试。 使用Unirest库将Java中测试逻辑的实现组织为API调用。
在我们舒适的游戏室中,十二位质量保证工程师和两名自动化日活动的组织者齐聚一堂。
值得一说的是,质量保证工程师的水平是不同的,有人知道整个堆栈,有人从未在他们的项目中使用过Spring,有人在他们的项目中只使用过Rest-assured,从未见过Unirest,有些人没有自动化API测试并用手进行测试。
结果
经过8个工作小时的密集开发,我们得到了:
- + 12个拉取请求;
- 积压的12项关闭任务;
- + 14个集成自动测试;
- 每次启动> 99%的成功通过自动测试;
- 12位质量保证工程师在项目中有良好的定位。
一个月后
大约一个月后,当我们采用测试指标时,我们得到了非常有趣的指标:
- + 30个拉取请求;
- 积压的30项关闭任务;
- + 48个集成自动测试;
- 用Retrofit取代Unirest;
- 每次启动成功通过自动测试的> 97%。
我要特别指出的是,此类事件对质量保证团队内部的沟通产生了积极影响,当人们面对实际的产品任务并且附近有人可以提供帮助和教导时,这总是会产生积极的影响。 一个简单的示例,参与者
ilya_tad之一建议使用Retrofit代替Unirest,由于许多原因,它实际上对我们来说是一种更方便的工具。 最近,同一位参与者举行了第二个自动化日,每个人都在上面写了测试,但是已经在使用Retrofit。 顺便说一句,在第二个自动化日,我们将Unirest完全替换为Retrofit,对我们而言,改进很小。 可以在
此处找到经过修订的项目的大致模板。
评论
所有自动化日的参与者都收到了新鲜印刷的超级英雄T恤。 是的,当然,我们在第一个自动化日之后收集了参与者的反馈。 问题“在这个自动化日中,什么是最有价值和最有用的?”的答案:
- 让所有参与者参与测试金字塔中另一层自测的覆盖范围(卸载最顶层的自测端到端2用户界面);
- 专注于任务而不被其他事物分散注意力的能力,以及宝贵的指导经验;
- 在明确规定的时间段内就特定任务进行集体工作,重点解决特定范围的特定任务和问题;
- 本地框架的一般概念已经出现。
我们还从参与者那里收集了愿望,我们不会列出所有内容,但是最受欢迎的是定期举办自动化日。
结论
显然,我们将尝试定期进行此类活动。 我们将做不同的主题,尝试新工具。
“自动化日”使您可以对人们进行实际的产品任务教育,使人们开始分享经验,采取主动行动并更好地相互交流。 通过适当的准备和组织,此事件使您可以相对快速地形成整个自动测试层,并为进一步开发该层做好准备。

我们计划将第三届自动化日专门用于使用EarlGrey工具编写针对iOS的组件测试。