对以下代码怎么进行白盒测试试

如果能够执行完美的黑盒测试,还需要进行白盒测试吗? - 云朵飘飘 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
-----突破自我,突破思维定势,突破昨天!
在才智和智慧不相上下的人群中,你拥有更高的热情,并能坚持下去,那么成功便在更大程度上属于你。
如果能够执行完美的黑盒测试,还需要进行白盒测试吗?
& 11:26:52
/ 个人分类:
&&&:从用户角度出发,根据规格说明设计测试用例,并不涉及程序的内部特性和内部结构,只依靠被测程序输入和输出之间的关系或程序的功能设计测试用例。黑盒测试有两个显著特点:&& (1)黑盒测试与软件的具体实现过程无关,在软件实现的过程发生变化时,测试用例仍然可以用。&& (2)黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总的开发时间。&&& 黑盒测试主要是为了发现以下几类错误: & 1、是否有不正确、遗漏或额外的功能实现?&&& 2、在接口上,输入是否能正确的接受?能否输出正确的结果?& & 3、是否有数据结构错误或外部信息(例如数据文件)访问错误?& & 4、性能上是否能够满足要求?& & 5、是否有初始化或终止性错误?& :已知程序的内部结构,检查内部操作是否按规定执行。主要对程序细节进行严密检验,针对特定条件和循环设计测试用例,对程序的逻辑路径进行测试。通过在程序的不同点检查程序状态,确定实际状态是否与预期的状态一致。&&& 白盒测试主要是想对程序模块进行如下检查: &&1、程序的所有语句至少执行一次。& & 2、对所有的逻辑条件都能至少执行一次。& & 3、在循环的边界和运行的界限内执行循环体。& & 4、测试内部数据结构的有效性,等等。&& 从以上可以看出就算执行了完美的黑盒测试也是无法测试程序内部特定部位,另外当规格说明本身有误,也不能发现问题。而白盒测试能对程序的内部特定部位进行覆盖测试,所以黑盒和白盒测试为互补关系,结合起来进行测试用例的设计更为合理。经验表明,通常在进行时采用白盒测试方法,集成测试采用灰盒测试方法,系统测试采用黑盒测试方法。&&&豆丁微信公众号
君,已阅读到文档的结尾了呢~~
4.白盒测试基础及代码审查
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
4.白盒测试基础及代码审查
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口以下试题来自:
单项选择题除了测试程序外,白盒测试也适用于对()阶段的软件文档进行测试。
B.软件详细设计
C.软件总体设计
D.需求分析
为您推荐的考试题库
您可能感兴趣的试卷
你可能感兴趣的试题
A.tar zxvf文件名
B.COPY文件名
C.CAT文件名
D.VI文件名
A.(1)(2)(3)(4)(5)
B.(2)(3)(5)(6)(8)
C.(1)(2)(4)(6)(8)
D.(1)(3)(5)(7)(8)
C.多重条件
4.判断题 错5.判断题 错白盒测试方法:
1 程序结构分析:
&&&&&&& 程序的结构形式是白盒测试的主要依据。程序结构分析包括:&&&&&&&
&&&&&&& 1、控制流分析:&&&&&&&&&&&&
&&&&&&&&&&& &通过控制流图矩阵来表示程序的控制流程图。
&&&&&&&&&&& &分析程序的控制流是为了使编写出的程序有好的结构。
   &&&& 对于程序结构提出以下4点基本要求,这些要求是写出的程序不应包含:
      ①& 转向并不存在的标号;    
      ②& 没有用的语句标号;
      ③& 从程序入口进入后无法达到的语句;
      ④不能达到停机语句的语句。&
  &&&& 目前主要是通过编译器和程序分析工具来实现程序控制流分析。
&&&&&&& 2、数据流分析:&&&&&&&&&&&&&&
    &数据流分析是分析程序中未定义变量的使用和未曾使用的变量定义。
    &目前通过编译器或程序分析工具通过数据流分析
    &利用数据流分析的结果可以进行代码编译优化。&
&&&&&&& 3、信息流分析&:
    &目前信息流分析主要用在验证程序变量间信息的传输遵循保密要求。
    &信息流分析主要分析输出值跟输入值之间的影响关系。
    &程序的信息流关系,为软件开发和确认提供了十分有益的工具
2 逻辑覆盖:&&
    1、语句覆盖:
      &结构测试是依据被测程序的逻辑结构设计测试用例,驱动被测程序运行完成的测试。
      &结构测试中的一个重要问题是,测试进行到什么地步就达到要求,可以结束测试了。这就是说需要给出结构测试的覆盖准则。
&&&&&&&&&&&&&&&&
     &&& 为方便讨论,我们将结合一程序段加以说明各种逻辑覆盖则:
      IF (( A & 1) AND ( B = 0 ))THEN
        &&&& X = X / A
      IF (( A = 2) OR ( X & 1 ) THEN&&&&&&&&&&&&&&&&&&
        &&&& X = X + 1
    && 其中&AND&和&OR&是两个逻辑运算符。右图给出了它的流程图。a、b、c、d和e是控制流上的若干程序点。&
    && 该程序共有4条语句,其中2条条件判断语句,2条赋值语句。
    &&&& 语句覆盖的含意是,在测试时,首先设计若干个测试用例,然后运行被测程序,使程序中的每个可执行语句至少执行一次。
&&&&&& &&&&& 对于上述程序段,选用的测试用例是:A=2,B=0,X=3& case1&
  &&&&& 则程序按路径a c e执行。这样该程序段的4个语句均得到执行,从而作到了语句覆盖。
    2、判定覆盖:
&   &&&&&& 按判定覆盖准则进行测试是指,设计若干测试用例,运行被侧程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足。
&&&&&&&&&&&&&&& 判定覆盖又称为分支覆盖。
&&&&&&&&    仍以上述程序段为例,若选用的两组测试用例是:&& A=2,B=0,X=3;&&&&&&&&& A=1,B=0,X=1&
   &&&&&&& 则可分别执行路径ace和abd,从而使两个判断的4个分支c、e和b、d分别得到覆盖。
    3、条件覆盖:
&      条件覆盖是指,设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。&&&&&&&&&&&&&&
    4、判定-条件覆盖:
      判定-条件覆盖要求设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。
    5、路径覆盖:
      按路径覆盖要求进行测试是指,设计足够多测试用例,要求覆盖程序中所有可能的路径
    6、测试覆盖准则:
&1、FOSTER的ESTCA覆盖准则
&&&&&&&&& Foster 通过大量的实验确定了程序中谓词最容易出错的部分,得出了一套错误敏感测试用例分析ESTCA (Error Sensitive Test Cases Analysis)规则。事实上,规则十分简单:
    [规则1]& 对于A rel B(rel可以是&, =和&)型的分支谓词,应适当地选择A与B的值,使得测试执行到该分支语句时,A&B, A=B和A&B的情况分别出现一次。
    [规则2]& 对于A rel1 C(rel1可以是&或是&,A是变量,C是常量)型的分支谓词,当rel1为&时,应适当地选择A的值,使:
        & A = C - M
        (M是距C最小的容器容许正数,若A和C均为整型时,M = 1)。同样,当rel1为&时,应适当地选择A,使:
        & A = C + M
    [规则3]& 对外部输入变量赋值,使其在每一测试用例中均有不同的值与符号,并与同一组测试用例中其它变量的值与符合不一致。
3 程序插装:&
    &程序插装方法简单地说是借助往被测程序中插入操作来实现测试目的的方法。
    &程序插装技术能够按用户的要求,获取程序的各种执行过程中的信息,成为测试工作的有效手段。
4 其他白盒测试方法简介:
    1、域测试:
      &域测试的&域&是指程序的输入空间。
      &输入空间又可分为不同的子空间,每一子空间对应一种不同的计算。
      &子空间的划分是由程序中分支语句中的谓词决定的。
      &域测试正是在分析输入域的基础上,选择适当的测试点以后进行测试的。
      &域测试有两个致命的弱点,一是为进行域测试对程序提出的限制过多,二是当程序存在很多路径时,所需的测试点也就很多。
    2、符号测试:
      &符号测试的基本思想是允许程序的输入不仅仅是具体的数值数据,而且包括符号值,这一方法也是因此而得名。
      &普通测试执行的是算术运算,符号测试则是执行代数运算。因此符号测试可以认为是普通测试的一个自然的扩充。
      &从符号测试方法使用来看,问题的关键在于开发出比传统的编译器功能更强,能够处理符号运算的编译器和解释器。
      &目前符号测试存在一些未得到圆满解决的问题,分别是
        1、分支问题
        2、二义性问题
        3、大程序问题
        3、Z路径覆盖
        4、程序变异
    &3.Z路径覆盖:
      &完成路径测试的理想情况是做到路径覆盖,但路径太多。因此对循环机制进行简化,从而极大地减少路径的数量,使得覆盖这些有限的路径成为可能。我们称简化循环意义下的路径覆盖为Z路径覆盖。
      &对于程序中的所有路径可以用路径树来表示
      &设法遍历了所有的叶结点,那就得到了所有的路径,生成每个路径的测试用例,就可以做到Z路径覆盖测试。
   &4.程序变异:
      &程序变异方法与前面提到的结构测试和功能测试都不一样,它是一种错误驱动测试。
      &错误驱动测试方法,是指该方法是针对某类特定程序错误的。
      &错误驱动测试主要有两种,即程序强变异和程序弱变异。
阅读(...) 评论(),英文是White Box&。又称结构测试或者逻辑驱动测试。
  白盒测试是把测试对象看作一个打开的盒子。利用白盒测试法进行时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。
  白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、和路径覆盖。
  白盒测试是知道产品内部过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
  白盒测试常用工具有:Jtest、VcSmith、Jcontract、C++&、CodeWizard、logiscope。
  在中,可以使用各种测试方法进行测试。但是,测试时要考虑以下5个问题:
  1)测试中尽量先用自动化工具来进行静态结构分析。
  2)测试中建议先从静态测试开始,如:静态结构分析、代码走查和静态质量度量,然后进行动态测试,如:覆盖率测试。
  3)将静态分析的结果作为依据,再使用代码检查和动态测试的方式对静态分析结果进行进一步确认,提高测试效率及准确性。
  4)覆盖率测试是白盒测试中的重要手段,在测试报告中可以作为量化指标的依据,对于软件的重点模块,应使用多种覆盖率标准衡量代码的覆盖率。
  5)在不同的测试阶段,测试的侧重点是不同的。
  在阶段:以程序语法检查、程序逻辑检查、代码检查、逻辑覆盖为主。
  在集成测试阶段:需要增加静态结构分析、静态质量度量、以接口测试为主。
  在阶段:在真实系统环境下通过与系统的需求定义作比较,检验完整的软件配置项能否和系统正确连接,发现软件与系统/子系统设计文档和软件开发合同规定不符合或与之矛盾的地方;验证系统是否满足了需求规格的定义,找出与需求规格不相符或与之矛盾的地方,从而提出更加完善的方案,确保最终软件系统满足产品需求并且遵循系统设计的标准和规定。
  验收测试阶段:按照需求开发,体验该产品是否能够满足使用要求,有没有达到原设计水平,完成的功能怎样,是否符合用户的需求,以达到预期目的为主。
  1、代码检查
  代码检查是静态测试的主要方法,它包括代码走查、桌面检查、流程图审查等。下面通过如下几点来介绍代码检查。
  (1)概述
  代码检查主要检查代码和流图设计的一致性,代码结构的合理性,代码编写的标准性、可读性,代码的逻辑表达的正确性等方面。它包括变量检查,命名和类型审查,程序逻辑审查,程序语法检查和程序结构检查等内容。
  最常见的静态测试是找出源代码的语法错误,这类测试可由编译器来完成。
  (2)代码检查的目的
  代码检查是为达到以下目的:
  检查程序是不是按照某种标准或规范编写的。
  发现程序缺陷。
  发现程序产生的错误。
  检查代码是不是流程图要求的。
  检查有没有遗漏的项目。
  使代码易于移植,因为代码经常需要在不同的硬件中运行,或者使用不同的编译器编译。
  使代码易于阅读、理解和维护。
  (3)代码检查需要的文档
  在进行代码检查前应准备好需求文档、程序设计文档、程序的源代码清单、代码编码标准、代码缺陷检查表和流程图等。
  2、代码检查的方式
  代码检查的方式有3种,下面分别介绍。
  1)桌面检查
  桌面检查是程序员对源程序代码进行分析、检验,并补充相关的文档,发现程序中的错误的过程。
  由于程序员熟悉自己的程序,可以由程序员自己检查,这样可以节省很多时间,但要注意避免自己的主观判断。
  2)走查
  走查是程序员和测试员组成的审查小组通过逻辑运行程序,发现问题。小组成员要提前阅读设计规格书、程序文本等相关文档,利用,使程序逻辑运行。
  走查可分为以下两个步骤:
  ① 小组负责人把材料发给每个组员,然后由小组成员提出发现的问题。
  ② 通过记录,小组成员对程序逻辑及功能提出自己的疑问,开会探讨发现的问题和解决方法。
  3)代码审查
  代码审查是程序员和测试员组成的审查小组通过阅读、讨论、分析技术对程序进行静态分析的过程。
  代码审查可分为以下两个步骤:
  ① 小组负责人把程序文本、规范、相关要求、流程图及设计说明书发给每个成员。
  ② 每个成员将所发材料作为审查依据,但是由程序员讲解程序的结构、逻辑和源程序。在此过程中,小组成员可以提出自己的疑问;程序员在讲解自己的程序时,也能发现自己原来没有注意到的问题。
  为了提高效率,小组在审查会议前,可以准备一份常见错误清单,提供给参加成员对照检查。
  在实际应用中,代码检查能快速找到20%~30%的编码缺陷和逻辑设计缺陷,代码检查看到的是问题本身而非问题的征兆。代码走查是要消耗时间的,而且需要知识和经验的积累。
  3、代码检查项目
  下面介绍代码检查项目。
  1.目录文件组织
  目录文件组织要遵循以下原则:
  1)所有的文件名简单明了,见名知意。
  2)文件和模块分组清晰。
  3)每行代码在80个字符以内。
  4)每个文件只包含一个完整模块的代码。
  2.检查函数
  检查函数要遵循以下原则:
  1)函数头清晰地描述了函数的功能。
  2)函数的名字清晰地定义了它所要做的事情。
  3)各个参数的定义和排序遵循特定的顺序。
  4)所有的参数都要是有用的。
  5)函数参数接口关系清晰明了。
  6)函数所使用的算法要有说明。
  3.数据类型及变量
  数据类型及变量要遵循以下原则:
  1)每个数据类型都有其解释。
  2)每个数据类型都有正确的取值。
  3)数据结构尽量简单,降低复杂性。
  4)每一个变量的命名都明确地表示了其代表什么。
  5)所有的变量都?皇褂谩?
  6)全部变量的描述要清晰。
&&4.检查条件判断语句
  检查条件判断语句要遵循以下原则:
  1)条件检查和代码在程序中清晰表露。
  2)if/else的使用正确。
  3)数字、字符和指针判断明确。
  4)最常见的情况优先判断。
  5.检查循环体制
  检查循环体制要遵循以下原则:
  1)任何循环不得为空。
  2)循环体系清晰易懂。
  3)当有明确的多次循环操作时使用for循环。
  4)循环命名要有意义。
  5)循环终止条件清晰。
  6.检查代码注释
  检查代码注释时要遵循以下原则:
  1)有一个简单的关于代码结构的说明。
  2)每个文件和模块都要有相应的解释。
  3)源代码能够自我解释,并且易懂。
  4)每个代码的解释说明要明确地表达出代码的意义。
  5)所有注释要具体、清晰。
  6)所有无用的代码及注释要删除。
  7.桌面检查
  进行桌面检查时要注意以下问题:
  1)检查代码和设计的一致性。
  2)代码对标准的遵循、可读性。
  3)代码逻辑表达的正确性。
  4)代码结构的合理性。
  5)程序编写与编写标准的符合性。
  6)程序中不安全、不明确和模糊的部分。
  7)编程风格问题等。
8.其他检查
  检查包括如下内容:
  1)软件的扩展字符、编码、兼容性、警告/提示信息。
  2)检查变量的交叉引用表:检查未说明的变量和违反了类型规定的变量,以及变量的引用和使用情况。
  3)检查标号的交叉引用表:验证所有标号的正确性。
  4)检查子程序、宏、函数:验证每次调用与所调用位置是否正确,调用的子程序、宏、函数是否存在,参数是否一致。
  5)等价性检查:检查全部等价变量的类型的一致性。
  6)常量检查:确认常量的取值和数制、数据类型。
  7)标准检查:检查程序中是否有违反标准的问题。
  8)风格检查:检查程序的设计风格。
  9)比较控制流:比较设计控制流图和实际程序生成的控制流图的差异。
  10)选择、激活路径:在设计控制流图中选择某条路径,然后在实际的程序中激活这条路径,如果不能激活,则程序可能有错。
  11)补充文档:根据以上检查项目,可以编制代码规则、规范和检查表等作为测试用例。
  12)对照程序的规格说明,详细阅读源代码,比较实际的代码,从差异中发现程序的问题和错误。
  13)检查必须遵守规定代码的语法格式和规则(如排版、注释、标识符命名、可读性、变量、函数、过程、可测性、程序效率、质量保证、代码编辑、编译、审查、代码测试、维护、宏)等各方面的编码要求。
  在进行人工代码检查时,可以制作代码走查缺陷表。在缺陷检查表中,我们列出工作中遇到的典型错误,如下所示:
  (1)格式部分
  嵌套的IF是否正确地缩进。
  注释是否准确并有意义。
  使用的符号是否有意义。
  代码基本上是否与开始时的模块模式统一、一致。
  是否遵循了全套的编程标准。
  (2)入口和出口的连接
  初始入口和最终出口是否正确。
  被传送的参数值是否正确地设置了。
  对关键的被调用的模块的意外情况是否有所处理(如丢失、混乱)。
  对另一个模块的每一次调用时,全部所需的参数是否传送给每一个被调用的模块。
  (3)存储器问题
  每一个域在第一次使用前是否正确地初始化。
  规定的域是否正确。
  每个域是否有正确的变量类型声明。
  (4)判断及转移
  用于判断的是否是正确的变量。
  是否判断了正确的条件。
  每个转移目标是否正确地并且至少执行了一次。
(5) 性能
性能是否最佳。
(6) 可维护性
清单格式是否适用于提高可读性。
各个程序块之间是否符合代码的逻辑意义。
(7) 逻辑
全部设计是否已经实现。
代码所做的是否是设计规定的内容。
每一个循环是否执行了正确的次数。
(8) 可靠性
对从外部接口采集的数据是否确认过。
(9) 内存设计
数组或指针的下标是否越界。
是否修改了指向常量的指针的内容。
是否有效地处理了内存耗尽的问题。
是否出现了不规范指针(指针变量没有被初始化、用free或者delete释放了内存之后,忘记将指针设置为Null)。
是否忘记为数组和动态内存赋初值。
用malloc或者new申请内存之后,是否立即检查指针值是否为Null。
(10)& 关于类的高级特性
是否违背了继承和组合的规则
2.2.4 静态结构分析
静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。
静态结构分析是测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据接口、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图等各种图形图表,清晰地标识整个软件的组成结构,便于理解,通过分析这些图表(包括控制流分析、数据流分析、接口分析、表达式分析),检查软件是否存在缺陷或错误。
通过应用程序各函数之间的调用关系展示了系统的结构,这可以通过列出所有函数,用连线表示调用关系和作用来实现。静态结构主要分析以下内容:
1)检查函数的调用关系是否正确。
2)是否存在孤立的函数没有被调用。
3)明确函数被调用的频繁度,对调用频繁的函数可以重点检查。
阅读(...) 评论()}

我要回帖

更多关于 白盒测试要写代码吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信