web应用程序中的自动化测试
Automated testing in web applications
我们正在使用c#和JavaScript开发一个非常大的web应用程序。我们代码中的大多数调用都是在前端用JavaScript处理的,唯一真正的后端工作是SQL服务器,它检索相关数据集并将其作为JSON对象返回,然后再次用JavaScript处理。
我们目前正在与我们的测试人员一起手工进行所有测试,他们根据设计规范验证页面功能,以确保软件按预期工作。
我希望能够在应用程序中添加一些自动化测试。我已经研究过单元测试,如果你有很多c#方法,输入和输出很容易跟踪和验证,它的工作效果会好得多。
行业中使用的标准方法是什么,我们可以用它来验证整个应用程序(或至少大部分应用程序)是否正常工作?
我想检查的东西有:
-
我们有一个输入页面,让您创建一个用户。这个输入页面应该更新数据库中的5个表。我正在添加10个不同的页面,这些页面允许我在应用程序中创建用户,我如何验证所有这些页面都正确插入并正常工作?
-
我有一个页面,在那里我可以点击插入一行到数据库的按钮。我如何检查它在所有应该输出的地方都是正确的呢?
我一时想不出所有我需要检查的不同案例,但确实有很多。据我所知,任何视觉错误都只能由手工测试的用户来测试。
我正在寻找一些关于什么是最好的方法以及如何将它们应用到我们的应用程序类型的反馈。
将任何测试(单元、集成、UI等)添加到从未考虑过测试的现有应用程序中总是一个挑战,但这是我希望采取的方法。
首先与测试人员交谈,确定应用程序中耗时最长的前5个区域,并将其作为开始添加测试的基础。
我假设你没有或很少有测试,如果是这种情况,我建议首先添加自动化UI测试,我们使用selenium和specflow。一般来说,这些将是您编写的最后一个测试,因为它们是最脆弱和最慢的(http://martinfowler.com/bliki/TestPyramid.html)。
我建议首先做这些的原因是,当你考虑在你的解决方案中添加单元/集成测试时,你可能需要重构代码,没有单元测试的重构代码可能会导致缺陷,自动化测试将给你一定程度的信心,你没有引入回归作为重构的一部分。
我将它添加单元测试和集成测试在c#服务层,你提到一个创建用户函数更新5表,不是100%了解你的系统架构,您可以测试这个集成测试,调用"CreateUser"如果这个调用返回新创建的用户的id然后您可以调用"GetUser"id验证返回的实体是按预期用户增强跨5表是隐藏的,与考试无关。
除非你的公司有很好的javascript实践,纯使用jquery作为你的UI框架将是一个挑战,以测试(我已经看到了一些混乱的jquery javascript项目的原因)。如果你是认真的想要测试,我会考虑使用javascript框架,有很多让你看看评估。除此之外,还有大量的javascript单元测试框架。
总之,在一个理想的世界里,这将是我对SPA应用程序的测试策略(听起来像你有)。
端到端UI测试
- 这些测试应用程序的整个流程(硒)
- 单元测试——测试小块功能,例如测试a 的JavaScript单元测试工具的下拉列表
服务层(Web API/WCF或类似)
单元测试——测试小块功能
集成测试-跨边界测试,例如验证输入实际上被保存在数据库中。
注意事项
- 如前所述,很难将测试引入现有产品应用程序,您可能需要向更广泛的人推销您的努力团队,但这是非常值得的。一旦你有一个全面的测试套件有很多优势,更快的发布节奏,更少的缺陷,更多的交付新特性的时间,更快的失败等等
祝你好运!
- 使用Jest测试React Native应用程序
- Protractor:在Iframe中测试非角度应用程序
- 使用Node.js在应用程序引擎上进行本地单元测试
- 如何在rails应用程序中测试AJAX加载的内容
- 单页应用程序的javascript集成测试
- 测试Ember.JS应用程序失败,返回ReferenceError:未定义Ember
- 如何设置Selenium以自动化独立的桌面Web应用程序(Node WebKit)
- webrtc 应用程序的自动化测试
- 如何测试 Web 应用程序的客户端,尤其是商业产品的自动化测试
- 自动化测试安卓应用程序
- 支持自动化测试的主干JS应用程序的BDD
- 用于测试基于Java的web应用程序自动化的托管代码
- 用于在纯客户端测试应用程序(javascript/jquery)中维护状态和管理i/o的体系结构
- 在Windows Phone 8.1模拟器中测试应用程序设置
- web应用程序中的自动化测试
- 测试应用程序:javascript中的按钮不起作用
- 防止用户在测试应用程序中重新加载/刷新页面的方法
- 全新的角度.制作一个非常简单的测试应用程序
- 如何在移动端测试应用程序
- 如何为HTML和JS编写实时测试应用程序并捕获页面加载事件