软件测试-4
IEC60601-1-4软件测试

医疗器械软件标准及测试本文作者任海萍女士,博士、国家食品药品监督管理局中检所医疗器械质量监督检验中心;奚廷斐先生,主任、研究员、博士生导师,中国生物医学工程学会常务理事、生物材料分会主任委员,人工器官分会副主任委员,全国医疗器械生物学评价标准化技术委员会主任委员;汤京龙先生,助理研究员; 王硕先生、王建宇先生,实习研究员; 陆颂芳女士,主任技师。
关键词: 医疗器械软件标准测试一概述随着计算机技术的发展,越来越多的医用电气设备中使用了计算机软件技术,其安全性是非常重要的,而它的复杂性超过了那些单纯的治疗和/或诊断医用电气设备。
同时,越来越多的软件被用于在医疗监视下对患者进行诊断、治疗或监护。
医疗器械的许多重要功能,越来越多地依靠软件进行控制,因此,医疗器械中软件错误导致的后果可能非常严重。
而软件产品可能在六个月内就已经过时了。
从而,在医疗器械生产企业和管理部门之间存在着矛盾: 生产企业必须尽快使新的含软件器械上市,但同时,管理部门必须保护公众免受与软件相关的器械故障造成的危害。
2003年开始,我国国家食品药品监督管理局将相关软件纳入了医疗器械管理。
软件质量已成为大家共同关注的焦点。
由于我国目前医疗器械管理的技术基础主要是产品的第三方测试,因此,软件测试是否充分、有效,直接影响到软件产品的质量,也影响着是否能够对医疗器械软件进行有效管理。
但是,由于软件产品的特殊性,我国至今尚未形成医疗器械软件产品测试的国家标准和行业标准。
本文通过对美国FDA的医疗器械软件管理、软件工程以及软件测试情况的介绍,希望能为我国加强医疗器械软件的管理、尽快制定技术标准提供参考。
二软件的特殊性美国FDA对于作为医疗器械组件、部件或附件的软件、本身就是医疗器械的软件(例如模拟重建血管系统软件)、加工制造医疗器械时使用的软件(例如加工器械时使用的逻辑控制程序)以及器械制造商在质控系统中所使用的软件(例如记录和保存器械历史记录的软件)都根据其特定的使用要求进行验证。
软件测试笔试题4

软件测试工程师笔试题目一.填空1、系统测试使用( C )技术, 主要测试被测应用的高级互操作性需求, 而无需考虑被测试应用的内部结构。
A、单元测试B、集成测试C、黑盒测试D、白盒测试2、单元测试主要的测试技术不包括(B )。
A、白盒测试B、功能测试C、静态测试D、以上都不是3、(A )的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。
A、系统测试B、集成测试C、单元测试D、功能测试4、如果一个产品中次严重的缺陷基本完成修正并通过复测,这个阶段的成品是( A )。
A、Alpha版B、Beta版C、正版D、以上都不是5、自底向上法需要写(A )。
A、驱动程序B、桩程序C、驱动程序和桩程序D、 .以上都不是6、测试ATM取款功能,已知取款数只能输入正整数,每次取款数要求是100的倍数且不能大于500,下面哪个是正确的无效等价类(C)A、(0,100)、(100,200)、(200,300)、(300,400)、(400,500)、(500,+∞);B、(500,+∞)C、(500,+∞)、任意大于0小于500的非100倍数的整数;D、(-∞,100)、(100,200)、(200,300)、(300,400)、(400,500)、(500,+∞);7、因果图/判定表工程方法在以下那种情况下不适用(C)A、输入输出明确,或输入输出因果关系明确的情况下B、被分析的特性或功能点复杂,输入项目很多的情况下C、系统输入之间相互约束多,需要做大范围的组合测试情况下D、系统输入之间基本没有相互联系8、以下说法不正确的是(D)A、测试原始需要明确了产品将要实现了什么B、产品测试规格明确了测试设计内容C、测试用例明确了测试实现内容D、以上说法均不正确9、可测试性中,有关系统可观察性的理解,下面说法那个是错误的( B)A、系统所有的输出结果可观察,错误输出易于识别;B、系统运行状态和内部处理的过程信息可观察;C、系统内部变量名及其取值可观察;D、系统内部重要对象的状态和属性可观察;E、系统内部重要的操作的处理时间可观察;F、系统内部重要的资源的占用情况及单个资源的创建、保持、释放过程可观察10、测试脚本的编写规范强调:(ABCD )A、可读行B、可重用性C、可维护性D、可移植性11、当继承某个特性是,通常会从哪些角度对该特性进行测试分析?(AC )A、失效影响度B、成熟度C、继承方式D、用户原始需求12、从下列关于软件测试的叙述中,选出正确的叙述(CD)A、用黑盒法测试时,测试用例是根据程序内部逻辑设计的B、测试的目的是验证该软件已正确的实现了用户的要求C、发现错误多的程序块,残留在模块中的错误也多D、测试设计时,应充分考虑异常的输入情况13、软件验收测试的合格通过准则是:(ABCD)A.软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。
hw软件测试(周)4

试,其功能分解如图:
自顶向下集成
自顶向下的集成测试就是按照系统层次结构 图,以主程序模块为中心,从顶层控制(主控模 块)开始,自上而下按照深度优先或者广度优先 策略,对各个模块一边组装一边进行测试。
自顶向下集成测试的步骤:
1. 以主模块为被测试模块,主模块的直接下属模块 则用桩模块来代替。 2. 采用深度优先或宽度优先策略,用实际模块替换 相应的桩模块(每次仅替换1个或少量几个), 它们的直接下属模块则用桩模块来代替,与已测 试的模块或子系统集成为新的子系统。 3. 对新形成的子系统进行测试。 4. 若所有的模块都已集成到系统中,则结束集成, 否则转步骤2。
自底向上集成 自底向上集成是从系统层次结构图的最底层模 块开始按照层次结构图,逐层向上进行组装和集 成测试的方式。
自底向上集成测试的步骤: 1. 为最底层模块开发驱动模块,对最底层模块进行 测试; 2. 用实际模块替换驱动模块,与其直属子模块集成 为一个子系统; 3. 为新形成的子系统开发驱动模块,对该子系统进 行测试; 4. 若该子系统已对应为主控模块,则结束集成,否 则转步骤2;
单元测试的目的 验证代码能否达到详细设计的预期要求。
发现代码中不符合编码规范的地方。
准确定位发现的错误,以便排除错误。
单元测试环境
由于一个模块或一个方法(Method)并不是一 个独立的程序,在考虑测试它时要同时考虑它和外 界的联系,因此要用到一些辅助模块,来模拟与所 测模块相联系的其他模块。一般把这些辅助模块分 为两种: 1、驱动模块(driver):相当于所测模块的主程序。 2、桩模块(stub):用于代替所测模块调用的子 模块。 那么,所测模块和与它相关的驱动模块及桩模 块共同构成了一个“测试环境”。
4-软件测试依据和规范

Zhu.Kerry@
ISO 软件质量标准思想
控制思想,即对产品形成的全过程进行控制.任何事物 控制思想 都是由一个或多个过程活动的结果,只要对产品形成的全 过程进行控制并达到过程质量要求,最终产品的质量就有 了保证 预防的思想.通过对产品形成的全过程进行控制以及建 预防的思想 立并有效运行自我完善机制达到预防不合格,从根本上减 少或消除不合格品
GB/T GB/T GB/T GB/T GB/T GB/T GB/T GB/T GB/T GB/T GB/T GB/T GB/T GB/T GB/T
6583-1994 19000.1-1994 19000.2-1994 19000.3-1994 19001-1994 19002-1994 19003-1994 19004.1-1994 19004.2-1994 19004.3-1994 19004.4-1994 19021.1-1993 19021.2-1993 19021.3-1993 19022.1-1994
BP/MM/SK - ERISA Specialists CR - Case Managers 85 Th
Import data to ASC
Review and scrub data in ASC
Data complete and accurate?
Yes
To Page 2
Zhu.Kerry@
ISO 软件质量标准结构
ISO9000系列标准的主体部分分为两组: 系列标准的主体部分分为两组: 系列标准的主体部分分为两组 "需方对供方要求质量保证"的标准ISO9001-9003 "供方建立质量保证体系"的标准ISO9004
ISO9001:设计/开发,生产,安装和服务中质量保证模式; ISO9002:生产和安装中的质量保证模式; ISO9003:最终检验和测试中的质量保证模式; ISO9004:质量管理和质量体系要素导则.
软件测试4-黑盒测试1判定表法

器,并且维修记录不全或已运行10 年以上的机器,应给予优先的维修 处理……”
请建立决策表。
例:维修机器问题(续)
(1)列出所有的条件桩和动作桩
条件桩
C1:功率大于50马力吗? C2:维修记录不全吗? C3:运行超过10年吗?
动作桩
A1:进行优先处理 A2:作其他处理
例:维修机器问题(续)
7 M2 D2 —
8 M2 D3 —
9 M2 D4 —
10 M2 D5 —
X
X
X X X
X
X
X
X X X
续……
此月是12月 此月是2月 此年是闰年
c1:月份在 c2:日期在 c3:年在 行为 a1:不可能 a2:日期增1 a3:日期复位 a4:月份增1 a5:月份复位 a6:年增1
11 M3 D1 —
(2)确定规则个数
输入条件个数:3;
功率大于50马力吗 维修记录不全吗
运行超过10年吗
每个条件的取值:“是”或“否”;
规则个数:2*2*2 =8;
例:维修机器问题(续)
(3)填入条件项;
1 2 3 4 5 6 7 8
功率大于50马力吗?
Y
Y Y
Y
Y N
Y
N Y
Y
N N
N
Y Y
N
4.3.4 案例: NextDate函数
问题描述
程序有三个输入变量month、day、year, 并且满足:1≤month≤12、1≤day≤31、 1900≤ year ≤2050。它们分别作为输入日 期的月份、日、年份,通过程序可以输出 该输入日期在日历上下一天的日期。例如, 输入为2005年11月29日,则该程序的输出 为2005年11月30日。
软件测试第四章--因果图讲解

(4)把因果图转换为决策表。 (5)根据决策表中的每一列设计测试用例。
3.6.3 因果图法测试举例
实例 用因果图法测试以下程序。
程序的规格说明要求:输入的第一个字符必须是#或*, 第二个字符必须是一个数字,此情况下进行文件的修改;如 果第一个字符不是#或*,则给出信息N,如果第二个字符不 是数字,则给出信息M。
和果(输出结果或程序状态的改变),画出因果图。
(2)将得到的因果图转换为判定表。 (3)为判定表中每一列所表示的情况设计一个测试用例。
因果图法的简介(续)
使用因果图法的优点:
(1)考虑到了输入情况的各种组合以及各个输入情况之间的 相互制约关系。
(2)能够帮助测试人员按照一定的步骤,高效率的开发测试 用例。
a
R
b
要求
R约束(要求):a是1时,b必须是1,即a为1时,b不能为0。
因果图(续)
因果图中用来表示约束关系的约束符号:
a
M
b
强制
M约束(强制):若结果a为1,则结果b强制为0。
因果图(续)
因果图中用来表示约束关系的约束符号:
E 异
a
I
b 或
a
a
O
b b
唯一
c
a
a
R
M
要求
b
强制
b
因果图(续)
因果图法最终生成的是决策表。利用因果图生成测试用例的 基本步骤如下:
(1)分析软件规格说明中哪些是原因(即输入条件或输入条 件的等价类),哪些是结果(即输出条件),并给每个原因 和结果赋予一个标识符。
软件测试 第4章动态测试技术-黑盒测试方法

第4章动态测试技术(1)-黑盒测试方法1.黑盒测试概述1.定义:黑盒测试是依据软件的需求规约,设计测试用例,检查程序的功能是否符合需求规约的要求2.测试用例:由测试输入数据和预期结果组成(运行实际结果和预期结果不一致说明存在错误)3.主要的黑盒测试方法有等价类划分边界值分析错误猜测法因果图法判定表测试法基于场景测试法正交试验法比较测试2.等价类划分1.概述:1.1由于不能穷举所有可能的输入数据来进行测试,所以只能选择少量有代表性的输入数据,来揭露尽可能多的程序错误(设计测试用例遵循的原则之一)1.2等价类划分方法将所有可能的输入数据划分成若干个等价类,然后在每个等价类中选取一个代表性的数据作为测试用例的输入数据等价类是指输入域的某个子集,该子集中的每个输入数据对揭露软件中的错误都是等效的,测试等价类的某个代表值就等价于对这一类其他值的测试 也就是说,如果该子集中的某个输入数据能检测出某个错误,那么该子集中的其他输入数据也能检测出同样的错误;反之,如果该子集中的某个输入数据不能检测出错误,那么该子集中的其他输入数据也不能检测出错误例如:判断一个三角形的三条边是否构成等边三角形,那么{1,1,1}、{3,3,3,}、{8,8,8}……都是等效的。
1.3等价类划分方法把输入数据分为有效输入数据和无效输入数据(除测试正常的数据外,还应该测试不正常的数据)1.4有效输入数据指符合规格说明要求的合理的输入数据,主要用来检验程序是否实现了规格说明中的功能1.5无效输入数据指不符合规格说明要求的不合理或非法的输入数据,主要用来检验程序是否做了规格说明以外的事例如:程序判断三角形是否等边三角形,输入a、b、c三条边,如果a=b,b=c,a=c =>等边三角形,{0,0,0}、{-1,-1,-1}属于无效输入数据,不仅要检查正常的数据输入,还应驾车不正常的数据输入1.6在确定输入数据等价类时,常常还要分析输出数据的等价类,以便根据输出数据等价类导出输入数据等价类2.等价类划分设计测试用例的步骤2.1确定等价类根据软件的规格说明,对每一个输入条件(通常是规格说明中的一句话或一个短语)确定若干个有效等价类和若干个无效等价类可使用如下表格3.确定等价类的规则:3.1如果输入条件规定了取值范围,则可以确定一个有效等价类(输入值在此范围内)和两个无效等价类(输入值小于最小值及大于最大值)例如,规定输入的考试成绩在0..100之间,则有效等价类是“0 ≤成绩≤100”,无效等价类是“成绩<0”和“成绩>100”3.2如果输入条件规定了值的个数,则可以确定一个有效等价类(输入值的个数等于规定的个数)和两个无效等价类(输入值的个数小于规定的个数和大于规定的个数) 例如,规定输入构成三角形的3条边,则有效等价类是“输入边数= 3”,无效等价类是“输入边数<3”和“输入边数>3”3.3如果输入条件规定了输入值的集合(即离散值),而且程序对不同的输入值做不同的处理,那么每个允许的值都确定为一个有效等价类,另外还有一个无效等价类(任意一个不允许的值)(例如:交通信号灯“红”、“黄”,“绿”,是输入的集合,输入离散值) 例如,规定输入的考试成绩为优、良、中、及格、不及格,则可确定5个有效等价类和一个无效等价类3.4如果输入条件规定了输入值必须遵循的规则,那么可确定一个有效等价类(符合此规则)和若干个无效等价类(从各个不同的角度违反此规则)例如,在程序语言中对变量标识符规定为“以字母开头的……串”,那么有效等价类是“以字母开头的串”,而无效等价类有“以数字开头的串”、“以标点符号开头的串”…等3.5如果输入条件规定输入数据是整型,那么可以确定三个有效等价类(正整数、零、负整数)和一个无效等价类(非整数)3.6如果输入条件规定处理的对象是表格,那么可以确定一个有效等价类(表有一项或多项)和一个无效等价类(空表)以上只是列举了一些规则,实际情况往往是千变万化的,在遇到具体问题时,可参照上述规则的思想来划分等价类4.设计测试用例4.1在确定了等价类之后,建立等价类表,列出所有划分出的等价类,并为每个有效等价4.24.2.1设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止(一个测试用例覆盖多个有效等价类)4.2.2为每个无效等价类设计一个新的测试用例(无效等价类发现错误的概率比较大,每个无效等价类设计一个测试用例,提供测试的精度)4.3用等价类划分法设计测试用例的实例:某编译程序的规格说明中关于标识符的规定如下:标识符是由字母开头,后跟字母或数字的任意组合构成;标识符的字符数为1~8个;标识符必须先说明后使用;一个说明语句中至少有一个标识符;保留字不能用作变量标识符(例如:if、goto、int、float)4.3.1用等价类划分方法,建立输入等价类表4.3.2下面选取9个测试用例,它们覆盖了所有的等价类3.边界值分析1.概述:1.1边界值分析常用于对其他黑盒测试方法(特别是等价类划分方法)的补充1.2人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。
计算机等级考试软件测试真题第四套

1:参考答案:C 我的答案: 参考解析:(P26)接口分析的目的是评估软件交付物是否正确、一致、完整和准确地说明 了接口需求。接口分析必须关注三种接口:用户接口、硬件接口和软件接口。
试题内容: 以下叙述中正确的是
A:可跟踪性分析是在整体上分析整个系统的资源分配策略
B:关键性分析是标识原始需求和相应开发结果之间关系的能力
C:接口分析必须关注三种接口:用户接口、硬件接口和软件接口
D:评估仅在软件开发的最后阶段进行,以确认产品是否符合规模说明 2:参考答案:D 我的答案:
参考解析:(P109)场景测试方法是基于 IBM 推行的 RUP 的测试用例生成方法。该方法从系 统分析的结果——用例出发,通过对每个用例的场景进行分析,逐步实现测试用例的构造。 试题内容: 场景测试方法是基于 IBM 推行的 RUP 的测试用例生成方法。该方法的出发点是
A:一个测试用例可以调用该类的多个方法,但每个方法只能调用一次
B:一个测试用例只能调用在该类中定义的方法,不能调用在该类的父类中定义的方法
C:由该类方法组成的任何一个序列都是一个合理的测试用例
D:针对一个类的多个实例间协作的测试仍然属于面向对象单元测试的范畴 15:参考答案:B 我的答案:
参考解析:暂无解析 试题内容: 以下关于面向对象软件测试的说法中,错误的是
A:安全性测试
B:GUI 测试
C:功能测试
D:协议一致性测试 5:参考答案:A 我的答案:
参考解析:(P44)静态错误分析有以下几种:类型和单位分析,引用分析等,其中在静态 错误分析中,最广泛使用的技术就是发现引用异常。 试题内容: 检查是否存在“已定义但未使用”的变量引用异常应属于
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.2.2 模块逻辑性测试
(4) 比较错误 小于,大于,等于,不等于,真,假.比较和判断错误 很可能是边界条件问题。 比较判断与控制流常常紧密相关,设计测试用例时还 应考虑是否出现下列问题: 不同数据类型的对象之间进行比较; 错误地使用逻辑运算符或优先级; 因计算机表示的局限性,期望理论上相等而实际 上不相等的两个量相等; 比较运算或变量出错; 循环终止条件或不可能出现; 迭代发散时不能退出; 错误地修改了循环变量。
4.2.2 模块逻辑性测试
[例子4-2]表达式越界。表达式中使用了一个指针, 它已经超出了合理的范围。 Main() { char *a = “test” ; char *b; a+=6; b=&a[6]; return(0); }
4.2.2 模块逻辑性测试
[例子4-3]越界读。 main { char a=“TEST”; char b[20]; memcpy(b,a,sizeof(b)); Return(0); }
模块局部数据结构测试是为了保证临时存储在模块 内的数据在程序执行过程中完整、正确。局部数据结构 往往是错误的根源,应仔细设计测试用例,力求发现下 面几类错误: (1) 不合适或不相容的类型说明; (2)变量无初值; (3)变量初始化或省缺值有错; (4)不正确的变量名(拼错或不正确地截断); (5)出现上溢、下溢和地址异常。
静态白盒测试优点
(1)节约开发宝贵时间和昂贵的人力资源。 (2)越早发现错误就更容易也更便宜地解决问题。 (3)减少持续成本。 (4)使程序员编程技术受益。通过提醒程序员在 编译过程中所出现的编写陷阱,错误,使之受 益。 (5)提高顾客对产品的满意度,更是极其重要。 (6)一个质量完好的产品,卓有成效地缩短了进 入市场所需时间,将加强企业产品竞争力,和 收益能力。
4.2.2 模块逻辑性测试
[例子4-4] 数组越界。 main() { int junk; char a[10]; strcpy(a,”A simple test”); retutn(0); }
4.2.2 模块逻辑性测试
[例子4-6] 表达式中使用”野指针”。野指针是指向一个不能确认的内存 块,通常由两种情况引起,其一是代码中使用了一个指向明确的内存块; 其二是只编了一部分模块,缺少足够的信息。 Union { int ptr int ival } u ; Main() { int I = 123 ,j = 345; u. Ptr = &i; u ivai = i; If (u.ptr > &j) //两个地址比较 u.ptr = &j ; Return (0) ; }
4.2.2 模块逻辑性测试
8. 内存处理的逻辑错误 内存处理的逻辑错误有:无效参数,空循环体,代码没有被执行到,代 码执行没效果,未使用的变量等。 [例子4-10] 数组参数是NULL。 Int fix( a) { Int a[]; Return 12; } Int *array; Main() { Fix (array); //array值不确定 Retutn(0); }
4.2.1 模块规范性测试
对于结构化程序,给出模块功能清单如表4-1 所示。 表4-1 模块功能清单
模块号
函数或者过程名
功能描述
4.2.1 模块规范性测试
对于面向对象的程序,给出类结构清单如表 4-2所示。 表4-2 类结构清单
序号
类名
属性名称
方法名称和描述
4.2.2 模块逻辑性测试
检查算法的逻辑正确性,确定算法是否实现了所要求的功 能; 例如下面这样一段代码: if (i<0) & (i>=0) … 这段代码交集为整个数轴,所以IF语句没有必要。 I=0; while(I>100){ J=J+100; T=J*PI; } 在循环体内变量I没有增加,产生了死循环。
4.2.3 模块接口测试
测试接口除了考虑前面“子程序参数错误”的因素 外,如果模块内包括外部输入输出,还应该考虑下 列因素: (1)文件属性是否正确; (2)对于读写文件,文件使用前是否已经打开? OPEN/CLOSE语句是否正确; (3) 是否处理了文件尾; (4)是否处理了输入/输出错误;
4.2.4 模块局部数据结构测试
4.2 静态分析
静态白盒测试就是静态分析,它的 目的是找出源程序中是否存在错误或 “潜在的危险”。 静态分析的手段就是代码检 查, 代码走查依据的是每个公司颁布 的编码规范等技术标准,可以通过事 先 制定好的检查表(CheckList)进行检查。
检查的内容有: (1)模块规范性测试; (2)模块逻辑性测试。包括:变量的类型分 析,引用分析(包括引用异常),表达式 分析(包括数组下标,零除数,负数开方 等)等。 (3)模块接口测试; (4)模块局部数据结构测试; (5) 模块全局数据结构测试;
4.2.2 模块逻辑性测试
[例子4-8]不匹配的参数类型 union { int i double d } data void funcl(ptr){ union data *ptr ptr->i=l; } void func2(int *p) { *p=l ; } Main(){ int t; union data u ; funcl(&u); funcl (&t); /*BAD_PARM*/ func2(&u); /*BAD_PARM*/ func2(&t) ; }
4.内存泄漏 如果一个动态分配的内存不能被释放,我们就 称为”内存泄漏”。 导致内存泄漏的原因有2个:(1)内存使用不 释放;(2)指针被改变造成内存泄漏。 内存的分配语句new和内存释放语句delete必须 匹配,New/delete操作是成对出现的, 否则会导 致内存泄漏,可能对今后的某些编译器不能正常工 作
Байду номын сангаас
4.2.2 模块逻辑性测试
9. 代码规则 [例子4-12] 没有初始化值。 #define comms_up 2 main() { char tool ; printf(“the result is ”,tool+5); } 注意:变量 tool没有初始化。
4.2.2 模块逻辑性测试
[例子4-13]数据转换可能出错,整型和无符号整型 Main() { Int height; Unsighed level; Int correction; Level = height * correction; // error }
4.2.2 模块逻辑性测试
(5)控制流 控制流程错误的原因是编程语言中循环等 控制结构未按预期的方式工作.它们通常由计算或 者比较错误直接或间接造成。 这里应该注意: 循环终止的控制; 是否存在死循环; 循环从不执行; 对于switch---case语句这样的多个分支,是否导 致意外进入循环。
4.2.2 模块逻辑性测试
4.2.2 模块逻辑性测试
7.虚悬指针 7.虚悬指针 虚悬指针是指向刚刚被释放掉的内存块的指针。 通常系统会将释放掉的内存分配给程序中其他部分 的新数据结构,但可能存在一个时间差。 如果你在这部分实际已释放的内存被重新分配 以前读取其数据, 可能其内容还是当前的, 这绝 对是不可靠的; 如果你向其写入数据,则无法保证 下次读取的还是相同的内容。 因此读写已释放的内存块是非常危险的。
4.2.5 模块全局数据结构测试
除了局部数据结构外,如果可能,单元测试时还应 该查清全局数据(例如FORTRAN的公用区)对模 块的影响。 在模块中应对每一条独立执行路径进行测试,单元 测试的基本任务是保证模块中每条语句至少执行一 次。此时设计测试用例是为了发现因错误计算、不 正确的比较和不适当的控制流造成的错误。此时基 本路径测试和循环测试是最常用且最有效的测试技 术。
4.1.2 白盒测试策略
在白盒测试中,可以使用各种测试方法的综合策略: (1)应尽量先用工具进行静态结构分析; (2)采取先静态后动态的组合方式:先进行静态结构分析、代 码检查和静态质量度量,再进行覆盖率测试; 利用静态分析的结果作为引导,通过代码检查和动态 测试的方法对静态分析结果进行进一步的确认,是测试工作 更为有效; 覆盖率测试是白盒测试的重要指标,一般可使用基本 路径测试法达到语句覆盖标准;对于软件的重点模块,应使 用多种覆盖率标准衡量代码的覆盖率; (3)在不同的测试阶段,测试的侧重点不同:在单元测试阶段, 以代码检查、逻辑覆盖为主;在集成测试阶段,需要增加静 态结构分析、静态质量度量;在系统测试阶段,应根据黑盒 测试的结果,采取相应的白盒测试。
软件测试技术与案例实践教程
北京师范大学出版社 主编: 主编: 刘竹林
第4章 静态白盒测试
学习目标: 学习目标: (1)熟悉白盒子测试的方法与策略 (2)掌握静态分析方法 (3)熟悉同行评审的过程
4.1 白盒测试概述
4.1.1 白盒子测试的定义 白盒子测试是基于代码的测试, 通 过程序代码或者通过开发工具找出软件的缺 陷,也称作结构测试或逻辑驱动测试。它的 主要目的是检测软件程序内部结构,程序书 写是否规范、是否按照项目需求规格说明正 常运行;
4.2.1 模块规范性测试
规范性测试是检查代码是否符合公司代码标准。比如, 代码 规范中规定,函数名称一律为动宾结构。 Function NameGet(){ …. } 这是属于不符合开发规范的错误。 检查的方法可以利用分析生成的各种引用表来完 成编码规范的检查。这些引用表包括:标号引用表,变 量引用表,子程序,宏,函数表,等价表(等价语句中 的列出全部变量和标号),常数表(包括数字和字符常 数)。
4.2.2 模块逻辑性测试
3. 数据错误 (1)数据引用错误 引用错误是指使用未经正确初始化用法和 引用方式的变量,常量数组,字符串或记录而 导致的软件错误。 (2)数据声明错误 数据声明错误缺陷产品的原因是不正确地 声明或使用变量和常量。