学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
发新话题
打印

有没有对测试比较了解的?

有没有对测试比较了解的?

需要测试一大堆函数的功能逻辑是否正确。
引用:
#include "stdio.h"

#define SUCCESS 0
#define FAILE   1

int g_Func_A_result;    //控制Func_A的返回值的全局变量
#define Func_A Stub_A    // 对函数Func_A做宏替换
int Stub_A(void)            //Func_A的桩函数
{
    if(SUCCESS == g_Func_A_result)
        return SUCCESS;
    else
        return FAILE;
}

void Driver1(void);
void Driver2(void);
void Source(void);

int main()
{
    Driver1();        //不同的驱动函数
    Driver2();
    return 0;
}

void Driver2(void)
{
    g_Func_A_result = SUCCESS;    //给定入口条件
    Source();
}

void Driver1(void)
{
    g_Func_A_result = FAILE;
    Source();
}

void Source(void)
{
    Func_A();

    Func_B();
}

void Func_B(void)
{
    Func_A();
}
Source是被测代码,它内部调用了几个函数,现在不关心调用函数实现是否正确,
只是检查Source本身逻辑是否正确。所以用Stub_A替换Func_A()的功能,用全局
变量来控制返回值。然后在driver()中检查不同情况下Source的返回值是否正确。
问题是:比如我想调用Func_A返回成功,调用Func_B返回失败,Stub和driver该怎么写?
(注:不能用调用次数来控制,因为代码很多,调用关系也复杂,不可能逐个去看
每个函数是第几次被调用)
// 写的比较乱,不知是否描述清楚了。

TOP

是很乱,我无法理解“大堆函数的功能逻辑是否正确”是什么意思?你这个程序是用来干什么的?是关于驱动器的吗?
大家一起来编程吧!

TOP

函数本身不是重点,我找的是测试方法
“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!

TOP

黑盒测试的话,用大量普通数据,还有一些边界数据
当这两种数据都正确,那就可以认为这部分代码可靠
QQ1007665007
QQ群61762856

TOP

建议给Fun_A和Fun_B分别写个“套子”函数,在里面控制,而不是简单的宏。
专心编程………
飞燕算法初级群:3996098
我的Blog

TOP

回4#

我这个应该是白盒测试。
代码写完了,几个人交叉测试代码。
等这阶段完了交给测试部才是黑盒。
“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!

TOP

回5#

"套子"函数是什么东东?
能否说详细点或提供点资料?
“视频教程网”免费提供教学资源
C不限制你的自由!
条件是自己承担滥用自由的恶果!

TOP

白盒的话可以有针对地构造边界数据啊
关键是要让所有的分支都能让它有机会运行一次
QQ1007665007
QQ群61762856

TOP

或者,不如你在函数体的开头加一段直接返回的处理代码,
用一个预处理去包着它,不要的时候就改预处理参数
QQ1007665007
QQ群61762856

TOP

viod Fun_A()
{....}//具体实现

void Stub_A()
{//参数检查,特殊处理,错误报告等等,专门针对Fun_A这一个函数
#if DEBUG
...
#else
...
#endif
}

不过如果按照效率来说,还是LS的办法最好,写函数的时候就加上#if _DEBUG....
专心编程………
飞燕算法初级群:3996098
我的Blog

TOP

发新话题