一、软件測试技术:

黑盒:在不知道程序内部结构,仅仅知道程序结构的情况下採用的測试技术或策略。

白盒:在知道程序内部结构的情况下採用的測试技术或策略。

两种測试方法从不同的角度出发,反映了软件的不同側面。也试用于不同的开发环境。





二、白盒法又称为逻辑覆盖法。眼下经常使用的覆盖法:

    技巧:条件组合覆盖>判定覆盖>语句覆盖

          路径覆盖>判定覆盖>语句覆盖

1、语句覆盖——每一个语句至少运行一次

Test case :  A=2 , B=0 , X=4.

2、判定覆盖(分支覆盖)——每一个判定的分支至少运行一次

Test cases:①A=3 , B=0 , X=3②A=2 , B=1 , X=1

3、条件覆盖——即一个推断语句中往往包括了若干条件。通过给出測试用例,使推断中的每一个条件都获得各种可能的结果。

Test cases:  ①A=2 , B=0 , X=4(满足A>1, B=0; A=2, X>1)

②A=1,B=1, X=1

4、推断/条件覆盖——选取足够多的測试数据。使推断中每一个条件都取得各种可能值。并使每一个推断表达式也取到各种可能的结果。



5、条件组合覆盖——使得每一个推断中条件的各种可能组合都至少出现一次。

三、最少用例计算方法

为实现測试的逻辑覆盖,必须设计足够多的測试用例,并使用这些測试用例运行被測程序,实施測试。

我们关心的是,对某个详细程序来说,至少要设计多少測试用例。这里提供一种估算最少測试用例数的方法。我们知道,结构化程序是由 3 种基本控制结构组成,这 3 种基本控制结构就是:

顺序型——构成串行操作。

选择型——构成分支操作;

反复型——构成循环操作。

为了把问题化简。避免出现測试用例极多的组合爆炸,把构成循环操作的反复型结构用选择结构取代。

也就是说,并不指望測试循环体全部的反复运行,而是仅仅对循环体检验一次。这样。任一循环便改造成进入循环体或不进入循环体的分支操作了。

下图给出了类似于流程图的N-S图表示的基本控制结构(图中A、B、C、D、S均表示要运行的操作,P是可取真假值的谓词,Y表真值,N表假值)。当中图9(c)和图9(d)两种反复型结构代表了两种循环。在作了如上简化循环的如果以后。对于一般的程序控制流。我们仅仅考虑选择型结构。其实它已能体现了顺序型和反复型结构了。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXJwX3NzZHV0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

几个相关帮助理解的练习:

1.例如以下图表达了两个顺序运行的分支结构。

两个分支谓词P1和P2取不同值时,将分别运行a或b及c或d操作。显然,要測试这个小程序,须要至少提供4个測试用例才干作到逻辑覆盖。使得ac、ad、bc及bd操作均得到检验。事实上,这里的4是图中第1个分支谓词引出的两个操作。及第2个分支谓词引出的两个操作组合起来而得到的,即2×2 = 4。而且。这里的2是因为两个并列的操作,1 + 1 = 2 而得到的。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXJwX3NzZHV0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

2.下图表示的程序为例,该程序中共同拥有9个分支谓词,虽然这些分支结构交错起来似乎十分复杂。非常难一眼看出应至少须要多少个測试用例。我们注意到该图可分上下两层:分支谓词1的操作域是上层,分支谓词8的操作域是下层。这两层正像前面简单例中的P1和P2的关系一样。仅仅要分别得到两层的測试用例个数。再将其相乘即得总的測试用例数。

这里须要首先考虑较为复杂的上层结构。谓词1不满足时要作的操作又可进一步分解为两层,这就是图中的子图(a)和(b)。

它们所需測试用例个数分别为1+1+1+1+1
= 5及1+1+1 = 3。

因而两层组合,得到5×3 = 15。于是整个程序结构上层所需測试用例数为1+15 = 16。而下层十分显然为3。故最后得到整个程序所需測试用例数至少为6×3 = 48。

计算方法:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveXJwX3NzZHV0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

testing and SQA_动态白盒測试的更多相关文章

  1. 移动測试技术保护源码!解码全球首款移动端白盒測试工具ThreadingTest (文章转自己主动点科技)

    作者 智晓锋 - 2014/07/14 自从斯诺登曝光美监听丑闻事件之后,我国政府就将信息安全问题上升到了国家安全的高度.基于此.国内的一家创业公司推出了智能型Android真机白盒測试以及开发辅助类 ...

  2. 菜鸟学Java(二十一)——怎样更好的进行单元測试——JUnit

    測试在软件生命周期中的重要性,不用我多说想必大家也都很清楚.软件測试有许多分类,从測试的方法上可分为:黑盒測试.白盒測试.静态測试.动态測试等:从软件开发的过程分为:单元測试.集成測试.确认測试.验收 ...

  3. iOS自己主动化測试的那些干货

    前言 假设有測试大佬发现内容不正确.欢迎指正,我会及时改动. 大多数的iOS App(没有持续集成)迭代流程是这种 也就是说.測试是公布之前的最后一道关卡.假设bug不能在測试中发现,那么bug 就会 ...

  4. 谈谈单元測试之(二):測试工具 JUnit 3

    前言 上一篇文章<为什么要进行烦人的单元測试?>讨论了一下现阶段软件开发中,程序猿们測试情况的现状.这篇文章中,我打算介绍一下单元測试的工具(插件).而且推荐大家以后在开发中,真正的用上单 ...

  5. SWTBOK測试实践系列(4) -- 软件測试技术的黑白之道

    白盒測试和黑盒測试往往是项目中最受争议的两种測试类型,每一个人偏爱各不同.现实生活中行业人员大多喜欢白盒測试而忽视黑盒測试,那么项目中又应该怎样平衡这两类測试呢?我们先来看两个案例. 案例一: 某移动 ...

  6. SWTBOK測试实践系列(5) -- 项目中使用手动和自己主动化的策略

    手动測试和自己主动化測试永远是一个非常热门的话题.自己主动化也一直被人们捧上神坛.自己主动化測试和手动測试从技术上来说本质事实上都是測试用例设计.仅仅只是终于形式一个是人工运行,一个是代码运行罢了.这 ...

  7. 【金阳光測试】大话Android自己主动化測试--Android自己主动化系列(1)--金阳光于2013年4月份

    Android自己主动化測试框架和工具在四年多的发展日趋成熟. 从五年前的第一代自己主动化架构演进到眼下第四代(本系列讲座第7篇后将具体剖析第三代和第四代自己主动化框架)从曾经最早谷歌推崇的monke ...

  8. 利用Continuous Testing实现Eclipse环境自己主动单元測试

    当你Eclipse环境中改动项目中的某个方法时,你可能因为各种原因没有执行单元測试,结果代码提交,悲剧就可能随之而来. 所幸infinitest(http://infinitest.github.io ...

  9. mini2440驱动奇谭——ADC驱动与測试(动态挂载驱动)

    博客:http://blog.csdn.net/muyang_ren 实现功能:开发板动态载入adc驱动模块并能通过測试程序 系统:Ubuntu 14.04     驱动交叉编译内核:linux-2. ...

随机推荐

  1. javascript addEventListener方法

    addEventListener是一个侦听事件并处理相应的函数. DOM方法 addEventListener() 和 removeEventListener()是用来分配和删除事件的函数. 这两个方 ...

  2. Java学习JVM搞搞Jconsole呗

    无意间翻到这条博客:http://www.blogjava.net/zhvfeng/archive/2010/08/04/327956.html 这里还有个讲解的:http://www.kafka01 ...

  3. Valera and Tubes

    C. Valera and Tubes time limit per test 1 second memory limit per test 256 megabytes input standard ...

  4. RTSP 消息拼装实例代码

    整理了下之前文章提到的RTSP实例的代码,主要是拼装各类消息字段. 首先,抽取一个公共函数,用来根据消息类型,生成不同的format,供sprintf试用. char * GetRTSPCmd( co ...

  5. RPC 的概念模型与实现解析(转)

    今天分布式应用.云计算.微服务大行其道,作为其技术基石之一的 RPC 你了解多少?一篇 RPC 的技术总结文章,数了下 5k+ 字,略长,可能也不适合休闲的碎片化时间阅读,可以先收藏抽空再细读:) 全 ...

  6. ORACLE 中的一些特殊符号

    oracle通配符,运算符的使用 用于where比较条件的有: 等于:=.<.<=.>.>=.<> 包含:in.not in exists.not exists 范 ...

  7. hdu2647 逆拓扑,链式前向星。

    pid=2647">原文地址 题目分析 题意 老板发工资,可是要保证发的工资数满足每一个人的期望,比方A期望工资大于B,仅仅需比B多1元钱就可以.老板发的最低工资为888元.输出老板最 ...

  8. Twenty Newsgroups Classification实例任务之TrainNaiveBayesJob(一)

    接着上篇blog,继续看log里面的信息如下: + echo 'Training Naive Bayes model' Training Naive Bayes model + ./bin/mahou ...

  9. Xamarin 安装教程 支持Visual Studio 2013

    本文的前提是你已经正确的安装了VS 2013. 本文的全部步骤在Win7 Ultimate 64系统上測试通过.支持VS 2013,我用的版本号是VS 2013 update2. 安装 1.      ...

  10. 【Access2007】将Excel表导入到Access2007在现有的表成

    将Excel表导入到Access2007,你会发现邪恶Access2007这将帮助你自己主动创建表.您是否想插入完全没问你到一个现有的表. 然后,我们需要解决这个问题: 一.常的步骤先将Excel表导 ...