精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-07-15
最后修改:2010-07-15
##第一次做Cpp项目的测试设计,代码的语法还不熟悉就要操刀设计了,
##我觉得基本功扎实就不用担心用什么工具或者语言,小说中少林寺厉害就厉害在基本功了.
代码结构:
bin:
该目录存放的文件是httpd,
这份可执行文件是集成测试的web服务.
build:
该目录分两级,
分别存放debug版本和release版本测试代码的编译结果.
测试期间,我们只需要用到debug版本,该版本的代码都是可以通过gdb进行调试的.
data:
该目录中各子目录以模块区分,
分别存放各个模块的测试数据,
其余顶层目录中的文件为本测试项目共享测试数据.
include:
该目录分两级,
第一级为各个模块编译成可执行文件时所需要的头文件,
此时的编译结果为每个模块一个编译结果,结果中包含该模块的全部测试集.
第二集为bvt测试头文件,
bvt测试头文件和上一层头文件的区别是,bvt的头文件中会注释掉某些测试集或测试用例,
并且会把各个模块的测试代码编译到一个输出文件中去,当执行bvt编译后的文件时,
那些在bvt头文件目录下的各个头文件中没有注释的测试用例就会执行.
这样做最大的好处是,测试代码不需要维护两份,只需要多维护一份头文件即可.
lib:
存放的是测试工程所依赖的第三方库文件
logs:
该目录存放的是集成测试web服务的日志文件
report:
该目录存放的是测试报告数据文件,
其中report.xsl是用于渲染测试报告xml文件的样式文件.
source:
该目录存放的是各个模块的测试代码,以模块名区分,
以及bvt的入口函数文件,还有utils工具类文件,
以sorce中的webserver测试代码为例:
source/webserver:
该模块的类实现必须放到:
<模块名>_test.cpp文件中,
该模块的测试代码放到test_开头的cpp文件中,
该模块编译可执行程序是所需的入口函数必须单独放到main.cpp文件中,绝不可和其它文件混淆.
这样的设计保证了:
1.测试类的实现与测试用例分开.各测试用例所用到测试模块的公共部分可以放到类实现中去,比如setup和teardown函数.
2.做bvt编译的时候,如果多个模块都具有main函数,由于main方法重复定义,编译会无法通过,
3.做bvt编译的时候,负责编译的Makefile可以通过排除式查找,将文件名不为main.cpp代码文件统一编译,
比如可以通过如下简洁的命令实现多个CPP文件的编译:
BVT_CPP=$(shell find $(HOME)/source -name '*.cpp' -type f|grep -v 'main.cpp'|grep -v 'performance.cpp')
这条命令说明:
查找HOME下source目录下名为cpp后缀的非main.cpp文件,并且拍出performance.cpp文件,将剩下的文件作为bvt所需的cpp文件来编译.
views:
该目录存放了集成测试web服务所需要的视图文件.
Makefile:
该文件实现各个模块的编译与清理,
共用的部分都定义为一个变量,
需要集成编译的cpp比如bvt的cpp,通过制定上面source目录的规则,让find命令可以将cpp搜索出来,
这样就不需要把很多的cpp文件写死到Makefile中了.
其它依赖:
1.Cppunit1.12.1:本次测试采用Cppunit作为基础框架
2.libcurl:该库实现了http请求的发送以及实现urlencode
3.syslog:测试过程中的详细都输出到同一日志中,由syslog负责收集.
其它
集成测试平台: TestFixure: 左边是测试用例集,每个用例集包含了不同数量的 TestCase ,分别对应被测试的各个模块, ( performance_test 是性能测试用例集,不单独对应某个模块)
ExecStdout: 右边是每个测试用例集的执行结果,可以通过点击每个用例集右边的超链接 Run 来执行某个用例集。 (需要注意 的是, webserver_test 用例最多,并且包含很多大文本测试,执行起来速度很慢,要耐心等待)
Run: 测试执行,当点击每个测试集后面的 Run 时,页面会弹出提示,告诉你耐心等待。 (大家可以拿 translation_engine_test 来试用下,该用例执行速度很快)
测试执行结束后,系统会跳出提示框通知执行者 Case 执行完毕,并且可以在 ExecStdout 中看到执行的结果。 执行结果的最后,目前有如下重要的信息:
0.01user 0.00system 0:04.08elapsed 0%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+1649minor)pagefaults 0swaps
这两行信息包含了该测试集的 CPU 执行时间,用户态时间和内核态时间,还可以检测该程序所用的私有数据区大小,私有堆栈大小, Socket 输入输出字节数,文件读写 IO 情况等。
Report: 该区域展示的是某个模块的CppUnit测试执行报告。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-12-23
你用的是什么 IDE? 写代码的时候只用 VIM ?
VIM 感觉有点繁琐, |
|
返回顶楼 | |
发表时间:2010-12-24
vim,一般远程登录到linux主机上操作的话,那个机器肯定装了vim,
而且我们的机器太多了,不能每个都装自己喜欢的ide,所以就用通用的vim了。 |
|
返回顶楼 | |
发表时间:2010-12-24
跑题了吧?测试方案在哪里?
|
|
返回顶楼 | |
发表时间:2011-01-28
太厉害了,我以前是搞Java的,C学过一点,C++正在入门。。
|
|
返回顶楼 | |
浏览 3073 次