django - Selenium 与老式的基于 POST/GET 的测试

标签 django testing architecture selenium

我们有相当大的代码库,页面/表单的测试覆盖率相对较高,全部通过普通 POST/GET。

现在,我们发现自己越来越多地进入“ajax”空间,并且不太可能使用 GET/POST 完整场景(例如用户注册或项目创建)进行测试,因为它们涉及大量 JavaScript/Ajax 调用。

虽然像这样的事情最有可能使用 Selenium 进行测试,但我想知道我们是否应该全面采用 Selenium 测试,而完全保留老式的 POST/GET 测试?

采用 Selenium 的优势似乎太好了 - 能够运行几乎相同的 GET/POST 测试,但跨浏览器范围。

或者我在追求酷炫和时尚的东西并放弃旧的经过验证的 POST/GET 测试时是否遗漏了什么?

最佳答案

这两种方法各有优缺点,所以我的建议是两者都用。

Selenium 会启动一个实际的浏览器并模拟用户与您的 Web 应用程序交互,如果您正在测试 Ajax 功能,这会非常有用。它可以验证元素是否可见并像用户一样与它们交互。另一个 killer 级功能是能够通过 Selenium 截取屏幕截图,这在调查故障时非常有用。

不幸的是,启动浏览器并导航到应用程序中的特定页面/状态可能会很慢,如果您想使用 Selenium 测试并发用户(负载测试),则需要大量硬件。

如果您只是想测试您的服务器是否对某些操作响应 HTTP 200,或者对您的应用程序进行负载测试,或者响应包含某些值,那么基本的 POST/GET 会更合适。

如果您决定使用纯 Selenium 方法进行测试,我建议您考虑使用 Selenium Grid 或基于云的服务,因为通过 Selenium 运行大量测试可能非常耗时。

关于django - Selenium 与老式的基于 POST/GET 的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2894608/

相关文章:

django - 为什么我得到一个对象不是可迭代的错误?

python - 如何在 django 中设置 "context"类型对象

java - 使用 if 和 else 语句之外的字符串来设置字符串值

ruby-on-rails - 测试 RSpec 中的默认范围

selenium - 区分测试用例类型

c# - 接口(interface)和抽象类的描述性命名约定

linux - 终端:发送禁止操作转义序列或控制字符

architecture - 软件的体系结构和基础架构之间有什么区别?

python - 从序列化程序创建一个实例而不将其持久化到数据库

python - 我正在开发类似于 fb 聊天的应用程序。哪个框架 - Play 还是 Django?