为什么要做自动化测试
工作中我们要开发基础 SDK 的服务,在服务众多业务和客户的同时,保障 SDK 的质量和稳定性是第一要务。 有统计表明,大量程序的 Bug 是在开发阶段出现的,在开发 -> 测试 -> 上线阶段,无疑是越早发现成本越低。
前端自动化测试有许多优点。其中最重要的是:
- 减少时间和成本效益:自动化测试可以在短时间内执行大量测试,减少手动测试的时间和成本。
- 可靠性:自动化测试可以消除人为错误,新增任何代码都可以保持运行一致性。
- 更快的反馈循环:自动化测试可以更快地检测到问题,并且更快修复。
前端自动化测试的类型
前端自动化测试可以分为三种类型:
- 单元测试:单元测试是测试应用程序的最小单元,例如函数或方法。单元测试通常是最快速,最简单的测试类型,并且可以在不依赖其他部分的情况下进行测试。
- 集成测试:集成测试是测试应用程序各个部分之间的交互。集成测试可以检查多个单元是否按预期组合在一起。
- 端到端测试:端到端测试是测试整个应用程序的流程,从用户输入到输出,检查应用程序是否按预期工作。端到端测试通常是最慢的测试类型,因为它们涉及到整个应用程序的运行。
配置 Headless browser
自动化测试的配置方法基本都可以在官方文档找到,根据文档配置即可。
对于特殊的 WebRTC 场景测试,需要针对 WebRTC 场景来做一些配置,一个是模拟本地音视频流,一个是需要在使用 ChromeDriver 的时候绕过媒体限制。下面几个配置项可以按需使用:
'--allow-file-access-from-files', // allows getUserMedia() to be called from file:// URLs.
'--use-fake-ui-for-media-stream', // avoids the need to grant camera/microphone permissions.
// '--use-fake-device-for-media-stream', //feeds a test pattern to getUserMedia() instead of live camera input.
'--use-file-for-fake-video-capture=path/to/file.y4m', feeds a Y4M test file to getUserMedia() instead of live camera input.
'--disable-gesture-requirement-for-media-playback', removes the need to tap a <video> element to start it playing on Android.