当我们在做UI自动化时,需要确定用什么自动化框架和工具,我们会考虑从三个方面入手:控制方案、执行方案、结果上报方案,通俗点讲就是:模拟人工操作的工具,管理和执行测试用例的工具,用来展示结果报告的工具,同时还应该考虑这三部分所普适的编程语言,从这些方面入手去找到适合自己项目需求的框架或工具,然后将它们结合起来使用到项目中。在这之前,我们有必要了解下当前流行的一些框架和工具的类型有哪些,各有什么优势和劣势。
1 测试框架类型
浏览器控制框架
主要是用来控制浏览器或者app上的元素,常见的框架有:
Web: Selenium/TestCafe/Cypress/Playwright/Puppeteer/Protractor/Nightmare
Mobile app: Appium/Robot Framework
管理测试用例设计框架
主要是用来组织测试用例设计以及测试用例的结构,常见的框架有:
All: Cucumber
JS: Mocha/Jest/Jamine/TestCafe/Cypress/CodeceptJS
Ruby: Rspec
Java: TestNG/Junit
Python: pytest
管理测试用例执行框架
主要是用来组织测试用例的执行,常见的框架有:
All: Cucumber
JS: Mocha/Jest/Jamine/TestCafe/Cypress/CodeceptJS
Ruby: Rspec
Java: TestNG/Junit
Python: pytest, unittest
管理测试用例报告框架
主要是用来组织测试结果和展示,常见的框架有:
All: Cucumber/Allure
JS: Mocha/Jest/Jamine/TestCafe/Cypress/CodeceptJS
Ruby: Rspec
Java: TestNG/Junit
Python: pytest, unittest
断言框架
主要是用来测试结果的断言,常见的框架有:
All: Selenium
JS: Chai/Jest/Jamine/TestCafe/Cypress/CodeceptJS
覆盖率框架
主要是用来收集代码覆盖率,常见的框架有:
JS: Istanbul/Jest/blanket
Ruby: Rcov
Java: jacoo / cobertura
可视化测试框架
主要是用来做可视化测试,常见的框架有:
JS: Cypress/CodeceptJS/Applitools
支持Mock/Spy/Stub
主要是用来对请求的东西做mock,常见的框架有:
Sinon/Cypress/CodeceptJS
一体化框架
不需要和其他框架集成,完成整个测试活动, 常见的框架有:
Cypress/CodeceptJS/TestCafe
2 各个测试框架的优劣势对比




参考:https://www.yuque.com/susieyao1314/softwaretesting/ixft8g