分类: C/C++
2014-10-07 17:59:23
随着IMIXAPI C++项目的推进,不断的出现Bug,为了能够有效的控制项目的质量,急需建立自己的测试样例库:
l 有效管理测试样例:对于IMIXAPI C++小组,测试工作量大,但是能够投入的资源少,因此有效的管理和维护测试样例极为重要;
l 自动化测试:
l 跨平台:IMIXAPI C++的项目是跨平台的(Windows/Linux),所以测试工具同样也需要跨平台;
l 其他:由于能够投入的资源很少,因此对测试平台的设计要求是高可维护性和高可扩展性;
展示层
Linux版本:
Linux版本目前支持的功能包括:
l 批量测试
l 单个测试样例测试
IMIXTestUtility在Linux平台上采用控制台。
界面显示:
Windows版本:
Windows版本目前支持的功能包括:
l 批量测试
l 单个测试样例测试
l 日志查看
l 协议XML检验/解析
l GTest测试数据自动生成器
l Tiger测试数据自动生成器
l Tiger测试结果检验
IMIXTestUtility在Windows下采用MFC设计的界面。
用户界面主要分为两大部分:
1. 测试样例库管理及测试
2. 辅助性测试工具
左边展示的是测试样例库,右边则是一些辅助性的功能。
如上图所以,目前包括四个测试大类:
1. Utility项目测试(CaseUtility)
2. 协议测试(CaseProtocol)
3. IMIXAPI测试(CaseIMIX)
4. 集成测试(CaseInteg)
上图是每个测试大类下面的测试样例。
业务逻辑主要由三部分组成:
l 测试样例库
l 测试样例控制逻辑
测试样例库的管理
整个测试样例库的管理目前分为三层:
第一层:模块的划分,比如说IMIX、Utility、协议、集成测试
第二层:每一个模块下面,按照功能进一步的划分,例如IMIXAPI下面还分为心跳功能测试、重连功能测试等等。
第三层:每一个功能下面,则是一系列的测试样例。
CTestFactory主要管理和控制测试样例。
CTestObject则作为功能测试的基类。每一个功能测试下面,还包含一系列的具体的测试样例,每个测试样例一个函数。
系统抽象层主要由三部分组成:
1. 进程控制,包括进程的创建和终止,进程间的互斥操作
2. 线程管理
3. 文件操作
系统抽象层有一个统一的接口:
以下是文件操作的接口:
class CFileOp
{
private:
#ifdef WIN32
long m_lf;
_finddata_t m_dirData;
#else
DIR *m_pDirPtr;
struct dirent *m_pDirData;
#endif
public:
char *GetName();
int OpenDir(char *pDirName);
int ReadDir();
void CloseDir();
void GetFilesFromDir(char *pTemplatePath, set *pTemplateDir);
};
进程操作的接口:
int NewProcess(string path, unsigned short show, int *dwProcessId);
BOOL DeleteProcess(int dwProcessId);
int WaitForProcess(int dwProcessId, int millSeconds);
void* CreateSem(char *semname, BOOL initVal);
void CloseSem(void *hSem);
void DeleteSem(char *hSemName);
void WaitForSem(void *hSem, int millSeconds);
void ReleaseForSem(void *hSem, int count = 1);
Linux和Windows平台拥有同一套接口,这样子,当在不同的平台操作的时候,上层的代码不需要做任何的改动,就可以在不同的平台上编译和运行,提高了工程的可维护性。