白盒测试学习笔记

合集下载

白盒测试

白盒测试

判断 M
1 a>0 and b>0 3 N a>1 or c>1 5 N c=b+c
判断 Q
Y 2
c=c/a
Y 4
c=c+1
3.条件覆盖……续2
测试用例 覆盖条 件 具体取值条件
判断 M
1 a>0 and b>0 3 N Y 2 c=c/a
a=2,b=-1,c=-2
T1, F2, a>0,b<=0, T3, F4 a>1,c<=1
计算环形复杂度的方法




环形复杂度以图论为基础,为我们提供了非常有用的软件度量。可用 如下三种方法之一来计算环形复杂度: 控制流图中区域的数量对应于环形复杂度。 给定控制流图G的环形复杂度—V(G),定义为 V(G) = E-N+2 其中,E是控制流图中边的数量,N是控制流图中的节点数量。 给定控制流图G的环形复杂度—V(G),也可定义为 V(G) = P+1 其中,P是控制流图G中判定节点的数量。判定节点是输出边至少2条 以上的节点。
判断 Q
Y 2
c=c/a
Y 4
c=c+1
4.判定-条件覆盖……续2
判断 M
测试用例 a=2,b=1,c=6
覆盖条 覆盖判断 件 T1, T2, M的Y分支和 T3, T4 Q的Y分支
1 a>0 and b>0 3 N Y 2 c=c/a
a=-1,b=-2,c=-3
F1, F2, M的N分支 F3, F4 和Q的N分支
同事审查 公开陈述 检验
路径覆盖
通用代码审查清单
数据引用错误 数据声明错误 计算错误 比较错误 控制流程错误 子程序参数错误 输入、输出错误 其他错误

白盒测试实验心得

白盒测试实验心得

白盒测试实验心得嘿,朋友们!今天咱来聊聊白盒测试实验心得。

你说这白盒测试啊,就像是给程序做了一次超级详细的“体检”。

咱得把它里里外外都看个清楚,每一条代码路径都得走一走,就好像咱走在一条满是岔路的小道上,得把每条路都探个明白。

这可不是个轻松活儿呀!有时候就感觉自己像是在一个巨大的代码迷宫里,找着那正确的出口。

但你可别小瞧了这个过程,这当中的乐趣和收获那可多了去了。

比如说,当你发现一个小小的代码漏洞,就像找到了隐藏在程序里的小怪兽,那种成就感,哇,别提多带劲了!然后你就可以像个英雄一样,把这个漏洞给解决掉,让程序变得更加完美。

做白盒测试还得有耐心,就跟绣花似的,一针一线都不能马虎。

你得仔细地查看每一个细节,不能放过任何一个可能出问题的地方。

这可不是一朝一夕能练成的功夫,得慢慢磨,慢慢练。

有时候遇到一些复杂的代码结构,真的会让人脑袋发懵,这不就跟咱遇到一道特别难解的数学题一样嘛!但咱不能怕呀,得迎难而上,一点点去分析,去理解。

而且呀,做白盒测试还得学会跟团队成员合作。

大家一起讨论,一起找问题,那效率可比自己一个人闷头干高多了。

这就像一群小伙伴一起去探险,互相帮助,互相支持。

你想想看,要是没有白盒测试,那程序上线后出了问题可咋办?那不就跟盖房子没打好地基一样危险嘛!所以说呀,白盒测试可太重要啦!咱再说说这个过程中要注意的点。

首先,得细心细心再细心,可别马马虎虎就过去了。

其次,要不断学习新的知识和技术,不然怎么能应对那些越来越复杂的程序呢?还有啊,要保持好奇心,多问几个为什么,这样才能发现那些隐藏的问题。

总之呢,白盒测试实验就像是一场有趣的冒险,虽然会遇到困难和挑战,但只要咱坚持下去,就一定能收获满满。

咱可不能怕麻烦,要勇敢地去探索,去发现!这就是我对白盒测试的一些心得,你们觉得呢?是不是很有意思呀?。

白盒测试学习个人总结

白盒测试学习个人总结

⽩盒测试学习个⼈总结 如同之前的随笔内容所说,常见的软件测试⽅法中,如果说⿊盒测试就像是⾯对⽤户使⽤所设计出来的测试,那么⽩盒测试,就像是⾯对程序员和软件设计⼈员所设计出来的测试了。

盒⼦,值得就是程序,⽩盒,就像其名字⼀样,程序对测试⽽⾔是透明的。

在测试过程中,程序的输⼊输出,结构,运⾏过程,甚⾄代码等都是透明的。

所以⽩盒测试⼜被称为结构测试或者透明盒测试。

如果说⿊盒测试是在测试程序的使⽤功能的话,那么⽩盒测试就是在检测程序的运⾏机理和过程了。

所以,在对程序进⾏⽩盒测试之前,需要先对程序进⾏抽象化,将其转化为流程图,以⽅便测试。

常见的⽩盒测试⽅法有静态分析测试以及语句覆盖测试等等。

覆盖测试:  语句覆盖是⼀种常见的测试⽅法,即度量被测代码中每个可执⾏语句是否被执⾏到了。

语句覆盖往往只检测与剧中的可执⾏语句部分,所以其代码覆盖率较低,⽽测试过程中所以得可执⾏语句分⽀都得考虑到,所以其效率并不⾼,其优点在于对测试不需要做出太多的设计,执⾏起来简单。

⽽为了解决语句覆盖中重复覆盖的问题,就出现了另⼀种叫做分⽀覆盖的⽅法。

分⽀覆盖⼜称判定覆盖,使得程序中每个判断的取真分⽀和取假分⽀⾄少经历⼀次,即判断的真假均被满⾜。

分⽀覆盖具有⽐语句覆盖更强的测试能⼒,⽽且具有和语句覆盖⼀样的简单性,⽆需细分每个判定就可以得到测试⽤例。

然尔程序往往⼤部分的判定语句是由多个逻辑条件组合⽽成,但是分⽀分⽀覆盖,仅仅判断其整个最终结果,⽽忽略每个条件的取值情况,必然会遗漏部分测试路径。

对分⽀覆盖对应的是条件覆盖。

与分⽀覆盖不同的是,条件覆盖并⾮以分⽀的结果划分,⽽是以分⽀的条件划分。

条件覆盖使得每个判断中的每个条件的可能取值⾄少满⾜⼀次。

条件覆盖要检查每个符合谓词的⼦表达式值为真和假两种情况,要独⽴衡量每个⼦表达式的结果,以确保每个⼦表达式的值为真和假两种情况都被测试到。

⽩盒测试意义: 相对于⿊盒测试⽽⾔,⽩盒测试往往复杂且效率较低。

《白盒测试与OO测试》的重点与难点

《白盒测试与OO测试》的重点与难点
编写目的
被测试单元描述
单元结构
单元流程图/顺序图
测试过程
测试结果
单元测试产品
质量评估
总结
内容二:测试覆盖率
基于状态的覆盖率
基于约束的覆盖率
内容三:单元测试规范
编写本规范的目的
规则使用的人员
单元的划分
参与单元测试的人员、职责等
单元测试采用的单元测试工具
测试代码的书写要求
单元测试中生成文件的命令以及存储的目录结构
重点二:JUnit框架
重点三:子网掩码的作用
难点
难点一:使用JUnit
作业
第一题
从《java环境与OOP、OOAD技术》课程中找出一个类,使用Junit测试框架进行单元测试。
第十五章
主要内容
内容一:传统集成测试方法
非增式测试方法
增式测试方法
方法比较
内容二:面向对象的集成测试
结构集成测试
功能集成测试
内容三:集成测试的方法和步骤
作业
第一题
对照C语言代码检查单,价差一下自己编写的源代码。列出存在的问题。
第四章
主要内容
内容一:逻辑驱动测试-语句覆盖
内容二:逻辑驱动测试-判定覆盖
内容三:逻辑驱动测试-条件覆盖
内容四:逻辑驱动测试-判定-条件覆盖
内容五:逻辑驱动测试-条件组合覆盖
内容六:逻辑驱动测试-路径测试
重点
重点一:本章内容均为重点
读取数据错误
集成错误
重用错误
重点
重点一:测试覆盖率
重点二:单元测试设计原则
重点三:静态百合测试容易发现的问题
难点
难点一:单元测试规范
难点二:单元测试设计原则

白盒测试实验总结

白盒测试实验总结

白盒测试实验总结白盒测试实验报告_三角形白盒测试实验报告——三角形一、实验目的(1)巩固白盒测试技术,能熟练应用控制流覆盖方法设计测试用例;(2)学习测试用例的书写。

二、实验内容判断三角形类型输入三个整数a、b、c,分别作为三角形的三条边,通过程序判断这三条边是否能构成三角形?如果能构成三角形,则判断三角形的类型(等边三角形、等腰三角形、一般三角形)。

要求输入三个整数a、b、c,必须满足以下条件:1≤a≤200;1≤b≤200;1≤c≤200。

要求:为测试该程序的方便,请将三角形判断的算法尽量放入一个函数中。

(1)画出程序的流图;(2)分别以语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖设计测试用例,并写出每个测试用例的执行路径要求:设计测试用例时,每种覆盖方法的覆盖率应尽可能达到100%(3)请采用基本路径测试方法对程序进行测试,并给出具体测试用例信息。

(4)通过你的测试,请总结你所使用测试方法发现的Bug。

三、实验要求(1)根据题目要求编写测试用例(2)撰写实验报告(3)有关的实现程序请附到实验报告中(4)实验报告命名规则:学号后两位+姓名_白盒实验四、实验报告(1)程序代码:(2)程序的流图:(3)语句覆盖;(4)判定覆盖;(5)条件覆盖;(6)判定/条件覆盖;(7)组合覆盖;(8)基本路径覆盖;附录:测试用例书写格式(语句覆盖为例)测试用例表篇二:白盒测试实验报告白盒测试201100300033 王尘堃什么是白盒测试?白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。

这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

白盒测试入门理论

白盒测试入门理论

测试笔记1.白盒法考虑的是测试用例对程序内部逻辑的覆盖程度。

最彻底的白盒法是覆盖程序中的每一条路径,但是由于程序中一般含有循环,所以路径的数目极大,要执行每一条路径是不可能的,只能希望覆盖的程度尽可能高些。

2.为了衡量测试的覆盖程度,需要建立一些标准,目前常用的一些覆盖标准从低到高分别是:⏹语句覆盖:是一个比较弱的测试标准,它的含义是:选择足够的测试用例,使得程序中每个语句至少都能被执行一次。

它是最弱的逻辑覆盖,效果有限,必须与其它方法交互使用。

⏹判定覆盖(也称为分支覆盖):执行足够的测试用例,使得程序中的每一个分支至少都通过一次。

判定覆盖只比语句覆盖稍强一些,但实际效果表明,只是判定覆盖,还不能保证一定能查出在判断的条件中存在的错误。

因此,还需要更强的逻辑覆盖准则去检验判断内部条件。

⏹条件覆盖:执行足够的测试用例,使程序中每个判断的每个条件的每个可能取值至少执行一次;条件覆盖深入到判定中的每个条件,但可能不能满足判定覆盖的要求。

⏹判定/条件覆盖:执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。

判定/条件覆盖有缺陷。

从表面上来看,它测试了所有条件的取值。

但是事实并非如此。

往往某些条件掩盖了另一些条件。

会遗漏某些条件取值错误的情况。

为彻底地检查所有条件的取值,需要将判定语句中给出的复合条件表达式进行分解,形成由多个基本判定嵌套的流程图。

这样就可以有效地检查所有的条件是否正确了。

⏹条件组合覆盖:执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。

这是一种相当强的覆盖准则,可以有效地检查各种可能的条件取值的组合是否正确。

它不但可覆盖所有条件的可能取值的组合,还可覆盖所有判断的可取分支,但可能有的路径会遗漏掉。

测试还不完全。

3.白盒测试的主要方法:逻辑驱动测试a)语句覆盖:语句覆盖就是设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次;b)判定覆盖(也称为分支覆盖):设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次;c)条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次;d)判定/条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的所有可能取值至少执行一次,并且每个可能的判断结果也至少执行一次,换句话说,即是要求各个判断的所有可能的条件取值组合至少执行一次;e)条件组合覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判断的所有可能的条件取值组合至少执行一次;基本路径测试设计足够多的测试用例,运行所测程序,要覆盖程序中所有可能的路径。

白盒测试的最佳实践经验总结与分享

白盒测试的最佳实践经验总结与分享白盒测试,又称为结构测试或透明盒测试,是软件测试中一种重要的测试方法。

它通过对软件内部结构、逻辑和代码的测试,以验证软件的正确性、可靠性和安全性。

在这篇文章中,将总结和分享一些关于白盒测试的最佳实践经验,帮助读者更好地理解和应用这一测试方法。

一、需求分析与设计在进行白盒测试之前,充分理解和掌握软件需求是至关重要的。

只有确保对需求的准确理解,测试人员才能更有效地设计测试用例和测试方案。

在进行需求分析时,要尽可能详细和全面地了解软件的功能和性能要求。

通过参与需求讨论会议、与开发人员和产品经理沟通等方式,确保对需求的理解准确无误。

在设计测试用例时,要根据需求的复杂程度和优先级进行合理的划分和安排。

对于关键功能和高风险模块,需要重点关注并设计相应的测试用例。

同时,要考虑不同路径、边界条件、异常情况等,并制定相应的测试策略和方案。

二、代码覆盖率分析代码覆盖率是衡量白盒测试质量的重要指标之一。

通过对被测软件源代码的覆盖率进行分析,可以评估测试的全面性和有效性。

在进行代码覆盖率分析时,可以借助专业的代码覆盖率工具,如JaCoCo、Emma等。

这些工具可以在不同的层次上进行代码覆盖率分析,包括语句覆盖、分支覆盖、条件覆盖、路径覆盖等。

通过对代码的不同覆盖率指标进行监测和评估,可以帮助测试人员找到测试用例的不足之处,并进行相应的优化和改进。

三、单元测试与集成测试单元测试是白盒测试中的一项重要内容,其目的是测试软件中最小的可测试单元——函数或方法。

通过编写针对单个函数或方法的测试用例,可以验证其在不同输入和条件下的正确性和稳定性。

在进行单元测试时,要注重边界值和异常情况的覆盖。

这些特殊情况通常是导致软件错误的根源,通过针对这些情况的测试,可以提高软件的健壮性和可靠性。

集成测试是指在软件模块之间进行的测试,目的是验证不同模块之间的接口和数据交换是否正确。

在进行集成测试时,要确保模块之间的数据和状态传递正确无误,并处理好可能存在的兼容性和并发性问题。

02、白盒测试


acd
33
路径覆盖的优缺点
• 路径覆盖是覆盖测试级别最高的测试,但在 实际问题中,一个不太复杂的程序,其路径 数都是一个庞大的数字。要在测试中覆盖这 样多的路径是无法实现的。 • 为解决这一难题,需要进行路径分析,了解 路径数目和基本路径(任意有向边都在路径 中最多出现一次 )数目。同时,要对循环进 行考虑。
13
2.2白盒测试的重点及其对策
• 白盒测试的重点主要体现在五个方面:
– 模块接口测试 – 模块局部数据结构测试 – 模块边界条件测试 – 模块执行路径测试 – 模块出错处理测试。
14
白盒测试的重点
15
模块接口测试
• 模块接口测试重点检查进出模块的数据是否正确。 • 主要检查的内容包括以下几个方面:
abe abe
覆盖条件
-t1,t2,-t3,t4 t1,-t2,t3,-t4
28
条件覆盖优缺点
• 上边两组测试用例第一组测试用例既判定覆 盖,又条件覆盖;第二组测试用例条件覆盖, 但没有判定覆盖。为解决这一矛盾,需要对 条件和分支兼顾。
29
判定/条件覆盖
• 判定/条件覆盖是指选择足够的测试用例, 使得同时满足判定覆盖和条件覆盖; • 判定/条件覆盖要求设计足够多的测试用例, 使得判定中每个条件的所有可能(真/假)至少 出现一次,并且每个判定本身的判定结果(真 /假)至少出现一次。
– 静态白盒测试是指在不执行的条件下有条理地仔细审查软 件设计、体系结构和代码,从而找出软件缺陷的过程。 – 动态白盒测试是指测试运行中的程序,并利用查看代码功 能和实现方式得到的信息来确定哪些需要测试、哪些不需 要测试、如何开展测试,从而设计和执行测试,找出软件 缺陷的过程。
2

白盒测试黑盒测试软件测试(课堂用)(精品)


1
2
3
6
4
7
8
9
11
5 10
Step2 根据流程图画出流图
待测试程序 1
2
3
6
4
7
8
9
11
5 10
用流图表示的
待测试程序
1
2,3
6
7
8
9
节点 边
• 判定-条件覆盖就是设计足够的测试用例,使 得判断中每个条件的所有可能取值至少执行一 次,同时每个判断本身的所有可能判断结果至 少执行一次。换言之,即是要求各个判断的所 有可能的条件取值组合至少执行一次。
To be continue…
判定-条件覆盖
• 测试用例I,II既满足判定覆盖也满足条件覆盖的 要求。严格来讲,合适的条件覆盖测试用例设 计应该做到满足判定/条件覆盖的标准:判定/ 条件覆盖并不比条件覆盖更强。
T4 c
X=X/A
5
T
6
e
X=X+1
7
第一判定表达式: 设条件 A>1 取真 记为T1
假 T1 条件 B=0 取真 记为T2
假 T2 第二判定表达式: 设条件 A=2 取真 记为T3
假 T3 条件 X>1 取真 记为T4
假 T4
条件覆盖要求这8种值都要取到
s
1
a
(A>1) and (B=0)
F
T4 c
点覆盖
• 如果连通图 G 的子图G´是连通的,而且包 含G的所有节点,则称G´是G的点覆盖。
• 与语句覆盖标准相同。
边覆盖
• 如果连通图 G 的子图G´是连通的,而且包 含G的所有边,则称G´是G的边覆盖。

白盒测试总结

白盒测试总结从我参加白盒测试的工作开始,我负责的是一小部分测试代码编写的工作,通过这一段时间代码编写的工作,我学到了如何进行白盒测试测试代码的编写,了解到了白盒测试的方向,知道了白盒测试的步骤,明白了白盒测试的意义、白盒测试的必要性,白盒测试是通过对程序内部结构的分析、检测来寻找问题。

在白盒测试的过程中,我学到了一些白盒测试的知识,并发现了一些自己的不足。

1.白盒测试代码的编写让我了解到了Cunit工具,并学会了如何使用Cunit工具进行代码的编写与检测。

Cunit以静态库的形式提供给用户使用,用户编写程序的时候直接链接静态库。

它提供了一个简单的单元测试框架,并且为常用的数据类型提供了丰富的断言语句支持。

2.通过这段时间的白盒测试工作,我了解到了白盒测试的步骤,首先要根据源程序代码编写测试用例,即编写实用的输入输出数据。

编写用例的过程中,要考虑用例在代码的允许范围内与过界情况下代码的运行情况。

其次根据测试用例进行测试代码的编写工作,在编写测试代码的过程中,要根据测试用例与被测代码分析如何进行测试代码的编写,对被测代码中影响测试代码运行但不影响测试结果的语句要注释掉,同时,要把注释掉的语句和在代码编写过程中如果发现被测代码的问题分别写入“源代码修改说明”和“白盒测试问题单”中。

3.在代码编写中,我发现了一些自己的不足,首先,我的C语言基础不牢,不能很好的解决在编写代码中遇到的一些基础知识问题。

其次,对白盒测试的不了解,使我在代码的编写过程中无法解决遇到许多白盒测试基础问题。

4.学会了一些Excel表格的一些高级使用方法,在测试代码编写结束后,需要对测试代码的运行情况在测试用例中说明一下,需要对问题单进行最后的整理,要把问题单中问题标注到所对应的用例表中,以方便研发人员检测。

根据这段时间的代码编写与学习,我一定程度的了解了自己的缺点与不足,在以后学习工作过程中,我会努力的弥补自己的不足,补习自己的基础知识,争取把自己的工作做到最好。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在白盒测试中,可以使用各种测试方法进行测试。

但是,测试时要考虑以下5个问题:1)测试中尽量先用自动化工具来进行静态结构分析。

2)测试中建议先从静态测试[1]开始,如:静态结构分析、代码走查和静态质量度量,然后进行动态测试,如:覆盖率测试。

3)将静态分析的结果作为依据,再使用代码检查和动态测试的方式对静态分析结果进行进一步确认,提高测试效率及准确性。

4)覆盖率测试是白盒测试中的重要手段,在测试报告中可以作为量化指标的依据,对于软件的重点模块,应使用多种覆盖率标准衡量代码的覆盖率。

5)在不同的测试阶段,测试的侧重点是不同的。

在单元测试阶段:以程序语法检查、程序逻辑检查、代码检查、逻辑覆盖为主。

在集成测试阶段:需要增加静态结构分析、静态质量度量、以接口测试为主。

在系统测试阶段:在真实系统工作环境下通过与系统的需求定义作比较,检验完整的软件配置项能否和系统正确连接,发现软件与系统/子系统设计文档和软件开发合同规定不符合或与之矛盾的地方;验证系统是否满足了需求规格的定义,找出与需求规格不相符或与之矛盾的地方,从而提出更加完善的方案,确保最终软件系统满足产品需求并且遵循系统设计的标准和规定。

验收测试阶段:按照需求开发,体验该产品是否能够满足使用要求,有没有达到原设计水平,完成的功能怎样,是否符合用户的需求,以达到预期目的为主。

1、代码检查代码检查是静态测试的主要方法,它包括代码走查、桌面检查、流程图审查等。

下面通过如下几点来介绍代码检查。

(1)概述代码检查主要检查代码和流图设计的一致性,代码结构的合理性,代码编写的标准性、可读性,代码的逻辑表达的正确性等方面。

它包括变量检查,命名和类型审查,程序逻辑审查,程序语法检查和程序结构检查等内容。

最常见的静态测试是找出源代码的语法错误,这类测试可由编译器来完成。

(2)代码检查的目的代码检查是为达到以下目的:1)检查程序是不是按照某种标准或规范编写的。

2)发现程序缺陷。

3)发现程序产生的错误。

4)检查代码是不是流程图要求的。

5)检查有没有遗漏的项目。

6)使代码易于移植,因为代码经常需要在不同的硬件中运行,或者使用不同的编译器编译。

7)使代码易于阅读、理解和维护。

(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)全部变量的描述要清晰。

(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)格式部分1)嵌套的IF是否正确地缩进。

2)注释是否准确并有意义。

3)使用的符号是否有意义。

4)代码基本上是否与开始时的模块模式统一、一致。

5)是否遵循了全套的编程标准。

(2)入口和出口的连接初始入口和最终出口是否正确。

被传送的参数值是否正确地设置了。

对关键的被调用的模块的意外情况是否有所处理(如丢失、混乱)。

对另一个模块的每一次调用时,全部所需的参数是否传送给每一个被调用的模块。

(3)存储器问题每一个域在第一次使用前是否正确地初始化。

规定的域是否正确。

每个域是否有正确的变量类型声明。

(4)判断及转移用于判断的是否是正确的变量。

是否判断了正确的条件。

每个转移目标是否正确地并且至少执行了一次。

(5)性能性能是否最佳。

(6)可维护性清单格式是否适用于提高可读性。

各个程序块之间是否符合代码的逻辑意义。

(7)逻辑全部设计是否已经实现。

代码所做的是否是设计规定的内容。

每一个循环是否执行了正确的次数。

(8)可靠性对从外部接口采集的数据是否确认过。

(9)内存设计数组或指针的下标是否越界。

是否修改了指向常量的指针的内容。

是否有效地处理了内存耗尽[2]的问题。

是否出现了不规范指针(指针变量没有被初始化、用free或者delete释放了内存之后,忘记将指针设置为Null)。

是否忘记为数组和动态内存赋初值。

用malloc或者new申请内存之后,是否立即检查指针值是否为Null。

(10)关于类的高级特性是否违背了继承和组合的规则。

4、静态结构分析静态结构分析主要是以图形的方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。

静态结构分析是测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据接口、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图等各种图形图表,清晰地标识整个软件的组成结构,便于理解,通过分析这些图表(包括控制流分析、数据流分析、接口分析、表达式分析),检查软件是否存在缺陷或错误。

通过应用程序各函数之间的调用关系展示了系统的结构,这可以通过列出所有函数,用连线表示调用关系和作用来实现。

静态结构主要分析以下内容:1)检查函数的调用关系是否正确。

2)是否存在孤立的函数没有被调用。

3)明确函数被调用的频繁度,对调用频繁的函数可以重点检查。

5、SQL语句测试SQL语句测试分为语句检查和类型转移检查,下面分别介绍。

1.语句检查语句检查必须要检查的十点内容如下:1)每个数据库对象都有拥有者。

2)Table: 是Database的基本单位,由行和列组成,用于存储数据。

3)Data Type: 限制输入到表中的数据类型。

4)Constraint: 有主键、外键、唯一键、缺省和检查5种。

5)Default: 自动插入常量值。

6)Rule: 限制表中列的取值范围。

7)Trigger: 一种特殊类型的存储过程,当有操作影响到它所保护的数据时,它会自动触发执行。

8)Index: 提高查询速度。

9)View: 查看一个或多个表的一种方式。

10)Stored Procedure: 一组预编译的SQL语句,可以完成指定的操作。

2.类型转换检查检查SQL语句的类型转换时,主要避免显示或隐含的类型转换。

6、代码检查的分析与评价下面介绍代码检查的分析与评价主要要注意的问题。

1.功能陈述经代码检查证实了的本软件的功能。

2.缺陷和限制陈述经代码检查测试证实的软件缺陷和限制,说明每项缺陷和限制对软件性能的影响,并说明全部测得的性能缺陷的累积影响。

软件的缺陷和限制如下:1)数据引用错误:指未经正确声明和初始化的变量、常量、数组、字符串或记录而导致的软件缺陷。

相关文档
最新文档