敏捷交付中的自动化测试 | IDCF
内容来源:ThoughtWorks洞见 作者:郭泰瑜
在提及自动化测试的时候,很多人会把工具的使用等同于自动化测试。自动化测试应该是一个策略性的系统化工程,不只有自动化工具。自动化测试要发挥其频繁快速的质量反馈作用,还需要团队从文化和技术上去建设和学习。
持续集成工具 自动化测试 , 自动化的产品质量反馈机制
自动化测试不只自动化工具
In software testing, test automation is the use of software separate from the software being tested to control the execution of tests and the comparison of actual outcomes with predicted outcomes.
自动化测试本身也是软件 自动化测试基于预期结果进行断言
Continuous testing is the process of executing automated tests as part of the software delivery pipeline to obtain immediate feedback on the business risks associated with a software release candidate.
automated tests 而不是automated test,一个产品只有一种,或者某一层级上的自动化测试是无法达到整体质量评估的,持续测试需要不同类型的自动化测试在交付的不同阶段为产品的不同层级提供反馈。 delivery pipeline,immediate feedback,自动化测试一定是和交付流水线交合集成的,至少是同频运行的,不是孤立的,只有这样才能就团队每一次的新变更对产品质量的影响做出快速而及时的反馈。 business risks,持续测试广义上来说包含交付中的所有质量反馈行为,既要测试左移,质量内建,也要测试右移,实现产品质量主动监控,不然无法识别业务风险。
测试工具的选择
支持不同的helper: WebDriver, Puppeteer, Protractor, Nightmare, Testcafe, 我在项目上选用的是Puppeteer。 支持web也支持mobile,当时项目上的第一个产品是有手机端版本的, 这也是选择这个工具的一个考虑。 封装良好的页面元素操作方法,拿来即用,对于不擅长编码的我来说,非常友好。 因为项目产品是和矿场上爆破紧密相关的,很多产品都有矿场地图展示和设备可视化,CodeceptJS 提供了现成的codeceptjs-resemblehelper以实现视觉上的回归测试。 最近发现它还支持API测试,包括REST和GraphQL的, 但是这部分特性尚未实践。
选择合适的时候做自动化
自动化测试和产品代码一样重要
为每套自动化测试编写清晰的README, 保证团队里除你以外其他的小伙伴,也都清楚明白如何运行自动化测试。 除了实用的README引导团队如何运行测试,可视化良好的测试报告也非常必要。如下是我们项目上的测试报告:
让UI测试更稳定,请求开发把页面的关键组件元素加上ID 属性,用唯一的ID去定位元素就稳定多了。 建议每个Dev提交代码前,在本地自行运行测试脚本,保证自动化测试的及时性和正确性,并对新变更提供及时的质量反馈。
持续测试还需要团队具备DevOps相关技术
在容器里安装puppeteer之前,需要手动下载Chromium包以及相关的依赖。 在docker里面启动puppeteer,要么配置一个puppeteer的user,要么选择去掉默认的沙盒环境。 当时还遇到因为docker默认的64MB内存空间不够,Chrome渲染页面崩溃。
最后用个比喻结束这篇文章
评论