原标题:白盒测试体系—框架搭建篇
良好的布局是成功的一半,选择一款合适的测试框架能够使我们的白盒测试更高效,事半功倍。
本文就我们过去三年在搭建测试框架中积攒的一些经验给大家做个简单的分享,主要从以下5个方面展示:
什么是测试框架
为什么要用测试框架
哪些测试项目适合搭建测试框架
如何搭建测试框架
什么时候搭建测试框架
1
●
什么是测试框架
●
【简介】
测试框架是测试开发过程中提取特定领域 测试方法共性部分形成的体系结构,并不是一个现成可用的系统,需要测试工程师在它基础上结合自己的测试对象转换为自己的测试用例。
【测试框架四要素】
测试框架通用的有四元素:
1.测试目标
一般是一个函数,一个对象或者一组相关的对象集。测试人员在测试前需要对测试目标有充分的了解,明确测试的预期结果。
2.测试集
这一组测试用例服务于相同的测试目标,保证测试的有序维护。
3.测试执行
测试集按序执行
4.断言
验证被测程序在测试中的行为或状态是否符合预期。
2
●
为什么要用测试框架
●
【提高效率】
在测试框架基础上 重用测试设计原则和测试经验,调整部分内容便可满足需求,可提高测试用例设计开发质量, 降低成本,缩短时间。
3
●
哪些项目适用测试框架
●
【逻辑复杂且封装性好】
首先如果代码逻辑很简单,单测也就没有太大的必要了;其次如果代码没有进行基本的封装或者封装过度,层次结构不清晰,那在测试过程中也是举步维艰。
【复用性高】
被测试模块的复用性高,搭建的测试框架才是有价值有收益的,毕竟投入成本很高;其次在测试中还可以 抽象出可重复使用的公共方法,测试代码的复用性也高。
4
●
如何搭建测试框架
●
【框架选择】
测试框架种类繁多,我们选择时满足以下特点即可:
开源
功能强大
扩展性好
常用测试框架:
【框架运行机制】
我们使用一种测试框架时,只有当你知道框架内部是如何运行的,不仅知其然,还知其所以然,才能使用的更加得心应手。
就拿上述gtest框架的一个最简单的测试demo说明吧:
【TEST_F宏】
我们从测试用例的第一行TEST_F(MyTest, normal)解析,TEST_F的类调用了GTEST_TEST_宏
该测试用例类的结构如下:
我们看到在MakeAndRegisterTestInfo函数体中定义了一个TestInfo对象,该对象包含了一个TEST_F宏中标识的 测试案例的测试套名称、测试案例名称、测试套附加信息、测试案例附加信息、创建测试案例类对象的工厂对象的指针这些信息。
通过对源码的抽丝剥茧,工厂对象UnitTestImpl类的AddTestInfo操作最终指向TestCase类,将包含测试用例信息的Test_info对象添加到 test_info_list_中,而test_info_list_是类TestCase中的私有数据成员,它也是一个vector向量。
TestInfo类的Run接口最终执行命令为Test类的Run接口,该接口源码如下:
TestBody的声明原来为 纯虚函数,拨云见日,执行过程终于识得庐山真面目。Test::Run接口调用了tesk::TestBody,而test实际上是 继承了Test类的案例类对象,即MyTest_normal_Test,该类的 TestBody实际执行的即为测试用例中的内容。
如此循环执行,就是说gtest框架会顺序执行程序中的每一个TEST_F宏的函数体。
【总结】
简而言之,gtest的运行过程分为以下几步:
每一个TEST或者TEST_F宏生成一个测试案例类,继承自Test类
对于每一个测试案例类,由一个工厂类对象创建该类的对象
每一个测试案例类对象创建一个Test_Info对象
Test_Info对象会创建一个TestCase对象的指针,存入vector向量中
对每一个TEST_F宏进行1-4步骤
整个项目中唯一的UnitTestImpl对象,能够按序获取到每一个测试案例对象的信息
执行RUN_ALL_TEST接口,依次遍历vector向量中的元素,最终调用相对应测试案例对象中的TestBody函数,即测试用例代码
5
●
什么时候搭建测试框架
●
【尽早开始】
自然在软件开发框架或模块接口确定后,测试人员便可以着手搭建测试框架,尽早的投入白盒测试,所以这里 建议尽早开始,当然在项目的任何阶段我们都可以介入白盒测试,开始搭建测试框架在不同时期满足相应原则即可:
项目初期
满足功能测试的需求,可以快速地 发现问题。
项目中期
健壮, 稳定执行,代码覆盖率逼近 70%。
项目后期
高效执行,方便进行 持续集成和 敏捷开发。
●
欢迎关注白盒测试体系系列其他文章:
白盒测试体系—开篇
到此这篇ar模块是什么(argparse模块详解)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/72824.html