具体来讲,他们的产品是某网站的聊天工具。聊天工具备PC端,PC端内部有嵌入一些网页。
问我怎样作自动化测试。
我曾经被这个问题难倒过。
由于我那时只会用selenium,面试官先问我selenium会到啥程度,再问我遇到非通用的浏览器,selenium不支持的话怎么办。
而后问我怎么用selenium实现某个自定义浏览器的driver。
最后问我,怎样自动化测试他们这个内嵌有网页的桌面程序。
如今回想了一下。
忽然有了答案。首先实现一个webdriver是没有必要的。selenium的做者使用webdriver这种奇怪的代码组织方式是为了兼容性。在只须要测单个自定义浏览器的状况下,根本不须要对这个浏览器去开发一个webdriver。若是要测的是浏览器自己,须要开发人员开放一些接口,而要测的若是是浏览器里显示的网页,根本不须要用这个浏览器来自动化测试。
下面是个人答案,仅供参考:
首先,把待测的软件划分为两个部分,一个是网页,一个是客户端。
待测的用户场景分为3类。只和网页有关的、只和客户端有关的、客户端和网页交互的。
当测试只和网页有关的场景时,能够用普通浏览器打开该网页,进行自动化测试。
当测试只和客户端有关的场景时,须要客户端提供对应的接口,在测试脚本里调用对应的接口。接口的例子:好比点击某图标之类的。也就是转化成接口测试来编写和执行。
当要测二者交互的场景时,明确咱们到底要测网页,仍是测客户端,仍是一块儿测,
只测网页时,采用mock的客户端+真实的网页----技术方案用通常的selenium之类的就好了。
只测客户端时,采用mock的网页+真实的客户端-----技术方案同接口测试。
两个一块儿测时,就用真实的网页+真实的客户端----技术方案就是接口测试和selenium混合。
综上,再把问题扩展和通常化,
在须要单独测一些模块的时候引入合理的mock代替外部系统,
在须要集成不一样模块时,采用统一的编程语言和不一样的库处理不一样的逻辑(好比桌面端和web端的不一样逻辑)。
如此,无论是桌面端、web端、移动端,无论什么端的自动化测试均可以混合起来作。也均可以孤立开来使用mock单独测。