`
daogangtang
  • 浏览: 62663 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Bamboo的测试框架的设计

 
阅读更多
先说一下对Tir的测试框架的研究成果:
  • 使用telescope作为测试框架的基本工具;
  • 在确保mongrel2作为web server这一块绝对没问题,因此,不再对从浏览器到mongrel2的连接这一过程进行测试,也即是这个测试框架不走socket, http协议这一块;甚至也不测试mongel2到handler这一过程,因为这一块由mongrel2-lua库完成,此库单独进行测试,在发布之前已经过充分测试。因此,本测试框架只测试tir本身,以及tir之上的工程的执行过程;
  • 在确定上述测试范围之后,作者Zed Shaw做了一个聪明且牛逼的设计,充分利用lua的协程,借鉴消费者-生产者的逻辑模式,在同一个进程内实现了发请求、处理子处理、返回结果并与预期值检查核对的事务;
  • 在测试框架中重新定义了start入口函数,覆盖了标准的start入口函数,将整个进程引入test框架的掌控范畴;
  • 在测试框架中伪造了连接需用到的发送,接收,返回等函数,相当于是对web对象的伪造;
  • 在测试框架中实现了Browser对象,能够像在浏览器中点击操作那样,实现对真实环境的模拟,而这一切,仅仅是写代码完成。并且,可以方便地对返回值进行比对检测,实现逼真的效果,而这一切都是程序自动化完成的,仅需敲一个tir test命令就启动这种自动化过程;
  • 整个测试框架仅200多行代码。Zed Shaw真是个大神啊!


在保持上述特点的情况下,我们对其进行了适当改造(不是很容易),使其能适应于bamboo现有的运行机制,并成功跑了起来。

下面再补充几个技术细节点:

定义了一个RESPONSE变量,用于记录从服务端协程代码返回的结果,这是一个列表变量,可以存取不止一个返回结果,最新的放在最后。

makeFakeConnect()函数,伪造一个连接请求;
makeFakeRequest()函数,伪造一个请求对象;
routeRequest()函数,用来路由请求路径;
browser()函数,为一个对象工厂,在里面定义了Browser类,执行一个这个函数就返回一个Browser实例对象,这个对象中封装了各种方法;
start()函数,地位与bin/bamboo_handler中的start相同,用来启动服务端代码。但测试框架中的start与正常模式中的start的区别在于,正常模式中的start是一个main loop,里面有阻塞等待,等待zmq的消息过来;而测试框架中的start,将main loop建立了一个协程包装,并让它由测试代码控制一次次执行,从而实现程序化控制其请求执行过程。

总的来说,这个框架真是把lua的协程发挥得淋漓尽致,从心底崇拜shaw大神。
分享到:
评论

相关推荐

    基于android平台h5组件自动化测试系统设计与实现.zip

    1. **测试框架选择**:选择合适的自动化测试框架是首要任务,如Appium或 Espresso,它们能与Android SDK无缝集成,支持对原生和混合应用的测试。 2. **H5测试库集成**:为了测试H5组件,我们需要一个能够与...

    Bamboo:可测试,可组合且基于适配器的Elixir电子邮件库,适合喜欢管道的开发人员

    Bamboo是Elixir编程语言中的一个强大且灵活的电子邮件库,设计时特别考虑了测试性、可组合性和基于适配器的架构。这个库非常适合那些喜欢利用Elixir的管道(pipe operator)进行流程控制的开发人员。在Elixir的函数...

    Bamboo Engine:基于Python,Panda3D和Twisted的游戏框架-开源

    Bamboo打算成为一个完整的端到端游戏框架,用于使用Twisted进行数据交换,使用Panda3D进行渲染并使用Python编码的客户端/服务器应用程序。 稍后可能会考虑支持PyPy / CPython。 使用极端/敏捷开发模型来进行紧急设计...

    [其他类别]简易数据库关系映射框架EasyDBO v0.1.0 测试版_easydbo010.zip

    【标题】中的“简易数据库关系映射框架EasyDBO v0.1.0 测试版”指的是一个专门用于简化数据库操作的开发框架,名为EasyDBO。它处于v0.1.0的测试阶段,意味着这还是一个早期版本,可能包含一些bug或未完善的特性,但...

    flex测试总结

    - **FlexUnit**:Flex的单元测试框架,类似于Java的JUnit,提供断言和测试套件管理。 - **FlashBuilder的内置测试工具**:IDE自带的测试功能,可以方便地进行调试和测试。 - **Selenium Flex API**:结合Selenium...

    软件测试中的自动化测试与持续集成1.pptx

    3. **JUnit**:用于Java语言的单元测试框架,提供丰富的断言和测试报告功能。 ##### 二、自动化测试工具选择要点 1. **考虑测试脚本的易维护性和扩展性**:选择易于维护和扩展的测试工具可以降低长期的成本。 2. *...

    【6层】6048平米钢框架办公楼设计(计算书、建筑、结构图).zip

    工程完工后,还需进行验收,包括结构安全检查、功能测试等,以确保办公楼满足设计要求和使用需求。 以上是对6层6048平米钢框架办公楼设计的全面解析,这个项目涵盖了土木工程的多个核心领域,对于学习和理解建筑和...

    软件测试实战项目.zip

    - JUnit:Java语言的单元测试框架。 - Selenium:Web应用的自动化测试工具。 - Appium:跨平台移动应用测试框架。 - LoadRunner:性能测试工具,模拟大量用户并发访问。 5. **测试文档**: - 测试计划:定义...

    JUnitInAction.pdf

    《JUnit in Action》是一本深入探讨Java编程领域中单元测试框架JUnit的专业书籍。JUnit作为最广泛使用的Java单元测试工具,是每一个Java开发者必备的技能之一。本书详细介绍了如何有效地使用JUnit进行测试驱动开发...

    mocha-phantomjs-bamboo-reporter:为向 Atlassian Bamboo 报告的 mocha-phantomjs 定制的 Mocha Reporter

    Mocha是一个流行的JavaScript测试框架,它允许开发者编写异步和同步的测试用例,而PhantomJS则是一个无头浏览器,常用于自动化测试。当这两者结合时,我们可以创建一个强大的前端自动化测试环境。然而,为了更好地...

    关于 PHP 单元测试的一本好书

    - **Atlassian Bamboo**:介绍了如何使用Atlassian Bamboo实现持续集成,并自动运行PHPUnit测试。 - **CruiseControl**:讨论了如何在CruiseControl中集成PHPUnit测试。 - **phpUnderControl**:讲解了如何使用...

    bamboo-state

    "Bamboo State",作为一个专为Bamboo框架设计的独立状态管理库,旨在提供高效、灵活且易于理解的状态管理解决方案。本文将深入探讨Bamboo State的核心概念、功能特性以及如何在实际项目中运用。 首先,我们需要了解...

    《数据库课程设计》_大作业_图书借阅管理系统设计与开发.zip

    提供的文档《数据库课程设计》_大作业_图书借阅管理系统设计与开发.docx可能是项目报告,其中详细阐述了系统的设计思路、实现方法和测试结果。查重是学术诚信的一部分,确保报告内容原创性,避免抄袭。 总之,通过...

    flexunit-4.1.0_RC2-4-4.1.0.16076.zip,flexunit 4

    FlexUnit是一个开源的测试框架,专为编写和执行Adobe Flex和ActionScript代码的单元测试而设计。它允许开发人员验证代码的独立部分,确保其按预期工作,从而提高软件质量。 2. **FlexUnit 4 特性:** - **易于...

    基于SSM框架的JavaWeb通用权限管理系统.zip

    9. **单元测试**:项目可能包含JUnit或其他测试框架的测试用例,用于验证各个模块的功能正确性。 10. **部署与运行**:系统可能部署在Tomcat、Jetty等应用服务器上,通过HTTP/HTTPS协议对外提供服务。 综上所述,...

    安卓开发-Android 极速开发框架 dhroid.zip.zip

    【Android 极速开发框架 dhroid.zip】是一个专为安卓开发者设计的高效开发框架,旨在加速应用程序的构建过程,提高开发效率。这个框架包含了多个关键组件和库,可以帮助开发者快速实现常见功能,如网络请求、数据...

    swift-junit:一个用于创建JUnit XML测试结果的Swift库,可以由Bamboo或Jenkins等工具解释。 支援Macos和Linux

    这个库的设计初衷是为了方便集成到持续集成(CI)工具中,如Atlassian的Bamboo或流行的Jenkins。JUnit XML报告是一种标准格式,这些工具能够解析并展示测试结果,帮助开发者理解和追踪测试状态。 在Swift开发环境中,...

    测试开发基础知识.zip

    了解了测试的基本类型后,我们还需要掌握测试用例的设计。测试用例是描述如何对系统进行测试的一组条件或步骤,用于验证某个特定功能或行为是否符合预期。编写有效的测试用例需要考虑边界条件、异常处理、性能指标等...

    ASP.NET-[其他类别]《.NET测试实战技术大全》随书源代码.zip

    3. 自动化测试:通过工具或框架实现测试脚本化,提高测试效率,减少手动错误,例如Selenium用于Web应用的自动化测试。 4. 压力测试:评估系统在高负载或极限条件下的性能和稳定性,如Apache JMeter或LoadRunner。 ...

Global site tag (gtag.js) - Google Analytics