腾讯亿级用户规模自研业务的上云实践解读,立即报名 了解详情
写点什么

WebTest 比拼 Selenium:模拟和真实浏览器上的测试

  • 2007-11-05
  • 本文字数:1740 字

    阅读完需:约 6 分钟

Web 应用软件的功能测试工具有很多种,但它们最根本的差异在于:某些工具可以驱动一个或多个真正的浏览器以便得到完全真实的环境,比如 Selenium,而另一些工具只是模拟 Web 浏览器的操作,比如 Canoo WebTest。 Marc Guillemot 这两种工具进行了对比,根据他的观点,WebTest 以13:5 的比分获胜。

Marc 就以下方面内容对这两种工具进行了对比和评分:

Canoo WebTest
Selenium
Tied
Reports Browser Fidelity Testing Ajax Speed Beginner Friendly
Integration into Development Process Support for Badly Formatted HTML Code
Scalability Multi-Language Support
Capture JS Errors

Documentation

Predictable Behaviour

XPath Support

Extensibility

Data-Driven Tests

Internationalization Support

Support for Non-HTML Content

Marc 认为,这些测试不够快,但“WetTest 的工作不多,所有测试都运行在 JVM 上”。他也提到 Selenium 无法捕获 Javascript 错误导致的测试失败:

只要你的单元测试通过了,你就不在意编辑错误了吗?肯定不是!但事实上,Selenium 就是这样的,因为它不能检测到你的应用程序中的 javascript 错误(除非这些测试直接导致测试失败)。

另外,他也提到 Ajax 测试(一般来说,大家都认为这是浏览器模拟器的弱点)是一种纽带:

与一般的想法相反,你并不需要在浏览器中运行你的 JavaScript 测试来测试 AJAX 功能。HtmlUnit 和 WebTest 可以完成这样的工作,甚至可以称为完全胜任这样的工作,因为它允许更好地测试页内请求,使不可预知的浏览器行为成为可预知的(参见我前一个帖子)。

另一方面,他相信 Selenium 可以支持多种语言,“Selenium RC 可以与不同的开发语言 (Java、Ruby、PHP 等等) 结合,而 WebTest 只能与 Ant 结合使用”,还支持不规范的 Html 以及真实的浏览器:

HtmlUnit 对 JavaScript 支持已经大幅改善,但还不能(且永远不可能)与真正的浏览器行为一模一样。尽管 Selenium 也更改了一些 Web 应用的 JavaScript 正常执行,但它使用真正的浏览器工作,所以已经和浏览器的标准行为相当接近啦。

作为 Canoo WebTest 和 HtmlUnit 的首席开发人员,Marc 明显倾向于他所接纳的这种形式的工具,在与他讨论之前,请一定要先读一下他的分析报告:

显然,作为 WebTest(和 HtmlUnit)的负责人,我的确是有倾向性的。但是,我也有多年开发和维护庞大的功能测试套件的经验。客观一点儿说,我可能在其它方向上过分担心了,应该相信 Selenium。当然,我将不断地修正我在 Selenium 理解上的错误。但请您在开始批评我之前,一定要读一下这篇文章。

已经总结了这些反馈。Vitaly 认为, WebTest 和 Selenium 的关系可以看作是苹果和桔子的关系。“Selenium,WebTest(HttpUnit),DBUnit,JUnit 和其它测试工具是互补的。有些事用这个工具可能完成,用另外一个工具却不成。”还有些人讨论了录制回放和脚本测试各自的优点,以及测试可维护性。Murali 推荐使用 PragmaticQA Element

Christian反驳了 WebTest 对 Ajax 支持的说法,并提及在他的应用中,“由于 HtmlUnit 不能解析 Dojo 的 import 子句,即使最简单的页面也会抛出异常。”

而 Simon 认为,对浏览器保真度最重要的一点就是:

象 WebTest 这样的工具有点太理论化了,它想证明代码完全正常工作,但是只能在理想环境下,与生产环境相去甚远。真正的用户使用的是 IE 或 Firefox,而 Selenium 可以让我们在“真实的”条件下做测试,例如有内存泄漏问题的脆弱的浏览器,和不符合标准的代码。

没有客户使用 WebTest 使用的引擎,这意味着尽管我们知道它在某种环境上运行得很好,但并不意味着真的没有麻烦。相反,我们的 Selenium 测试运行在 Firefox 之上,也运行在 IE 之上,所以它会捕获跨平台使用中发生的很多问题。

最后,Kent Tong设想了结合两种方法的途径

是否可以开发这样一种中间层,即大家只写一套测试,即可以运行在 WebTest 上,又可以运行在 Selenium 之上?这样,大家就可以得到 WebTest 和 Selenium 各自带来的好处了。

你用过这些工具吗,或者其它功能测试工具?这会吸引你参与讨论下一代功能测试工具吗?更多的信息,请阅读 Canoo WebTest Selenium Testing 下一代功能测试工具

英文原文链接: WebTest vs. Selenium: Real and Simulated Browser Testing

2007-11-05 01:243294
用户头像

发布了 100 篇内容, 共 19.4 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

Golang 问题排查指南

得物技术

Go golang 后端 root

通过 Serverless Devs 部署静态网站

刘宇

云计算 Serverless cicd Serverless Devs

Serverless架构下如何上传文件与持久化文件

刘宇

在线JSON转typescript工具

入门小站

工具

跟小海一起看下雪——用HTML、CSS和JS实现简单的下雪特效

海拥(haiyong.site)

大前端 js 28天写作 签约计划第二季 12月日更

模型升级在 Serverless 架构下的实现与应用

刘宇

人工智能 Serverless PyTorch Serverless Devs

Spring Boot 2 WebFlux 系列教程分享| 内容合集

SaaS创业之路

内容合集 签约计划第二季

6 款开源 Web 性能优化辅助工具推荐

编程江湖

前端

基于Gitee Go的函数代码更新与版本发布

刘宇

Serverless cicd gitee Serverless Devs

Serverless架构下如何对应用进行调试

刘宇

Serverless 代码调试

Serverless Devs Model 与模型简介

刘宇

大数据开发之常用命令大全

@零度

大数据

Prometheus Exporter (二十七)Memcached Exporter

耳东@Erdong

memcached Prometheus 28天写作 exporter 12月日更

Custom Container的CI/CD最佳实践案例

刘宇

Serverless cicd 容器镜像 Serverless Devs

基于Github Action的SAE自动化流程案例

刘宇

Serverless SAE Serverless Devs

初章

阿丞

Serverless Registry Model

刘宇

Serverless User Model

刘宇

Serverless 研发效能的变革:Serverless Devs | 引航计划|云原生

刘宇

Serverless 云原生 内容合集 签约计划第二季 Serverless Devs

Serverless架构下传统框架迁移方案与策略

刘宇

Serverless Serverless Devs 传统框架

如何没话找话,聊得不那么尬?(15/28)

赵新龙

28天写作

Vim 编辑器|批量注释与批量取消注释

AlwaysBeta

vim Linux

低代码助力直播带货走进制造业,冲击工厂传统供应链模式

优秀

低代码 直播带货

RocketMQ和Kafka的差异对比

编程江湖

大数据

百分点大数据技术团队:Elasticsearch多数据中心大规模集群的实战经验

百分点科技技术团队

Serverless Devs 与 CI/CD 平台/工具集成

刘宇

Serverless cicd Serverless Devs

Serverless 架构开发/优化案例

刘宇

虎符重磅启动迎新活动:新用户注册即送VIP2和200USDT 合约体验金

区块链前沿News

Hoo虎符 虎符交易所 虎符送VIP

WebTest比拼Selenium:模拟和真实浏览器上的测试_敏捷_Geoffrey Wiseman_InfoQ精选文章