软件单元测试的测试用例编写方法

发表于:2010-09-10来源:作者:点击数:

软件 单元测试 的 测试用例 编写方法 MI LY: 宋体; mso-ascii-font-family: " Times Roman?; mso-hansi-font-family: ?Times New Roman??>我在这里用最常用的方法:基本路径测试法来进行单元测试,因为我要用一个实际的例子来进行说明,所以就编写了下面一个

MILY: 宋体; mso-ascii-font-family: " Times Roman?; mso-hansi-font-family: ?Times New Roman??>我在这里用最常用的方法:基本路径测试法来进行单元测试,因为我要用一个实际的例子来进行说明,所以就编写了下面一个程序模块,就暂且命名为“详细查询模块”吧。

我先写一下基本过程:

1  分析模块函数;

2  在模块中找到相应的关键点(函数);

3  根据第二点,画出模块程序流程图;

4  计算圈复杂度;

5  根据圈复杂度算出测试用例的最优个数;

6  根据路径测试法和圈复杂度写出具体测试用例;

7  进行测试。

void CXIANGXIDLG::OnOK()

{

CoInitialize(NULL);//初始化COM环境

_ConnectionPtr m_pConnection;//连接对象

  HRESULT hr;

  try

  {

hr = m_pConnection.CreateInstance("ADODB.Connection");//创建Connection对象

if(SU

    {

hr=m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=shouji.mdb","","",adModeUnknown);//连库

    }

  }

  catch(_com_error e)

  {

AfxMessageBox("数据库连接失败,确认数据库连接字符串是否正确");

  }

  //操纵表

_RecordsetPtr m_pRecordset; //记录集对象

  UpdateData(TRUE);

  CString str

if (m_name=="")                         //路径1

  {

MessageBox("用户名不能为空!"); //函数A

  }

  else                                                                                                                                                         {UpdateData(TRUE);        //函数B

  int lenth=0;

  lenth=m_name.GetLength();

if (lenth>12 || length<2)        //路径2

  {MessageBox("输入的用户名不正确或没有该用户!请重新输入!");                 //函数C

  }

  Else

  {

if(m_pipei)                        //路径3

  {

strSQL="SELECT * FROM sj_T_ShouJiKa where 用户姓名 = '"+m_name+"'"; //函数D

  }

  Else

  {

strSQL="SELECT * FROM sj_T_ShouJiKa where 用户姓名 like '%"+m_name+"%'";//函数E

  }

  try

  {

    hr=m_pRecordset.CreateInstance("ADODB.Recordset");

    if(SUCCEEDED(hr))

    { //从数据库中打开表

m_pRecordset->Open(_bstr_t(strSQL),m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

    }

    else

    {

  AfxMessageBox("查询不成功!");

    }

  }

  catch (_com_error e)

  {

    CString strError;

strError.Format("警告:打开数据表时发生异常。 错误信息: %s",e.ErrorMessage());

  AfxMessageBox(strError);

  return;

  }

while(!m_pRecordset->adoEOF)     //路径4

  {                                                                                 //函数F

    _bstr_t name="";

    _bstr_t shoujikahao="";

    _bstr_t tongxinzhishi="";

    _bstr_t fuwushang="";

    int i=0;

    m_list5.DeleteAllItems();

    while(!m_pRecordset->adoEOF)

    {

name=(_bstr_t)m_pRecordset->GetCollect("用户姓名");

shoujikahao=(_bstr_t)m_pRecordset->GetCollect("手机卡号");

tongxinzhishi=(_bstr_t)m_pRecordset->GetCollect("通信制式");

fuwushang=(_bstr_t)m_pRecordset->GetCollect("服务商");

  m_list5.InsertItem(i,name);

m_list5.SetItemText(i,1,shoujikahao);//设置该行的不同列的显示字符

m_list5.SetItemText(i,2,tongxinzhishi);

m_list5.SetItemText(i,3,fuwushang);

m_pRecordset->MoveNext();

i=i+1;

    }

  }

  //关闭连接、释放com资源m_pRecordset->Close();     //路径5

  m_pRecordset.Release();

  m_pConnection->Close();

                 m_pConnection.Release();

  CoUninitialize();

  }

  }

}

我们根据这个程序来画出它的程序流程图,如下,是我画好的:

有了图以后我们就要知道到底我们要写多少个测试用例,才能满足基本路径测试。

这里有有了一个新概念——圈复杂度。

圈复杂度是一种为程序逻辑复杂性提供定量测试的

我们可以得到基本路径是:

1:  A

2:  B->C

3:  B->D->F

4:  B->E->F

下面我们开始写测试用例。

“详细查询测试”做完了吗?没有,因为对于上表的每一个路径,如果结果有不同的,即:结果有对的,也有不对的。那么,我们就还需要进行进一步的测试,下面的工作我就不做了,照搬就是。

接下来教大家如何编写干净的

单元测试是编写高

编写单元测试用例

本文所采用的案例非常简单,就是对数据库表的增、删、改、查操作进行测试。假设我们有这样一个表url(MySql数据库):

正如你所见,该表只有几个字段,但对于我们的案例来说完全够用。

看到此处,你应该清楚我们是要对数据库操作进行单元测试。如果你是一位经验丰富的开发人员,此时已经会有许多疑问,甚至已经失去继续阅读本文的兴趣:

单元测试不应该直接操作数据库?

对数据库操作的单元测试可以采用DAO模式,Mock一个实现类?

使用内存数据库?

其他?

软件测试用例 单元测试,软件单元测试的测试用例编写方法相关推荐

  1. 软件测试用例模板和例子_如何编写测试用例?

    一.刚刚从事软件测试职业,如何快速掌握编写测试用例的方法?该怎样编写测试用例呢?专家分析:1.根据需求文档,完全按照需求文档框架/功能描述,根据自己的理解整理为用例.简单来说,就是将需求文档描述的内容 ...

  2. 软件测试是采用(A)执行软件的活动,测试(Test)测试是一项采用测试用例执行软件的活动,在这.ppt...

    测试(Test)测试是一项采用测试用例执行软件的活动,在这.ppt Beta 测试是从用户角度进行的测试.( Y ) 项目立项前测试人员不需要提交任何文档. ( Y ) 单元测试能发现大部分的软件缺陷 ...

  3. 单元测试用例_前端单元测试实践

    一说到单元测试,可能对于业务一线同学来说,心理立马就会无形中有一种压迫感,心想 "业务都做不完了,写个球的单元测试,先保证功能完备,赶紧上线才是王道",这句话的核心是以业务为重,没 ...

  4. 单因子测试用什么软件检查,如何进行单元测试?

    原标题:如何进行单元测试? 单元测试是针对软件设计的最小单位--程序模块,进行正确性检验的测试工作.其目的在于发现每个程序模块内部可能存在的差错. 在代码编写完成后的单元测试工作主要分为两个步骤人工静 ...

  5. 软件测试密码修改教程,软件测试之用户注册和密码修改测试用例设计

    软件测试之用户注册和密码修改测试用例设计 发表于:2009-03-05来源:作者:点击数: 软件测试技术导航 软件测试技术 : 软件测试工程师 测试用例 功能测试 测试管理 缺陷管理 手机测试 自动测 ...

  6. 软件测试用例_通用测试用例执行软件

    INTEWORK-TAE(Testcase Automation Executor , 以下简称TAE) 是一款通用的测试用例执行软件,可以兼容不同的仿真系统,同时具备了故障注入.标定.测量.诊断.模 ...

  7. 软件测试线上跟踪测试,跟踪测试用例如何做?

    摘要: 在测试过程计划确定后测试执行开始之前,测试组长应该能够回答下面的几个问题: ● 测试计划中需要执行哪些测试组件? ● 测试计划中有多少测试用例? ● 在执行测试过程中,使用什么方法来记录测试用 ...

  8. nunit测试报告 转html,单元测试软件NUNIT使用说明

    本文仅提供了public 方法的说明.及前期工作和常用的断言和attribute. NUNIT使用说明 一:软件及安装 免费,开源的单元测试软件. 安装只要运行安装程序,按所有缺省设置即可. NUNI ...

  9. 软件测试用例_软件测试用例设计实战场景法

    不点蓝字,我们哪来故事? 目录 场景法 扩展例子 场景法介绍 影子 场景法用例设计举例 场景法设计用例步骤和表示 场景法举例 总结 场景法的注意点 场景法 影子 本来想直接跳过场景法的,今天群友提出问 ...

最新文章

  1. Jupyter 环境配置
  2. jQuery-DOM节点插入总结
  3. Android APK 签名(图)
  4. 备份数据库的expdp语句_Oracle中利用expdp/impdp备份数据库的使用说明
  5. tukey检测_回到数据分析的未来:Tukey真空度的整洁实现
  6. 凸多边形面积_C++计算任意多边形的面积
  7. qt如何实现backspace的功能_如何实现知识星球列表拖拽功能
  8. Android 驱动(8)---简单实例讲解linux的module模块编译步骤
  9. 全球首个商用5G网络首秀遭吐槽:信号太难找 用起来像4G!
  10. FreeSurfer Tutorial Datasets训练数据配置
  11. vb使用open方法读写文件
  12. CentOS系统性能工具 sar 示例!
  13. 无问西东,哪怕重头来过
  14. elastic-Job配置参数详细解释
  15. 【跨年烟花代码】用C语言来写“烟花”,快拿去给心中的那个人看
  16. Junit 单元测试以及断言
  17. asp.net中使用Page.Validate()和Page.IsValid进行服务器端验证
  18. 知网导出外文参考文献格式和下载文章(2019.5)
  19. error: resource drawable/edit_text_bg (aka com.example.track:drawable/edit_text_bg) not found.
  20. HTML怎么给文本添加删除线?(代码示例)

热门文章

  1. 网络请求——跨域 的概念
  2. Python实现文件简单加解密
  3. 【奶妈级教程】Ubuntu18.04服务器远程连接指南
  4. 豆瓣商业化:小清新文艺范必须远离铜臭?
  5. 国信证券学习系列(7)
  6. delphi中字符串拼接_Delphi中的字符串类型(Delphi适用于初学者)
  7. 基于互联网大脑架构的智慧城市建设探讨
  8. linux c编程文件枷锁
  9. C++友元函数实现两个复数相加
  10. 解决WIN10下应用商店不能用,闪退的情况