从测试对象的粒度来说,测试分为三类:单元测试,集成测试和E2E(end to end)测试。对于E2E测试,BDD (Behavior Driven Design)[1]风格的 Codeceptjs是一个不错的选择。它可以用不同的类库执行case。同时,作为Domain Specific Language的杰出代表,codeceptjs 使得开发者可以用自然语言(当然,是英语)编写case。而且,为ex Protractor设计的简化的API同样支持Angular工程 (说的好像我会开发Angular工程一样)。
6-DSL.pngCodeceptjs使用javascript而不是java或python,也就是说即使开发人员不懂java或python,也可以写出结构良好、可读性强和功能强大的E2E测试case。(其实,很难想象开发人员既不懂java也不懂python)。而反过来,对于不懂基于event-loop[2] 模型的javascript的人(比方说我)来说,codeceptjs屏蔽了复杂的异步调用和回调函数,更不用考虑promise(说说而已,岂能当真,我会另写一篇描述那个痛苦的过程),可以完全从用户的角度出发开发case。
6-1-CodeceptJS_DSL.png
Codeceptjs最为强大也是最为诱人的地方在于它支持多种“backend”测试框架,包括webdriverIO,Puppeteer和Protractor。
6-2-architecture.png
8-different-backends.png
Codeceptjs API支持多种不同的backends 框架,用户只需要在配置文件中制定需要的backend。有一点值得注意,Puppeteer是个另类,它并不是用WebDriver protocol (有朋友给出理由吗?),而是用Chrome Devtools protocol ,而且需要Chrome和OEL7。所幸,如果你正在用WebDriverIO,你可以很容易的把它转成Puppeteer,因为Codeceptjs API都是一样的。
9-puppeteer.png
References:
[1] https://codecept.io/basics
[2] https://www.jianshu.com/p/715ad2333241
网友评论