软件测试实用技术与常用模板(第2版)
上QQ阅读APP看书,第一时间看更新

2.2 白盒测试的要求

2.2.1 软件各层公用测试的要求

软件各层公用测试的主要问题介绍如下。

1.检查代码与设计对照表

检查代码与设计对照表要重点注意如下4点:

● 按软件需求检查CRC设计文档是否完全地实现了所有CRC卡中规定的内容,CRC设计文档是否完备、没有错误。

● 按软件需求检查UI设计文档是否完全地实现了所有UI设计的规定要求,UI设计文档是否完备、没有错误。

● 按软件需求检查编码对照表设计文档是否完全地实现了软件所规定的内容,该文档是否完备、没有错误。

● 检查代码名、代码位数、代码含义、姓名、编号、删除、追加、修改是否实现设计规定的要求。

2.检查数据库

检查是否按软件需求创建了所需的数据库,数据库的内容是否正确、完备、没有错误。

3.检查调用程序参数返回值

检查调用程序参数返回值的类型、个数、顺序及返回值是否正确、没有错误。

4.检查调用程序公用接口

确定调用程序公用接口没有错误,数据类型、个数、顺序及返回值正确。

5.检查子系统的设计

检查子系统的设计要重点注意如下5点:

● 主要功能。

● 主要流程。

● 输入内容。

● 输出内容。

● 交接口方式。

6.检查数据库设计

检查数据库设计要重点注意如下4点:

● 数据库的主要内容。

● 数据库的逻辑划分。

● 数据库的安全措施。

● 数据库更新备份与恢复方式。

7.检查系统目标

检查系统目标要重点注意如下问题和交付的结果。

(1)问题

● 系统目标是否已加以形式定义?还是它们被不严格地描述并且须经过解释或以后再定义?

● 新系统对该机构的基本操作是否会有重要影响?

● 新系统是否将代替现有系统?若是,那么当前的系统已经使用了多久?在它之前还有多少其他系统?

● 是否指望新系统重新安排或删除任何工作职责?若是,这个问题的敏感程度如何?

● 是否要求一个临时的系统来满足即时的目的或者消除与现有系统有关的不可容忍的问题?

● 对该项目可以分配什么资源?

● 所指望的新系统与技术发展水平密切到怎样的程度?

● 用户对于训练和开始工作能够分配多少时间?在什么阶段时间里?

(2)交付的结果

● 系统目标的一个综合叙述。

● 所要求项目工作的一般范围和等级的叙述,包括初步价格和资源估计。

● 从改变、消除或替代几方面考虑的当前系统的叙述。

● 所指望的项目阶段划分和对项目的总体协调方法的总描述。

● 由该系统引起的预料的机构改变的程度和影响的初步陈述。

● 在这个所要求的系统中每个参与的用户部门和主要用户组的作用及职责的注释。

8.检查数据元素的结构

检查数据元素的结构要重点注意如下问题和交付的结果。

(1)问题

● 当前的数据元素、文卷、表格、过程等是否完全编制了文件资料?

● 当前的数据元素和结构是否合理、一致和可应用?

● 数据库清晰到什么程度?

● 用户是否有一张他们希望在新系统中见到的新数据元素表?增加这些数据元素是否可行?

● 在现有系统的数据库和该机构中其他应用的数据库之间有多大的冗余?对于数据库的任何元素,任何其他应用是否为一个更合理的存储?

● 为了适用新系统需要,当前的数据结构是否具有足够的灵活性?

● 把当前数据库换成一个新的数据库会有多少困难?为了完成一个没有错误的转换将需要多少出错测试?

● 在现有数据库中通常要进行多少维护?

● 来自这个数据库的大批数据文件是否能够或应该转换?

● 当前数据库中有多少是实际使用的?谁在使用?

● 在数据文卷方面曾遇到什么重要的故障和错误?对它们是怎样处理的?

● 该数据库修改了多少次?采用了什么方法?

(2)交付的结果

● 所有数据元素、文卷和支撑性数据结构的一组综合性格式和内容定义。

● 对当前数据库内容的一个评价,重点是清洁度、差错、无用区域、冗余度、转换以及将来的使用价值。

● 对新系统所预料的数据元素和结构进行所指望的改变、增加、删除和其他修改的表。

9.检查用户访问

检查用户访问要重点注意如下问题和交付的结果。

(1)问题

● 所有用户是否都已标识?

● 对所涉及的每一个用户层是否都有一个正式的访问计划?

● 为每个用户层的访问是否制定了问题和目的清单?

● 上级管理部门是否支持和宣扬这种访问?上级管理部门对被访问者的合作关系是否进行了强有力的布置?

● 所有访问的日程安排是否都在可接受的时间范围内?

● 访问者在有效的访问技术方面是否受过训练?

● 所有预定的访问是否都已完成?被取消、被中断的或者被忘记的访问是否已经重新安排并进行?

● 访问者对每次访问是否做了充分的笔记并且写了评价?

● 访问者是否参考了笔记、印象以及其他观察?这些细节是否编写了文卷资料?

● 对被访问者是否给了足够的反馈信息?如小结报告、笔记等。

● 在初始访问期间,当暴露出特殊的问题或条件时,继续追究性的访问是否已进行?

● 是否随时向管理部门报告有关访问进程、任何暴露的问题,以及不配合的用户的情况?

(2)交付的结果

● 访问结果的文件资料。

● 一份访问小结报告,包括一致的答案和重要分歧两个方面。

● 用户对于该系统的态度和地位的内部分析。

● 关于访问所得结论和参与者的协作关系的管理报告。

● 随着问题、重点和其他访问方针、改变检验访问的结果。

● 关于任何未完成访问的说明。

10.检查结构上的分析

检查结构上的分析要重点注意如下问题和交付的结果。

(1)问题

● 对于所选用方案是否定义了所有数据元素、数据流,以及所要求的处理步骤?

● 是否定义和评价了新系统将造成的过程和机构的变化?

● 输入文件和输出文件的内容及用途是否已按一般方法定义?

● 关于新系统的设备要求是否已估计?

● 是否存在一张所指望的系统模块表?

● 是否有一个初步的数据转换计划?

● 是否有一张正在生成的整个系统流程图?

● 有关的事务性过程是否已提出要点?

● 估算的数据量和处理基元量是多少?

● 是否正在考虑数据的安全性和精确度要求?

● 关于新方法的测试过程是否已完全确定?

● 是否已有一份初步的系统实现计划?

(2)交付的结果

● 一份关于所建议的系统方法的报告。

● 一份系统流程图。

● 一份用户操作和职责的流程图。

● 关于分析结论的详细报告。

● 价格利益的分析报告。

● 初步的测试计划。

● 初步的实现计划。

11.检查程序是否冗余

对于程序中的大量重复内容是否使用了专门的类来实现?

12.检查代码整体规范

代码是否自始至终使用了《程序员开发手册》和《编码规范》中要求的格式、调用约定、结构等?

13.检查类命名

检查类命名是否正确。

2.2.2 Java语言测试检查的要求

Java语言测试检查主要有如下9点内容:

● 检查Java语言是否有下标变量越界错误。

● 检查Java语言的除数是否存在除零(n/0)错误的可能。

● 检查字符串。

● 检查字符串连接符“+”。

● 检查浮点值、整型值应用是否有错误。

● 检查switch语句的应用是否有错误。

● 检查if语句的应用是否有错误。

● 检查循环语句的应用是否有错误。

● 检查数值范围是否存在溢出错误。

2.2.3 数据类型测试检查的要求

数据类型测试检查主要有如下5点内容。

1)null转化。在设置值对象(VO)时,在VO内部是否将空串(" ")转化为null,对于数值型数据(整数、浮点数)是否将null转化为0.#。

2)检查控件数据类型的转换。检查控件数据类型是否与表中对应字段数据类型一致。

3)检查单精度型、双精度型控件的范围控制。

4)检查小数位数的设置。

5)检查禁止输入字符的设置。

2.2.4 SQL语句测试检查的要求

SQL语句测试检查主要有如下内容。

1.检查SQL系统数据库内在的数据库文件集

SQL系统数据库内在的每个数据库都有自己的文件集,而且不与其他数据库共享这些文件,如表2-1所示。

表2-1 SQL系统数据库内在的数据库文件集

SQL服务器中的每个数据库都包含系统表,用来记录SQL服务器组件所需的数据。SQL服务器的操作能否成功,取决于系统表信息的完整性,因此Microsoft公司不支持用户直接更新系统表中的信息。

2.检查SQL数据库对象

● 每个数据库对象都有拥有者。

● Table:数据库的基本单位,由行和列组成,存储数据的地方。

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

● Constraint:有主键、外键、唯一键、缺省和检查五种。

● Default:自动插入常量值。

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

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

● Index:提高查询速度。

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

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

3.检查SQL语句书写规范

● 禁止使用“select * from”语法。

● 禁止使用“insert into table_name values(? , ? , …)”语法。

● 统一使用“insert into table_name(col1, col2, …)values(? , ? , …)”。

4.检查SQL语句

检查类型转换,避免显式或隐含的类型转换。

5.检查容量规划

● 估计数据库的尺寸。

● 估计表中的数据量。

● 计算每行中的字节数和所有行的总字节数。

● 确定数据页中的行数。

6.检查局部变量和全局变量的定义

检查局部变量和全局变量的定义。

7.检查if语句的定义

如果if或者else控制的不是一行,就要加begin … end来确定边界。

8.检查数据类型

每个列、局部变量、表达式和参数都有一个相关的数据类型,这是指定对象可持有的数据类型(整型、字符、money类型等)的特性。尽量不使用定长的数据类型。

9.检查数据完整性

● 实体完整性:主键字段不能为空值。

● 参照完整性:外键字段必须是另一个表主码的有效值或空值。

● 域完整性。

● 自定义完整性。

10.检查临时表

局部临时表仅仅限于建立它的人使用。全局临时表则可以被其他用户使用。

11.检查集合的合并

集合合并的内容正确、完备、没有错误。

12.检查隔离等级

● 保证不会读到别人修改的数据。

● 保证已读取的数据不可更改。

● 保证使用到的数据表不被更改。

13.检查安全性管理

● 检查两种认证机制(NT认证机制+SQL服务器认证机制)。

● 检查固定服务器角色和固定数据库角色是否分配正确。

14.检查应用程序的安全性

● 利用视图和存储过程。

● 利用应用程序角色管理客户应用程序的安全性。

● 创建应用程序角色并激活。

● 使用代理服务器、防火墙、路由器来保证SQL服务器的安全性。

● 使用在线加密来保护数据的安全性。

15.检查指定作业响应

● 使用电子邮件、电子呼叫或net send消息通知操作员。

● 将事件消息写入Microsoft Windows应用程序日志。

● 自动删除作业。若确信不需要再次运行该作业,可以使用这种响应。

16.检查报警管理

● 通知一个或多个操作员。

● 将事件转发给其他服务器。

● 执行作业。

17.检查备份

● 允许动态备份。

● 执行和存储备份。

18.检查数据库还原

● 恢复进程。

● 对备份的内容进行恢复。

● 从不同的备份类型中还原数据库。

● 恢复损坏的系统数据库。

19.检查数据传输

● 导入、导出数据的原因。

● 导入、导出数据包括移动、复制、归档和迁移数据。

● 转换数据的原因。

● 更改数据格式。

● 转换和映射数据。

● 保证数据的一致性。

● 验证数据的有效性。

● 调度操作。

● 在异构环境之间导入、导出数据。

20.检查分布式数据

● 分布数据复制。

● 复制代理(快照代理、分发代理、日志读取器代理、合并代理程序、队列读代理程序)。

● 事务复制。

● 合并复制。

21.检查函数

不允许动态创建函数。