关闭

单元测试之打桩

发表于:2015-1-22 09:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:白开水    来源:51Testing软件测试网原创

  单元测试可以归纳为:异常测试(也称为白盒测试压力测试、可靠性测试),用来确认代码的结构可靠性,能处理所有可行的输入以及输入组合,不会产生预料之外的异常。功能测试,用于验证所建立模块是否符合需求和功能是否正常工作。在单元级别创建功能测试涉及到人工输入,以指定特定的输入和状态条件、以及预期的输出。
  单元测试通常涉及手工编写测试集、指定输入数据以及为缺少的函数提供桩函数。而对于桩函数我们又该如何去构建呢?
  首先,对于项目中缺少的函数需要构造桩函数,它有可能是低层的一个接口函数,SDK、MFC等提供给用户使用的API函数。在对这些API函数构建桩函数的时候,我们可以做到尽量的简洁,在测试的过程中我们并不需要对这些函数的内部进行测试,只需要它为我们测试的代码提供一个返回值,或者只是为了让我们所测试的代码更好的执行下面的流程。
  简单的介绍个MFC的例子:
void CLightSettingDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
RePaint();
else
{
CDialog::OnPaint();
}
}
  在这里输入测试用例后执行的都是else下的语句,为了能够执行到IF判断为TRUE的语句。需要对IsIconic()打桩,手动返回TRUE的值。
  桩函数如下:
#include <afxwin.h>
::BOOL (::CWnd::Test_Stub_IsIconic)(void) const
{
Return true;
}
  对上面的一段代码再次进行测试,当测试用例输入后,运行测试在CPaintDC dc(this);遇到异常;这是因为CPaintDC dc(this); 在当前窗口创建CPaintDC对象;它是由MFC提供的一个构造函数,这个语句是需要初始化this这个对象。初始化一个图形化的组件,它会涉及到初始化整个应用程序,包括GUI的组件等一系列额外的工作。然后在测试的过程也会涉及到打开窗口,按按钮等的交互式方式,而这些就不是单元测试的范畴。这时候就会对CPaintDC dc(this);进行打桩,使程序继续运行。
     ......
 查看全文请点击下载:http://www.51testing.com/html/98/n-1298298.html

   版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号