测试方法

来源:互联网 发布:txt读书软件 语音 编辑:程序博客网 时间:2024/04/29 06:53
测试方法






第一部分 学院派

一、白盒测试
1.概念:
        在测试类书籍中,白盒测试(White Box Testing)有多种称法,如玻璃盒测试(Glass Box Testing),透明盒测试(Clear BoxTesting),
开放盒测试(Open Box Testing),结构化测试(Structured Testing),基于代码的测试(Code-Based Testing),逻辑驱动测试
(Logisc-Driven Testing)等等。白盒测试是一种测试用例设计方法,白盒,顾名思义即盒子是可视的,可以清楚的看到盒子内部的东西以及内部是
如何运行的,因此白盒测试需要你对系统内部的结构和工作原理有比较清楚的了解,并且基于这个知识来设计你的用例。
        使用白盒测试方法产生的测试用例能够:
1) 保证一个模块中的所有独立路径至少被使用一次;
2) 对所有逻辑值均需测试true和false;
3) 在上下边界及可操作范围内运行所有循环;
4) 检查内部数据结构以确保其有效性。


2.为什么要进行白盒测试?
        问题:“我们应该更注重于保证程序需求的实现,为什么要花费时间和精力来担心和测试逻辑细节?”
答案在于软件自身的缺陷:
a.逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。
    当我们设计和实现主流之外的功能、条件或控制时,错误往往开始出现在我们工作中。日常处理往往被很好地了解,而特殊情况的处理则难于发现。
b.我们经常相信某逻辑路径不可能被执行,而事实上,它可能在正常的基础上被执行。
    程序的逻辑流有时是违反直觉的,这意味着我们关于控制流和数据流的一些无意识的假设可能导致设计错误,只有路径测试才能发现这些错误。
c.笔误是随机的。
    当一个程序被翻译为程序设计语言源代码时,有可能产生某些笔误,很多将被语法检查机制发现,但是,其他的会在测试开始时才会被发现。
    笔误出现在主流上和不明显的逻辑路径上的概率是一样的。“错误潜伏在角落里,聚集在边界上” 而白盒测试则更可能发现他们。


3.白盒测试使用的技术
白盒测试技术一般可被分为静态分析和动态分析两类技术:
1) 静态分析:控制流分析技术、数据流分析技术、信息流分析技术。
2) 动态分析:逻辑覆盖率测试(分支测试,路径测试等)、程序插桩等。

    覆盖率:可以指导测试用例的设计,另一方面可以通过覆盖率来衡量白盒测试的力度(充分性)。白盒测试中经常用到的覆盖率是逻辑覆盖率。

    程序插桩:对程序中的路径和分支测试时,测试的是否充分,我们可以对其进行度量。这就需要用到程序插桩技术。程序插桩好比我们在调试程序
时,常常要在程序中插入一些打印语句。其目的在于希望执行程序时,打印出我们最为关心的信息。进一步通过这些信息了解执行过程中程序的一些
动态特性。比如,程序的实际执行路径,或是特定变量在特定时刻的取值。从这个思想发展出的程序插桩技术能够按用户的要求,获取程序的各种
信息,成为测试工作的有效手段。程序插桩方法简单地说是借助向被测程序中插入操作来实现测试目的的方法。


4.实例


二、黑盒测试

1.概念:
        黑盒测试(Black Box Testing)又叫功能测试(Function Testing),这是因为在黑盒测试中,主要关注被测软件的功能实现,而不是内部逻辑。黑盒测试是与白盒测试截然不同的测试概念,也是在软件测试中使用得最早,最广泛的一类测试。
        在黑盒测试中,被测对象的内部结构,运行情况对测试人员是不可见的,测试人员对被测产品的验证主要是根据其规格说明,验证其与规格的
一致性。就像对一台自动售货机,为了验证其能否自动售出货物,可以指定需要购买的物品,塞入钱币,然后观测售货机能否输出正确的货物并正确
的找零钱。在这个过程中不需要关注自动售货机是如何判断钱币数额、如何选择货物、如何找零钱的,而且作为黑盒测试,恐怕你也无法看到内部
结构。
        黑盒测试试图发现以下类型的错误:
1) 功能错误或遗漏;
2) 界面错误;
3) 数据结构或外部数据库访问错误;
4) 性能错误;
5) 初始化和终止错误;


2.为什么要进行黑盒测试?
        问题:“既然我们已经做了白盒测试,为什么还要进行黑盒测试?是否有这个必要?”

        白盒测试在测试的早期采用,而黑盒测试主要用于测试的后期。黑盒测试故意不考虑控制结构,而是注意信息域(相当于函数的
定义域和值域。白盒相当于已知函数式,而黑盒相当于不知道函数式。)
        黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。黑盒测试用于回答以下问题:
a.如何测试功能的有效性?
b.何种类型的输入会产生好的测试用例?
c.系统是否对特定的输入值尤其敏感?
d.如何分割数据类的边界?
e.系统能够承受何种数据率和数据量?
f.特定类型的数据组合会对系统产生何种影响?

        运用黑盒测试方法,可以导出满足以下标准的测试用例集合:
1) 所设计的测试用例能够减少达到合理测试哦所需的附加测试用例数;
2) 所设计的测试用例能够告知某些类型的错误的存在或不存在,而不是仅仅与特定测试相关的错误。


3.黑盒测试使用的技术
        功能测试意味着测试数据的选择和测试结果的解释是以软件的功能属性为基础的。黑盒测试不应当由程序的作者来完成,而应当由第三方来执行。
尽管黑盒测试是围绕着用户需求文档进行的,但是黑盒测试不一定必须要用户来参与测试。在绝大多数没有用户参与的黑盒测试中,常见的测试有:
功能性测试,容量测试,安全性测试,负载测试,恢复性测试,标杆测试,稳定性测试,可靠性测试等。



4.实例


三、灰盒测试


1.概念
        白盒和黑盒这两类测试是从完全不同的出发点,并且是两个完全对立点,反映了事物的两个极端,两种方法各有侧重,不能
替代。但是这两种方法其实是难以完全分离的。灰盒测试就是介于白盒和黑盒之间的测试手段。
        集成测试就是灰盒测试的一种,灰盒往往将功能模块或功能模块组合(对外称为服务)作为着眼点,融合白盒、黑盒技术。


2.为什么要进行灰盒测试?

3.灰盒测试使用的技术

4.实例





四、静态测试与动态测试


1 静态测试
        静态分析是一种不通过执行程序而进行测试的技术。

2 动态测试
        动态测试指程序在受控的环境下使用特定的期望结果进行正式的运行。




第二部分:草根派

一、黑灰盒与白盒测试

二、静态与动态测试




注:

0 0
原创粉丝点击