Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1320732
  • 博文数量: 179
  • 博客积分: 4141
  • 博客等级: 中将
  • 技术积分: 2083
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-21 20:04
文章存档

2024年(1)

2019年(13)

2016年(1)

2014年(16)

2011年(8)

2010年(25)

2009年(115)

分类: 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  单个测试样例测试

 

IMIXTestUtilityLinux平台上采用控制台。

界面显示:

 

Windows版本:

Windows版本目前支持的功能包括:

l  批量测试

l  单个测试样例测试

l  日志查看

l  协议XML检验/解析

GTest测试数据自动生成器

Tiger测试数据自动生成器

Tiger测试结果检验

 

IMIXTestUtilityWindows下采用MFC设计的界面。

用户界面主要分为两大部分:

1.       测试样例库管理及测试

2.       辅助性测试工具

左边展示的是测试样例库,右边则是一些辅助性的功能。

如上图所以,目前包括四个测试大类:

1. Utility项目测试(CaseUtility

2. 协议测试(CaseProtocol)

3. IMIXAPI测试(CaseIMIX)

4. 集成测试(CaseInteg)

上图是每个测试大类下面的测试样例。

业务逻辑层

业务逻辑主要由三部分组成:

l  测试样例库

l  测试样例控制逻辑

 

测试样例库的管理

整个测试样例库的管理目前分为三层:

第一层:模块的划分,比如说IMIXUtility、协议、集成测试

第二层:每一个模块下面,按照功能进一步的划分,例如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);


LinuxWindows平台拥有同一套接口,这样子,当在不同的平台操作的时候,上层的代码不需要做任何的改动,就可以在不同的平台上编译和运行,提高了工程的可维护性。

阅读(5098) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

yuanxuya2019-06-25 10:09:20

老大 ,你这个测试工具,有源码释放吗
最近我也在写测试工具 , 感觉这几篇博文相当有借鉴意义
感谢了