我们一直在使用protractor
进行端到端测试。
现在我们正在尝试涵盖几个极端情况,其中涉及修改API端点请求的响应 - 为此我们使用protractor-http-mock
提供了一种易于使用的方法来替换HTTP响应定义了模拟。
但是,如果我们想测试突然连接丢失发生时的情况,该怎么办?在这种情况下我们有什么选择?
换句话说,我们希望实现一种情况,即对特定端点的请求会产生网络连接错误并查看我们的应用程序将如何反应。
我对任何建议持开放态度,我目前正在考虑以下策略:
protractor-http-mock
$http
angularjs service grunt-connect-proxy
看起来相当成熟,但我不确定是否有可能动态地将代理的行为从规范更改为规范)selenium
无法控制的,Network throttling with chrome and selenium)(浏览器插件/扩展名?)答案 0 :(得分:3)
似乎 Comcast 工具可以提供您需要的大部分功能:
Comcast是一种旨在模拟常见网络问题的工具 延迟,带宽限制以及丢弃/重新排序/损坏 分组。
它通过以便携式(ish)方式包装一些系统工具来工作。上 BSD派生的系统,如OSX,我们使用像ipfw和pfctl这样的工具 注入失败。在Linux上,我们使用iptables和tc。康卡斯特只是一个 围绕这些控件的薄包装。
https://github.com/tylertreat/Comcast
Linux上的示例:
comcast --device=eth0 --latency=250 --target-bw=1000 --default-bw=1000000 --packet-loss=10% --target-addr=8.8.8.8,10.0.0.0/24 --target-proto=tcp,udp,icmp --target-port=80,22,1000:2000
您可以随时更改设置,并根据需要将丢包率降至100%。
答案 1 :(得分:2)
我希望这可以帮助您定义实现模拟的最佳方法。
该项目解释了一般的想法,readme.md
存在语义和翻译问题,我很快就会耐心等待。请忘记我的英语/拼写错误让我知道任何更正
我正在研究如何实施Demo project + Protractor + CucumberJS的sugar-step。现在它包含一个非常简单的Angular APP和3个E2E测试。
该演示正在运行,但尚未完成,仍然需要一些我认为对E2E测试有用的功能。
如何为每个场景设置不同的模拟响应?
angular.module('mock-Service-response-x',fn...)
,并在功能或方案运行后将其删除可以通过这种方式测试什么?
为什么要在AngularJS中实现UI模拟,而不是在代理中实现?
UI控件,(当然,根据您的特定需求)使用Angular,您可以执行以下操作:禁用ngAnimations
或{{1完全动画,模拟您的本地浏览器jQuery
,以模拟自动依赖日期的行为。
费用,(取决于您的项目)在每个开发环境中为所有Web服务实施本地代理的成本可能很高(在硬件中)或努力或数小时的实施)。
依赖,如果您的开发团队并行工作,如果UI团队正在使用依赖的功能,那么它更可能依赖于彼此在X Web服务上,了解实施规范,UI团队可以创建简单的模拟以继续他的工作,使更多可能的井项目按时交付
所有这些论点都取决于你正在研究哪个项目,并不意味着这是最好的解决方案,但我更赞成保持项目层彼此独立,并且能够在一个图层中释放新功能,无论其他图层是否在他自己的新功能中被延迟。
对于任何阅读此内容的人,任何评论,更正或建议都将受到欢迎
答案 2 :(得分:1)
这还取决于如何做到这一点?应该以编程方式吗?
如果是这样,最好的解决方案是代理依赖,最好的工具可以用于所有selenium / webdriver工具是browserMobProxy,
如果你想从外面做,我建议也使用任何外部流量整形器/代理。例如:http://vaurien.readthedocs.org/en/1.8/ 和
vaurien --protocol http --proxy nonexistingproxy.com:8000 --backend website.com:80
为什么不能使用9n0浏览器功能?首先,您需要重新加载页面才能看到它们的运行情况,其次,您不会重新定义量角器中的代理设置。 至于插件,以编程方式与它们进行交互并不那么容易,我认为没有任何好处,而你应该为不同的浏览器附加很多。
答案 3 :(得分:1)