先说一下对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大神。
分享到:
相关推荐
1. **测试框架选择**:选择合适的自动化测试框架是首要任务,如Appium或 Espresso,它们能与Android SDK无缝集成,支持对原生和混合应用的测试。 2. **H5测试库集成**:为了测试H5组件,我们需要一个能够与...
Bamboo是Elixir编程语言中的一个强大且灵活的电子邮件库,设计时特别考虑了测试性、可组合性和基于适配器的架构。这个库非常适合那些喜欢利用Elixir的管道(pipe operator)进行流程控制的开发人员。在Elixir的函数...
Bamboo打算成为一个完整的端到端游戏框架,用于使用Twisted进行数据交换,使用Panda3D进行渲染并使用Python编码的客户端/服务器应用程序。 稍后可能会考虑支持PyPy / CPython。 使用极端/敏捷开发模型来进行紧急设计...
【标题】中的“简易数据库关系映射框架EasyDBO v0.1.0 测试版”指的是一个专门用于简化数据库操作的开发框架,名为EasyDBO。它处于v0.1.0的测试阶段,意味着这还是一个早期版本,可能包含一些bug或未完善的特性,但...
- **FlexUnit**:Flex的单元测试框架,类似于Java的JUnit,提供断言和测试套件管理。 - **FlashBuilder的内置测试工具**:IDE自带的测试功能,可以方便地进行调试和测试。 - **Selenium Flex API**:结合Selenium...
3. **JUnit**:用于Java语言的单元测试框架,提供丰富的断言和测试报告功能。 ##### 二、自动化测试工具选择要点 1. **考虑测试脚本的易维护性和扩展性**:选择易于维护和扩展的测试工具可以降低长期的成本。 2. *...
工程完工后,还需进行验收,包括结构安全检查、功能测试等,以确保办公楼满足设计要求和使用需求。 以上是对6层6048平米钢框架办公楼设计的全面解析,这个项目涵盖了土木工程的多个核心领域,对于学习和理解建筑和...
- JUnit:Java语言的单元测试框架。 - Selenium:Web应用的自动化测试工具。 - Appium:跨平台移动应用测试框架。 - LoadRunner:性能测试工具,模拟大量用户并发访问。 5. **测试文档**: - 测试计划:定义...
《JUnit in Action》是一本深入探讨Java编程领域中单元测试框架JUnit的专业书籍。JUnit作为最广泛使用的Java单元测试工具,是每一个Java开发者必备的技能之一。本书详细介绍了如何有效地使用JUnit进行测试驱动开发...
Mocha是一个流行的JavaScript测试框架,它允许开发者编写异步和同步的测试用例,而PhantomJS则是一个无头浏览器,常用于自动化测试。当这两者结合时,我们可以创建一个强大的前端自动化测试环境。然而,为了更好地...
- **Atlassian Bamboo**:介绍了如何使用Atlassian Bamboo实现持续集成,并自动运行PHPUnit测试。 - **CruiseControl**:讨论了如何在CruiseControl中集成PHPUnit测试。 - **phpUnderControl**:讲解了如何使用...
"Bamboo State",作为一个专为Bamboo框架设计的独立状态管理库,旨在提供高效、灵活且易于理解的状态管理解决方案。本文将深入探讨Bamboo State的核心概念、功能特性以及如何在实际项目中运用。 首先,我们需要了解...
提供的文档《数据库课程设计》_大作业_图书借阅管理系统设计与开发.docx可能是项目报告,其中详细阐述了系统的设计思路、实现方法和测试结果。查重是学术诚信的一部分,确保报告内容原创性,避免抄袭。 总之,通过...
FlexUnit是一个开源的测试框架,专为编写和执行Adobe Flex和ActionScript代码的单元测试而设计。它允许开发人员验证代码的独立部分,确保其按预期工作,从而提高软件质量。 2. **FlexUnit 4 特性:** - **易于...
9. **单元测试**:项目可能包含JUnit或其他测试框架的测试用例,用于验证各个模块的功能正确性。 10. **部署与运行**:系统可能部署在Tomcat、Jetty等应用服务器上,通过HTTP/HTTPS协议对外提供服务。 综上所述,...
【Android 极速开发框架 dhroid.zip】是一个专为安卓开发者设计的高效开发框架,旨在加速应用程序的构建过程,提高开发效率。这个框架包含了多个关键组件和库,可以帮助开发者快速实现常见功能,如网络请求、数据...
这个库的设计初衷是为了方便集成到持续集成(CI)工具中,如Atlassian的Bamboo或流行的Jenkins。JUnit XML报告是一种标准格式,这些工具能够解析并展示测试结果,帮助开发者理解和追踪测试状态。 在Swift开发环境中,...
了解了测试的基本类型后,我们还需要掌握测试用例的设计。测试用例是描述如何对系统进行测试的一组条件或步骤,用于验证某个特定功能或行为是否符合预期。编写有效的测试用例需要考虑边界条件、异常处理、性能指标等...
3. 自动化测试:通过工具或框架实现测试脚本化,提高测试效率,减少手动错误,例如Selenium用于Web应用的自动化测试。 4. 压力测试:评估系统在高负载或极限条件下的性能和稳定性,如Apache JMeter或LoadRunner。 ...