SlideShare a Scribd company logo
Worktest测试框架实现原理 chengxiaojun
测试框架的特点 多线程控制接口的串行/并行执行 Case与测试代码分离 业务以插件方式集成到框架 基础技术: 多线程、C++反射
接口的封装(1/3) <operationname="opname1" type="optype1"  可选属性扩展属性> <arg1>...</arg1> <arg2>...</arg2> ... </operation> 可选属性(由框架提供):     1) 是否阻塞,比如block=off代表非阻塞    2) 是否等待:比如sleep=60代表60s后执行    3) 克隆个数:比如num=2代表复制一份operation    4) 期望结果:比如expect=1代表期望该操作的处理函数的返回结果为1
接口的封装(2/3) <operationname="opname1" type="optype1"  可选属性扩展属性> <arg1>...</arg1> <arg2>...</arg2> ... </operation> 扩展属性:    用户可以根据系统的测试需求扩展属性,通过框架提供的接口函数可以得到operation所有属性的值。
接口的封装(3/3) <operationname="opname1" type="optype1"  可选属性扩展属性> <arg1>...</arg1> <arg2>...</arg2> ... </operation> 扩展参数 扩展参数: <arg1>等等都是扩展参数,这个也是根据系统的测试需求来扩展的,也可以通过框架的接口函数直接得到。
特殊的operation <operation … </operation> <operationname="opname1" type=“wait" /> <operation … </operation> 作用: 等待前面所有的operation执行完毕
Test Case(1/2) <case name=”test_parallel_read”> <operation name="opname1" type="optype1"  可选属性 扩展属性> <arg1>...</arg1> <arg2>...</arg2> ... </operation> <operation name="opname2" type="optype2"  可选属性 扩展属性> <arg1>...</arg1> <arg2>...</arg2> ... </operation> … <operation name=“wait_opname" type=“wait" /> … </case>
Test Case(2/2) 样例
简单的性能测试 公告板是一定大小的共享内存
测试代码 Atest.h/Atest.cpp被编译成so库 #include<testcase.h>     /*testcase.h声明了case相关operation的数据结构,由框架提供*/ #include<log.h> #include<expand.h> /*expand.h定义了获取扩展参数和扩展属性的函数,由框架提供*/ void* operation1(void*); void* operation2(void*); … void init(void);    //可选 void finish(void);  //可选
测试代码 Operation1实现样例: void* operation1(void* arg) { CommonOperationST *my_arg = (CommonOperationST *)arg;        string my_expand_value; intmy_argument_value;         ...         /* read from operation description xml*/ getValueFromOperation(my_arg->opCtrs, "my_expand_name",my_expand_value); getValueFromOperation(my_arg->opArgs, "my_argument",my_argument_value);         ...         /* do something */        /*  do some basic check */         ...         /* statistic */ BillBoard *board = my_arg->board;         board->add("total_process",count);        …
执行 项目A:  ./test_run -c A.xml –so lib/libAtest.so [--filter=case_name] 项目B:   ./test_run -c B.xml –so lib/libBtest.so [--filter=case_name]
某TC执行结果

More Related Content

What's hot

[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
Simen Li
 
全端物聯網探索之旅 - 重點整理版
全端物聯網探索之旅 - 重點整理版全端物聯網探索之旅 - 重點整理版
全端物聯網探索之旅 - 重點整理版
Simen Li
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanup
ted-xu
 
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutorInside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutorAdy Liu
 
线程与并发
线程与并发线程与并发
线程与并发Tony Deng
 
Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門
吳錫修 (ShyiShiou Wu)
 
cppcheck源码分析
cppcheck源码分析cppcheck源码分析
cppcheck源码分析
Wu Liang
 
單元測試:Mocha、Chai 和 Sinon
單元測試:Mocha、Chai 和 Sinon單元測試:Mocha、Chai 和 Sinon
單元測試:Mocha、Chai 和 Sinon
Hsin-Hao Tang
 
Cppcheck分析
Cppcheck分析Cppcheck分析
Cppcheck分析
Wu Liang
 
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發AgileCommunity
 
系統程式 -- 第 12 章
系統程式 -- 第 12 章系統程式 -- 第 12 章
系統程式 -- 第 12 章
鍾誠 陳鍾誠
 
改善程序设计技术的50个有效做法
改善程序设计技术的50个有效做法改善程序设计技术的50个有效做法
改善程序设计技术的50个有效做法crasysatan
 
3. 流程語法與函式
3. 流程語法與函式3. 流程語法與函式
3. 流程語法與函式
Justin Lin
 
Method call in Ruby
Method call in RubyMethod call in Ruby
Method call in Ruby
Hung Wu Lo
 
Golangintro
GolangintroGolangintro
Golangintro
理 傅
 
11, exceptions
11, exceptions11, exceptions
11, exceptions
ted-xu
 
Java单元测试
Java单元测试Java单元测试
Java单元测试darlingshan
 
ES5 introduction
ES5 introductionES5 introduction
ES5 introduction
otakustay
 
系統程式 -- 第 11 章
系統程式 -- 第 11 章系統程式 -- 第 11 章
系統程式 -- 第 11 章
鍾誠 陳鍾誠
 
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
Simen Li
 

What's hot (20)

[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
[ZigBee 嵌入式系統] ZigBee Architecture 與 TI Z-Stack Firmware
 
全端物聯網探索之旅 - 重點整理版
全端物聯網探索之旅 - 重點整理版全端物聯網探索之旅 - 重點整理版
全端物聯網探索之旅 - 重點整理版
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanup
 
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutorInside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
Inside.java.concurrency 35.thread pool.part8_future.scheduledthreadpoolexecutor
 
线程与并发
线程与并发线程与并发
线程与并发
 
Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門Arduino應用系統設計 - Arduino程式快速入門
Arduino應用系統設計 - Arduino程式快速入門
 
cppcheck源码分析
cppcheck源码分析cppcheck源码分析
cppcheck源码分析
 
單元測試:Mocha、Chai 和 Sinon
單元測試:Mocha、Chai 和 Sinon單元測試:Mocha、Chai 和 Sinon
單元測試:Mocha、Chai 和 Sinon
 
Cppcheck分析
Cppcheck分析Cppcheck分析
Cppcheck分析
 
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發
 
系統程式 -- 第 12 章
系統程式 -- 第 12 章系統程式 -- 第 12 章
系統程式 -- 第 12 章
 
改善程序设计技术的50个有效做法
改善程序设计技术的50个有效做法改善程序设计技术的50个有效做法
改善程序设计技术的50个有效做法
 
3. 流程語法與函式
3. 流程語法與函式3. 流程語法與函式
3. 流程語法與函式
 
Method call in Ruby
Method call in RubyMethod call in Ruby
Method call in Ruby
 
Golangintro
GolangintroGolangintro
Golangintro
 
11, exceptions
11, exceptions11, exceptions
11, exceptions
 
Java单元测试
Java单元测试Java单元测试
Java单元测试
 
ES5 introduction
ES5 introductionES5 introduction
ES5 introduction
 
系統程式 -- 第 11 章
系統程式 -- 第 11 章系統程式 -- 第 11 章
系統程式 -- 第 11 章
 
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
[嵌入式系統] MCS-51 實驗 - 使用 IAR (1)
 

Viewers also liked

Legea15din1994 privind amortizarea
Legea15din1994 privind amortizareaLegea15din1994 privind amortizarea
Legea15din1994 privind amortizarea
Petrica Iamandi
 
Sense títol 1
Sense títol 1Sense títol 1
Sense títol 1alexzuaz
 
Homer street prospectus feb 2012
Homer street prospectus feb 2012Homer street prospectus feb 2012
Homer street prospectus feb 2012
rishin86
 
J. clin. microbiol. 2011-rasmussen-1671-3, Streptococcus pyogenes
J. clin. microbiol. 2011-rasmussen-1671-3, Streptococcus pyogenesJ. clin. microbiol. 2011-rasmussen-1671-3, Streptococcus pyogenes
J. clin. microbiol. 2011-rasmussen-1671-3, Streptococcus pyogenes
Astrini Retno Permatasari
 
Pg 14 etapp3
Pg 14 etapp3Pg 14 etapp3
Pg 14 etapp3Hjeltman
 

Viewers also liked (7)

Legea15din1994 privind amortizarea
Legea15din1994 privind amortizareaLegea15din1994 privind amortizarea
Legea15din1994 privind amortizarea
 
Sense títol 1
Sense títol 1Sense títol 1
Sense títol 1
 
Homer street prospectus feb 2012
Homer street prospectus feb 2012Homer street prospectus feb 2012
Homer street prospectus feb 2012
 
J. clin. microbiol. 2011-rasmussen-1671-3, Streptococcus pyogenes
J. clin. microbiol. 2011-rasmussen-1671-3, Streptococcus pyogenesJ. clin. microbiol. 2011-rasmussen-1671-3, Streptococcus pyogenes
J. clin. microbiol. 2011-rasmussen-1671-3, Streptococcus pyogenes
 
Etapp 2
Etapp 2Etapp 2
Etapp 2
 
Pg 14 etapp3
Pg 14 etapp3Pg 14 etapp3
Pg 14 etapp3
 
Stephen king - The long walk
Stephen king - The long walkStephen king - The long walk
Stephen king - The long walk
 

Similar to Worktest测试框架原理

Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化
Harvey Zhang
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)Shanda innovation institute
 
Erlang开发及应用
Erlang开发及应用Erlang开发及应用
Erlang开发及应用litaocheng
 
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)
Kris Mok
 
Deployment instruction trus guard utm 400
Deployment instruction trus guard utm 400Deployment instruction trus guard utm 400
Deployment instruction trus guard utm 400ahnlabchina
 
Deployment instruction trus guard utm 500
Deployment instruction trus guard utm 500Deployment instruction trus guard utm 500
Deployment instruction trus guard utm 500ahnlabchina
 
Oracle Security 101
Oracle Security 101Oracle Security 101
Oracle Security 101
Dahui Feng
 
C/C++调试、跟踪及性能分析工具综述
C/C++调试、跟踪及性能分析工具综述C/C++调试、跟踪及性能分析工具综述
C/C++调试、跟踪及性能分析工具综述Xiaozhe Wang
 
Deployment instruction trus guard utm 1000
Deployment instruction trus guard utm 1000Deployment instruction trus guard utm 1000
Deployment instruction trus guard utm 1000ahnlabchina
 
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
Ho Kim
 
Mybatis学习培训
Mybatis学习培训Mybatis学习培训
Mybatis学习培训
flynofry
 
JavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization SkillsJavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization Skills
Ho Kim
 
Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇bluedavy lin
 
cmd injection
cmd injectioncmd injection
cmd injectionhackstuff
 
1 C入門教學
1  C入門教學1  C入門教學
1 C入門教學Sita Liu
 
Javascript Training
Javascript TrainingJavascript Training
Javascript Training
beijing.josh
 
Serverless Event Streaming with Pulsar Functions-xiaolong
Serverless Event Streaming with Pulsar Functions-xiaolongServerless Event Streaming with Pulsar Functions-xiaolong
Serverless Event Streaming with Pulsar Functions-xiaolong
StreamNative
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试lydiafly
 
前端测试
前端测试前端测试
前端测试
frontwindysky
 

Similar to Worktest测试框架原理 (20)

Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化
 
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
[Flash开发者交流][2010.05.30]avm2虚拟机浅析与as3性能优化(陈士凯)
 
Erlang开发及应用
Erlang开发及应用Erlang开发及应用
Erlang开发及应用
 
Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)Java Crash分析(2012-05-10)
Java Crash分析(2012-05-10)
 
Deployment instruction trus guard utm 400
Deployment instruction trus guard utm 400Deployment instruction trus guard utm 400
Deployment instruction trus guard utm 400
 
Deployment instruction trus guard utm 500
Deployment instruction trus guard utm 500Deployment instruction trus guard utm 500
Deployment instruction trus guard utm 500
 
Oracle Security 101
Oracle Security 101Oracle Security 101
Oracle Security 101
 
C/C++调试、跟踪及性能分析工具综述
C/C++调试、跟踪及性能分析工具综述C/C++调试、跟踪及性能分析工具综述
C/C++调试、跟踪及性能分析工具综述
 
Tcfsh bootcamp day2
 Tcfsh bootcamp day2 Tcfsh bootcamp day2
Tcfsh bootcamp day2
 
Deployment instruction trus guard utm 1000
Deployment instruction trus guard utm 1000Deployment instruction trus guard utm 1000
Deployment instruction trus guard utm 1000
 
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
 
Mybatis学习培训
Mybatis学习培训Mybatis学习培训
Mybatis学习培训
 
JavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization SkillsJavaScript 80+ Programming and Optimization Skills
JavaScript 80+ Programming and Optimization Skills
 
Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇
 
cmd injection
cmd injectioncmd injection
cmd injection
 
1 C入門教學
1  C入門教學1  C入門教學
1 C入門教學
 
Javascript Training
Javascript TrainingJavascript Training
Javascript Training
 
Serverless Event Streaming with Pulsar Functions-xiaolong
Serverless Event Streaming with Pulsar Functions-xiaolongServerless Event Streaming with Pulsar Functions-xiaolong
Serverless Event Streaming with Pulsar Functions-xiaolong
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
前端测试
前端测试前端测试
前端测试
 

Worktest测试框架原理