首页 > 软件测试/ 正文
Google Test 测试架构探究
2012-10-23 17:40:27 ℃得益于和萱哥关于单元测试的聊天,让我开始想要了解Google的单元测试框架Google Test,(虽然以前也听勇哥提到过这个词,但是一直没有往心里去);以前基于C#反射特性Demo过一个C#的单元测试框架(http://www.51testing.com/?action-viewnews-itemid-818965),所以更想明白Google Test测试框架的实现机制;这期间搞过一段Python,看Python文档时也看到相关的单元测试框架PyUnit,但没有深入研究,有时间深入研究一下。
自动化测试框架,主要目的就是自动化调用执行某些测试用例,将执行结果与目标结果进行比较,用以达到测试特定目标的目的。而测试用例的针对目标可能是函数接口,功能模块,UI等等。
自动化测试框架从功能上可以分为技术框架和执行框架。所谓技术框架一般针对于特定的测试目标,为了达到自动化测试而引入的技术或者方法,比如微软UI测试中的MSAA,UI Automation框架以及后续建立在UIAutomation上的POM/LFM(详见References中微软UI自动化测试技术演进相关链接)。而执行框架则侧重于对测试用例自动化执行的控制。这篇文章主要侧重于讨论执行框架,而自动化执行框架的设计中有以下几方面是必须考虑的:
1、测试用例选择控制。
2、自动化传递参数或者配置条件。
3、测试用例执行结果比对。
4、测试结果记录与分析。
测试用例选择控制
测试用例由多人编写,且针对模块不同,再加上历史原因,诸如此类限制情况要选择特定测试用例执行。C#中常见做法是利用反射机制建立特性标签,选择带有特定标签的测试用例执行,而C++常见做法是给测试用例加字符串参数,执行时通过字符串参数进行选择。
自动化传递参数或者配置条件
给被测试测试目标传递参数或配置文件是自动化测试框架必须有的特性,最可取的做法就是利用XML文档动态传参,好处是实现代码复用(针对同一个测试方法传递不同测试参数),以及可以动态自适应测试参数的变化(代码不改动的情况下调整参数或者配置信息适应测试条件的改变)。
测试用例执行结果比对
测试比对一般代码中实现测试结果比对,但这涉及到目标结果也就是期望结果的取得的问题,其实和上述传参和配置条件属于同一个范畴。
测试结果记录与分析
结果记录一般会将结果可视化输出到CMD窗口或者桌面窗口,XML文件,HTML文件,Excel文件等。不同测试框架实现有所不同,取决于需求。
Google Test
本来想Demo以下Google Test的实现,但是发现网上已经有人做过类似的事情,就把代码copy过来了,尊重作者意愿,将连接放至refereces。
Goolge Test架构主题设计很简单,将每一个测试用例封装到一个类TestCase的子类里。一个测试单元类UnitTest中将这些TestCase存入一个Vector的数据结构中,使用RunTestCases()方法(原著中使用Run这个方法名起的不是很好容易与TestCase中Run()方法相混,降低代码可读性)控制取出Vector中的测试用例来控制执行过程,结果比对等。
这个架构最出彩的地方是使用宏定义掩盖了繁杂的测试用例封装过程,可谓是神来之笔,详尽代码请参考连接,于作者博客下载。
class TestCase // 执行测试案例的方法 int nTestResult; // 测试案例的执行结果 |
- 上一篇:代码评审三步走
- 下一篇:我的软件测试之旅:(9)行动——简化测试文档和流程
更多郑州计算机学校什么课程好呢,郑州市计算机短期培训班,郑州北大青鸟什么专业好呢,郑州电脑编程培训多少钱,未来软件开发就业如何,郑州北大青鸟速成班相关文章
- Java编程人员应注意的编码准则
- Java连接DB2数据库开发应用程序的步骤
- 敏捷测试之实践篇
- 软件测试管理以及与自动化测试的完美结合(上)
- 探索式测试与超市购物
- 什么是软件测试架构
- 从瀑布开发走向敏捷开发模式下的自动化测试(3)
- 我的软件测试之旅:(10)贡献——开发项流程
- Google Test 测试架构探究
- 白盒测试有技术含量还是黑盒测试有技术含量?
- TDD从何开始
- 对话马丁·福勒(Martin Fowler)——第六部分:性能与过程调优
- 软件测试人员的核心技术能力,应该是什么?
- 软件测试员需要学习的基本知识
- 讨论SOA的真正价值所在!
- 过程改进漫漫谈之过程改进的五个原则
- 支持质量保证的协同开发环境
- 着眼于项目管理的SQA组织架构思路分享
- 研发质量管理的指导思想
- 度量项目质量优劣的六个维度
- 揭示7个提高软件质量的务实做法
- QQ微信状态是怎么设置的,微信在线是什么意思
- 电脑操作误区
- CMD命令集全部放送
- 系统启动项命令msconfig ,如何设置开机启动项
- 22寸显示器最佳分辨率是多少
- 主板南北桥的区别
- 为什么液晶显示器对人体更健康
- Windows 7虚拟WIFI介绍
- 做一名软件工程师需要学什么
- 搜索
-
- 热门标签