`
zerozone
  • 浏览: 205261 次
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

测试驱动开发是敏捷开发的一个重要实践。AJAX开发很困难,能否以及如何应用TDD帮助我们编写可测试的AJAX程序?

AJAX开发过程应用TDD有很多障碍:
自动测试工具难以支持众多
Ajax框架
不是所有
代码都能实现自动测试

网页主要由三部分组成:结构(
Structure)、表现(Presentation)和行为(Behavior)。分离这三部分为页面测试提供了基础。结构和行为部分基本可以实现自动测试,由于采用CSS实现分离(外观和表现)表现好像没有办法实现。

有人提到用JsUnit作为JavaScript代码的单元测试;用Selenium进行集成/回归测试。但好多Ajax框架已经设计开发出了组件,基于组件的单元测试工具更加有效。


Selenium不支持我们选用的一个商业AJAX/GUI FrameworkSeleniumAjax的支持如何?

欢迎讨论。

分享到:
评论
3 楼 hyysguyang 2007-08-02  
现在yui,jquery,dojo等都用自己的testcase框架,很是郁闷,为什么不统一用一个?比如jsunit就很好,而且很符合TDD的编程模式,有些地方它不能支持的话为什么不去想办法完善它呢?为啥还要自己实现一个?四分五裂的,java的世界就已经这样了.
yui的测试是2.3.0才新加的,它自身之前的版本都没有测试,因此ajax框架从未把yui考虑在内,现在有了测试了,我也要开始关注了。
2 楼 zerozone 2007-05-19  
fsword 写道
这个问题我们也遇到了,使用dojo编写的组件,用selenium测试有困难,这个问题现在还是没有解决。


试试Squish for Web!它对dojo的支持还不错。

测试工具的重点是执行断言。本来可以Squish录制的脚本中设置并执行断言。我简单测试过dojo框架Tree组件,录制测试脚本成功(点击不同的节点,展开/收缩节点)。不过我执行断言失败(对dojo了解太少)。

附上一段测试脚本(含断言方法,具体方法见Squish文档)。
function main()
{
    // load web application
    loadUrl(":http://www.smartclient.com/#_Welcome");
    
    // wait for the tree at the left to be available
    waitForObject(":isc_Rtable_TABLE");
    
    // Open "Editing" leaf in the tree
    clickTreeHandle(":isc_Rtable_TABLE", "Editing");
    snooze(1);
    
    // Click "Edit by row" item in the tree
    clickItem(":isc_Rtable_TABLE", "Edit by row");
    
    // wait for the editable table to be available at the right
    waitForObject(":isc_2Wtable_TABLE");
    
    // get reference to the table object
    table =  findObject(":isc_2Wtable_TABLE");
    
    // verify that a "Germany" item exists
    test.verify(! isNull(table.findItem("Germany")), "Found Germany in table");
    
    // verify that no "Deutschland" item exists yet
    test.verify(isNull(table.findItem("Deutschland")), "Not found Deutschland in table");
    
    // click on the "Germany" item to be able to edit it
    clickItem(":isc_2Wtable_TABLE", "Germany");
    
    // rename it to "Deutschland"
    setText(":isc_3B_text", "Deutschland");
    
    // click somewhere else to confirm
    clickItem(":isc_2Wtable_TABLE", "Japan");
    
    snooze(2);
    
    // retrieve reference to table again
    table =  findObject(":isc_2Wtable_TABLE");
    
    // verify that no "Germany" item exists anymore
    test.verify(isNull(table.findItem("Germany")), "Not found Germany in table");
    
    // verify that now a "Deutschland" item exists
    test.verify(! isNull(table.findItem("Deutschland")), "Found Deutschland in table");
    
    // close browser
    closeWindow(":[Window]");
}


顺便提一句,Squish是商业软件。你可以使用Evaluation版本。
1 楼 fsword 2007-05-18  
这个问题我们也遇到了,使用dojo编写的组件,用selenium测试有困难,这个问题现在还是没有解决。

相关推荐

    AJAX in Action 源代码.zip

    TDD(测试驱动开发)与AJAX:** 在编写AJAX应用时,测试也是重要环节。可以使用模拟XMLHttpRequest的库(如Sinon.js)进行单元测试,确保代码的正确性。 **10. 优化技巧:** 包括减少HTTP请求数量,压缩资源,使用...

    Test-Driven Development with Python [2017]

    Test-Driven Development with Python: Obey the Testing Goat: Using Django, Selenium, and JavaScript by Harry J. W. Percival ...Use TDD to build a REST API with a front-end Ajax interface

    ASP.NET MVC in Action

    除了ASP.NET MVC框架本身,作者还介绍了Onion Architecture、领域驱动设计(DDD)、测试驱动开发(TDD)、控制反转(IoC)以及其它一些真实项目中经常用到的类库(和技术)。 本书章节如下: ASP.NET MVC框架入门 ...

    Test Driven Development with Python 2nd edition 2017 pdf

    By taking you through the development of a real web application from beginning to end, the second edition of this hands-on guide demonstrates...Use TDD to build a REST API with a front-end Ajax interface

    Manning.ASP.NET.MVC2.in.Action 和Apress.Pro.ASP.NET.MVC.2.Framework.2nd.Edition.Jun.2010

    此外,书中还讨论了测试驱动开发(TDD)、AJAX集成以及与数据库的交互等主题,帮助开发者建立坚实的MVC开发基础。 另一方面,《Pro ASP.NET MVC 2 Framework 2nd Edition》更深入地探讨了ASP.NET MVC 2框架的内部...

    Manning.ASP.NET.MVC.2.in.Action.Jun.2010

    《ASP.NET MVC 2 in Action》是一本专为开发者深入理解和掌握ASP.NET MVC 2框架技术而编写的书籍。该书由Manning出版社于2010年6月出版,旨在帮助读者通过实践案例,全面了解和应用ASP.NET MVC 2进行Web应用程序开发...

    [ASP.NET.MVC系列].ASP.NET.MVC.in.Action

    8. **单元测试和TDD**:介绍如何对ASP.NET MVC应用进行单元测试,以及如何采用测试驱动开发(TDD)来编写高质量代码。 9. **AJAX集成**:讲解如何在ASP.NET MVC中使用jQuery和其他库实现异步交互,增强用户体验。 ...

    Test-Drive ASP.NET MVC

    2.1 TDD Explained 2.2 Test-Driving “Hello World” II Building an Application 3 Getting Organized with MVC 3.1 Time Management with GetOrganized 3.2 Reading Data 3.3 Creating a To-Do 3.4 ...

    Manning.ASP.NET.MVC.2.in.Action.Jun.2010.pdf

    9. **AJAX支持**:介绍如何结合jQuery和其他JavaScript库,利用ASP.NET MVC的Ajax功能创建部分页面更新的应用。 10. **安全性和身份验证**:涵盖了ASP.NET的身份验证和授权机制,以及如何保护MVC应用免受常见安全...

    Apress.Beginning.ASP.NET.4.in.CSharp.2010.Aug.2010.rar

    8. AJAX与jQuery:书中还会探讨如何使用ASP.NET AJAX和jQuery库,提升用户体验,实现异步数据交互和页面局部更新。 9. MVC框架:对于想要学习MVC模式的读者,本书会深入讲解ASP.NET MVC框架的工作原理,包括路由、...

    Manning.ASP.NET.MVC.2.in.Action.Jun.2010.rar

    书中还涵盖了测试驱动开发(TDD)和集成测试在ASP.NET MVC项目中的应用,强调了编写可测试代码的重要性。通过使用Moq、NUnit等工具,读者可以学习如何构建和执行单元测试,确保代码的质量和稳定性。 另外,书中还...

    Manning.ASP.NET.MVC.4.in.Action.May.2012.rar

    《ASP.NET MVC 4 in Action》是一本专为开发者深入理解ASP.NET MVC 4框架而编写的权威指南。这本书由Manning出版社于2012年5月出版,旨在帮助读者掌握这一强大的Web应用程序开发技术。ASP.NET MVC 4是微软推出的基于...

    django-master-class

    - **Handling AJAX Requests:** Django views can process AJAX requests and return JSON responses. This enables partial page updates and more responsive user interfaces. - **Integration with Templates:**...

    ASP.NET MVC英文教程(三本)

    此外,书中还探讨了路由、过滤器、测试驱动开发(TDD)、AJAX集成和部署策略等主题。 2. 《ASP.NET MVC Quickly》: 这本快速入门指南旨在帮助初学者快速掌握ASP.NET MVC的核心概念。它简洁明了地介绍了框架的基本...

    Junit实战(第2版)

    本书还介绍了基础的软件开发原则,如测试驱动开发(TDD)等,以便指导用户如何使用不同的工具来测试典型JavaEE应用程序的每一层。此外,本书也提供了几个附录,以帮助读者快速转换到最新版本的JUnit,并且能够轻松地...

    Junit实战第二版 中文完整版.pdf

    - **最佳实践**:结合了TDD(测试驱动开发)、BDD(行为驱动开发)、持续集成等最佳实践,帮助开发者更好地利用JUnit。 ### 5. 作者背景 - **Petar Tahchiev**:软件工程师,Jakarta Cactus项目的核心开发人员之一...

    Wrox Professional ASP .Net MVC 2

    ##### 第十三章:What’s New in ASP.NET MVC 2 第十三章总结了 ASP .Net MVC 2 的新特性。这一版本引入了许多改进,如改进的模型绑定、新的 HTML 帮助器方法等。本章将详细介绍这些新增的功能,并提供相应的示例...

Global site tag (gtag.js) - Google Analytics