白盒测试规范

  • JAVA语言规范

    序号

    测试项

    测试内容

    质量保证标准

    问题属性

    出错频率

    T1

    代码与

    设计对照

    将功能需求计划书与编码对照,看是否完全地实现了所有的设计文档中规定的内容?

    完备性

    错误

     

    T2

    代码与

    设计对照

    将功能需求计划书与编码对照,看是否创建了所需的数据库或其他初始化数据文件?

    完备性

    错误

     

    T3

    参数

    返回值

    方法中被传递参数的类型、个数、顺序及返回值是否正确?

    正确性

    错误

     

    T5

    参数的传递

    当方法需要调用其它方法时,调用的参数是否正确?

    正确性

    错误

     

    T6

    命名

    是否按《命名规范》进行了类、方法、变量、属性的命名?

    正确性

    错误

     

    T7

    公式

    代码中的公式是否使用了设计文档中的相应数学公式。

    正确性

    错误

     

    T8

    注释

    注释是否使用简洁明了的语言对每一个方法都进行了充分必要的描述?是否对复杂的代码进行了注释?当程序的运行是受某些特殊因素限制时,是否做了限制注释?是否列出限制模块运行特性的全部特殊因素?

    易理解性

    缺陷

     

    T9

    冗余语句和变量

    是否存在永远执行不到的语句和变量,而降低了程序的可理解性?

    易理解性

    缺陷

     

    T10

    程序是否冗余

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

    可验证性

    缺陷

     

    T11

    代码整体规范

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

    一致性

    缺陷

     

    T12

    代码与书写注释

    在一个函数内代码的长度不允许超过100行。建议如果一个函数的代码长度超过一个屏幕,那么或许这个函数太长了。

    使用统一的格式化代码。将‘{’放在所有者的后面,并且在下一行代码前加入TAB键缩进;(TAB键比用若干个空格更容易控制使用统一的缩进距离)

    类的注释;接口的注释;函数的注释;类属性的注释;局部变量的注释;

    易理解性

    缺陷

     

    T13

    命名是否符合程序包命名规范

    易理解性

    缺陷

     

    T14

    1.创建的属性(字段)是否完整,类型与命名是否规范,注释是否清楚合理。

    2.创建的方法是否完整;命名是否规范;修辞是否正确;参数,参数类型,返回类型是否正确。

    3.调用的方法和传递的参数是否正确。

    1.参数传递、返回值是否正确

    2.特殊校验、处理是否有注释

    易理解性

    缺陷

     

    T15

    类命名

    第一个字母大写的英文正常语序

    每个功能点的主程序(通常继承系统管理框架)统一采用ClientUI类名称。

    易理解性

    缺陷

     

    T16

    接口

    接口名的开头加上字母‘I’前缀

    从第二个字母起,用首字母大写的英文单词描述

    易理解性

    缺陷

     

    T17

    方法

    1.是否正确定义了此方法(包括修辞词、返回类型、参数、参数类型)

    2.注释是否清楚

    3.命名是否正确:

    方法函数名的第一个单词小写,后面的单词第一个字母大写;

    第一个单词必须是动词,使函数的意义清晰明了;

    存取对象的属性使用setXXX()和getXXX()函数形式

    访问布尔类型的属性可以使用isXXX()函数

    易理解性

    缺陷

     

    T18

    类属性

    所有类属性全部以m_开头,同其它变量区分开。

    集合类型的域,如数组、向量,必须使用复数形式来指出它们多值特性。

    所有的域都是私有的,用并且仅用getXXX和setXXX等的存取函数去访问域,。

    存取函数的可见性尽量为protected属性的,getter函数可以是public属性的

    存取函数的命名规则是:

    getter函数 =  get + 域名 (非布尔类型域)

                             is + 域名 (布尔类型域)

    setter函数 =  set + 域名

    易理解性

    缺陷

     

    T19

    常量

    常量的命名全部使用大写。用下划线来分隔单词。例:MAX_VALUE

    易理解性

    缺陷

     

    T20

    类所实现的功能

    是否实现了要求的所有功能

    易理解性

    缺陷

     

    T21

    类中的校验方法

    1.界面级的校验是否齐全

    2.业务级的校验是否齐全

    完备性

    错误

     

    T22

    继承性

    封装性

    多态性

    面向对象程序是否体现继承、封装和多态的特性?

    易理解性

    缺陷

     

    T23

    面向对象特性

    面向对象程序中,编写类的方法时,是否同时考虑基类方法(Base::Function())的行为和继承类方法(Derived::Function())的行为

    易理解性

    缺陷

     

    T24

    数据封装性

    数据成员是否满足数据封装的要求。

    有时强制的类型转换会破坏数据的封装特性。

    易理解性

    缺陷

     

    T25

    类中成员方法

    以OOD为依据,类中成员方法是否实现了设计中所要求的功能;如通过OOD仍不清楚,则还应依据OOA、及需求报告说明书

    易理解性

    缺陷

     

    J1

    下标

    是否有下标变量越界错误?

    健壮性

    错误

     

    J2

    除数

    是否包含有除零错误的可能?

    健壮性

    错误

     

    J3

    Get方法

    当对一个不知是否为空的对象取其属性值会引起空指针异常。如果空指针异常没有被接收程序将终止。例如:BusinessData1.getBusinessDate2.getOid()当BusinessData1.getBusinessDate2为null时,

    BusinessData1.getBusinessDate2.getOid()将发生异常

    健壮性

    错误

     

    J4

    字符串

    在字符串比较和将字符串写入数据表前应Trim()掉它的前后空格。

    健壮性

    错误

     

    J5

    字符串连结符"+"

    将字符串连结操作中的+操作符同加法运算中的+操作混淆将导致奇怪的结果。例如:y为int类型,y的值为5,g.drawString("y+2="+y+2,30,30);将显示y+2=52

    正确性

    错误

     

    J6

    Float

    double

    不要用等于或不等于来比较浮点值,而应该判断其差别是否小于某一指定小的值。例如:89.6 实际可能为89.59999232458

    正确性

    错误

     

    J7

    Float

    double

    不要对浮点值用做计数循环,应用整型值。

    正确性

    错误

     

    J8

    Float

    double

    不要使用类型float或者double的变量执行精确的计算。浮点数的不精确会导致引起不正确计算的错误。可定义若干类来完成不同的计算。

    正确性

    错误

     

    J9

    switch

    switch语句的末尾如果没有default语句将会不利于处理异常。

    健壮性

    缺陷

     

    J10

    switch

    是否在switch结构中的每一个case语句体结束时都有break语句?

    正确性

    错误

     

    J11

    if语句

    在if语句体右括号后紧跟一个分号常常是一个错误,会使if语句成为顺序语句。

    正确性

    错误

     

    J12

    循环语句

    通过循环语句对一Vector型变量赋值时,其Vector变量的实例化语句是否被错误地包含在循环体内?

    正确性

    错误

     

    J13

    循环语句

    注意循环的条件中是否有差1的现象?

    正确性

    错误

     

    J14

    循环语句

    代码是否有无穷循环的可能?(循环条件永远为真)

    可预测性

    错误

     

    J15

    数值范围

    是否存在溢出错误

    可预测性

    错误

     

    J16

    This

    Super

    This和Super的用法是否正确

    可预测性

    错误

     

    J17

    构造子

    是否缺少构造子方法

    可预测性

    错误

     

    J18

    方法声明、参数、

    返回值

    方法声明错误

    参数错误

    返回值错误

    可预测性

    错误

     

    J19

    计算

    计算错误

    可预测性

    错误

     

    J20

    比较

    比较错误

    可预测性

    错误

     

    J21

    控制流

    控制流错误

    可预测性

    错误

     

    J22

    类的修饰符

    修饰符是否符合以下原则:

    Public用于对所有的类可见,

    Private用于对本类可见

    Protected不仅用于对子类可见,也用于对同一个包的其它所有类可见

    可预测性

    错误

     

     

    数据类型规范

    序号

    测试项

    测试内容

    质量保证标准

    问题属性

    出错频率

    D1

    Null转化

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

     

     

     

    D2

    Null转化

    在取得VO元素放到界面时(如放到UITextField)是否根据需要将null转化为""或"0"或”0.0”。

     

     

     

    D3

    控件数据类型的转换

    编辑控件数据类型是否与表中对应字段数据类型一致

    1.UITextField文本域数据类型在nc.ui.pub.beans.textfield包的UITextType接口中定义了TextStr、TextInt、TextDbl、TextDate和TextDateTime等5类,但布尔型使用UICheckBox或UIRadioButton控件,故没有定义布尔型。

     

     

     

    D4

    UFDouble的使用

    去掉原UFCurrency类型,重新封装UFDouble,所有的数值型及运算是否采用UFDouble。

     

     

     

    D5

    UFDateTime的使用

    去掉原UFTime类型,重新封装UFDateTime。

     

     

     

    D6

    某些数据封装类型的禁用

    禁止使用的数据封装类型,如Boolean、Short、Long、Float、Double、Date。

     

     

     

    D7

    双精度型控件的范围控制

    对双精度型控件是否控制最大长度范围:对双精度型,数据库表中字段设为Decimal类型,pricision为20位,Scale为8位  则需加入语句:

    ivjtxtShipUnitNum.setMaxLength(20);

    ivjtxtShipUnitNum.setNumPoint(8);

     

     

     

    D8

    最大长度的设置

    设置最大长度MaxLength(默认20位、对TextDate与TextDateTime无效)

     

     

     

    D9

    小数位数的设置

    设置小数位数NumPoint(默认4位、只对TextDbl有效)

     

     

     

    D10

    禁止输入字符的设置

    设置禁止输入的字符DelStr,整数和浮点数也可设置禁止字符串,如:

    //禁止输入负数

    setTextType("TextStr");       

    setDelStr("-");

    //只输入数字型字符

    setTextType("TextDbl");       

    setDelStr("-.");

     

     

     

    D11

    对齐方式

    整数和浮点数默认右对齐,其它左对齐,可以改变

     

     

     

    D12

    左边字符锁定的设置

    设置左边字符锁定

       (1)setFixText(String)--设置串并锁定和字符串相同的长度

       (2)setFixText(String,int)--设置串并锁定参数给定的长度

       (3)setFixTextLen(int)--锁定参数给定的长度

       (4)setText(String)--设置串并取消锁定

       任何设置都会修改以前设定的锁定长度

     

     

     

     

    SQL语句规范

    序号

    测试项

    测试内容

    质量保证标准

    问题属性

    出错频率

    S1

    书写规范

    语句全部用小写

     

     

     

    S2

    SQL语法

    禁止使用“select  *  from ”语法

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

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

     

     

     

    S3

    SQL语法

    如果在语句中有not in(in)操作,是否考虑用not exists(exists)来重写。

     

     

     

    S4

    类型转换

    避免显式或隐含的类型转换。例如在where子句中numeric 型和int型的列的比较

     

     

     

    S5

    SQL语法

    当SQL语句含有运算符时,运算符需与其他字符串用空格区分。否则容易导致以下类似问题。在语句select a–b from table 中, a,b均为变量。拼写该语句时,如果a=6, b= -3,则语句变为select 6--3 from table。--变为Sql的注释,语句报错

     

     

     

    S6

    查询优化

    为提高索引的效率,查询路径优化(尤其是要尽力减少查询嵌套)

     

     

     

    S7

    视图

    使用静态视图,不允许动态创建视图,索引,存储过程等数据库对象

     

     

     

    S8

    Null

    不能将Null 与  空串“”视为相同

     

     

     

    S9

    多表连接

    1.SQL语句包含多表连接时,是否加上表的别名。

    1. 子查询问题。对于能用连接方式或者视图方式实现的功能,不要用子查询。

    例如:select name from customer where customer_id in ( select customer_id from order where money>1000)。应该用如下语句代替:select name from customer inner join order on customer.customer_id=order.customer_id where order.money>100。

    3. 多表关联查询时,写法必须遵循以下原则,这样做有利于建立索引,提高查询效率。格式如下select sum(table1.je) from table1 table1,  table2 table2,  table3  table3 where (table1的等值条件(=)) and (table1的非等值条件) and (table2与table1的关联条件) and (table2的等值条件) and (table2的非等值条件) and (table3与table2的关联条件) and (table3的等值条件) and (table3的非等值条件)。

     

     

     

    S10

    复杂SQL语句

    对复杂SQL语句必须单独测试:如多表查询拚写语句是否符合业务要求

     

     

     

    S11

    多数据库适配

    1.Sql语句转换类。调用方法:SqlTranslator trans = new SqlTranslator(); destSql = trans.getSql(sourceSql, databaseType)。

    2.提供SQLException信息转换。同一个SQL在不同数据库操作,JDBC返回的错误号以及错误信息不同。SQLException信息转换器将不同JDBC返回的错误号统一为以Sql Server7.0为准,错误信息仍以不同JDBC返回的错误信息为主

     

     

     

    S11

    多数据库适配

    SQL语法限制

    1.字符串连接必须用“||”符号。例如: select f1 || f2 from test:而不是: select f1 + f2   from test; 如果用“+”号,则Oracle不支持。

    2.左连接的写法必须带“outer”关键字。例如:select f1 from t1 left outer t2 on t1.f1 = t2.f1;而不是: select f1 from t1 left t2 on t1.f1 = t2.f1。

    3.参与左连接的列不能为常量例如,不允许如下语句: select * from t1 left outer join t2 on t1.f1='A'。

    4.在Case when语句中只能出现 =、>=、<= 以及is null运算符,不能出现 <、>、 <>、!=、以及is not null运算符。 否则在Oracle的decode函数无法表达。

    5.在Case when语句中参与比较的列只能有一个。例如不能使用如下         case……when语句:case  when f1 > 1 then …...when f2 > 1 then ……end。

    6.在对char类型比较时,要对列加上rtrim()函数,否则在Oracle中不会得到正确结果。

    7.在Delete、Update、Insert、Select语句中char类型的数值引用使用单引,         例如语句:Insert into t vlaues(“book”,5)在SQL Server中可以使用,而在Oracle、DB2中不支持。应为:Insert into t vlaues(‘book’,5) 。

    8.通配符不能使用‘[a-c]%’这种形式,应写成如:select * from table_name where col1 like ‘[a]%’ OR col1 like ‘[b]%’ OR col1 like ‘[c]%’ 。

    9.不能通过来top n/percent限制查询结果集的记录数,oracle不支持

    10.Union、order by、Group by、having、between…and、in、exists、is null 用法一致

     

     

     

    S12

    函数

    不允许动态创建函数。

     

     

     

     

     

    1. 附录二:单元测试用例

              对数据库表的增、删、改、查操作进行测试(MySql数据库):

    字段

    类型

    描述

    id

    int

    主键,自增类型

    url

    varchar

    网站地址,唯一不能重复

    email

    varchar

    Email地址

    name

    varchar

    名称

    1. 附录三:界面测试规范

    界面测试分为两个主要手段:非正常用例手段:此阶段主要是采用不合法的输入数据和非正常的操作手段。测试系统的错误控制与处理能力。保证系统不死机,能正常稳定运行。正常用例手段:此阶段主要采用合法的业务数据,正常的操作手段。保证UI符合设计要求和操作习惯,能正常稳定运行,能正确处理业务数据。

    用户界面测试的检查

    检查项

    测试人员的类别及其评价

    窗口切换、移动、改变大小时正常吗?

     

    各种界面元素的文字正确吗?(如标题、提示等)

     

    各种界面元素的状态正确吗?(如有效、无效、选中等状态)

     

    各种界面元素支持键盘操作吗?

     

    各种界面元素支持鼠标操作吗?

     

    对话框中的缺省焦点正确吗?

     

    数据项能正确回显吗?

     

    对于常用的功能,用户能否不必阅读手册就能使用?

     

    对于常用的功能,用户能否不必阅读手册就能使用?

     

    执行有风险的操作时,有“确认”、“放弃”等提示吗?

     

    操作顺序合理吗?

     

    有联机帮助吗?

     

    各种界面元素的布局合理吗?美观吗?

     

    各种界面元素的颜色协调吗?

     

    各种界面元素的形状美观吗?

     

    字体美观吗?

     

    图标直观吗?

     

    窗体大小是否合适,控件布局是否合理

     

    移动窗体.快速或慢速移动窗体,背景及窗体本身刷新是否正确

     

    缩放窗体,窗体上的控件是否随窗体的大小变化而变化

     

    显示分辨率.在不同的分辨率的情况下测试程序的显示是否正常

     

    进行测试时图标执行操作是否有效,是否与菜单栏中图标显示一致

     

    错误信息内容是否正确,无错别字,且明确

     

    选择菜单是否可以正常工作,并与实际执行内容一致

     

    是否有错别字

     

    快捷键是否重复

     

    不同级别权限的用户可以看到不同级别的菜单并使用不同级别的功能

     

    是否显示了相关版权和产品信息

     

     

    WEB页面测试

    检查项

    测试人员的类别及其评价

    页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确

     

    相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确

     

    检查按钮的功能是否正确:如新建、编辑、删除、关闭、返回、保存、导入等功能是否正确

     

    字符串长度检查:输入超出需求所说明的字符串长度的内容,看系统是否检查字符串长度

     

    字符类型检查:在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型

     

    标点符号检查:输入内容包括各种标点符号,特别是空格,各种引号,回车键。看系统处理是否正确

     

    特殊字符检查:输入特殊符号,如@、#、$、%、!等,看系统处理是否正确

     

    中文字符处理:在可以输入中、英文的系统输入中文,看会否出现乱码或出错

     

    检查信息的完整性:在查看信息和更新信息时,查看所填写的信息是不是全部更新,更新信息和添加信息是否一致

     

    信息重复:在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理

     

    检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按“delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理

     

    检查添加和修改是否一致:检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型

     

    检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错

     

    重复提交表单:一条已经成功提交的纪录,返回后再提交,看看系统是否做了处理。对于Web系统来说,可以通过浏览器返回键或者系统提供的返回功能

     

    检查多次使用返回键的情况:在有返回键的地方,返回到原来页面,重复多次,看会否出错

     

    搜索检查:有搜索功能的地方输入系统存在和不存在的内容,看搜索结果是否正确.如果可以输入多个搜索条件,可以同时添加合理和不合理的条件,看系统处理是否正确

     

    输入信息位置:注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方

     

    上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。

     

    必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加“*”;对必填项提示返回后,焦点是否会自动定位到必填项

     

    快捷键检查:是否支持常用快捷键,如Ctrl+C、Ctrl+V、Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制

     

    回车键检查:在输入结束后直接按回车键,看系统处理如何,会否报错

     

    刷新键检查:在Web系统中,使用浏览器的刷新键,看系统处理如何,会否报错

     

    回退键检查:在Web系统中,使用浏览器的回退键,看系统处理如何,会否报错。对于需要用户验证的系统,在退出登录后,使用回退键,看系统处理如何;多次使用回退键,多次使用前进键,看系统如何处理。

     

    直接URL链接检查:在Web系统中,直接输入各功能页面的URL地址,看系统如何处理,对于需要用户验证的系统更为重要

     

    空格检查:在输入信息项中,输入一个或连串空格,查看系统如何处理。如对于要求输入整型、符点型变量的项中,输入空格,既不是空值,又不是标准输入

     

    输入法半角全角检查:在输入信息项中,输入半角或全角的信息,查看系统如何处理。如对于要求输入符点型数据的项中,输入全角的小数点(“。”或“.”,如4.5);输入全角的空格等

     

    密码检查:一些系统的加密方法采用对字符Ascii码移位的方式,处理密码加密相对较为简单,且安全性较高,对于局域网系统来说,此种方式完全可以起到加密的作用,但同时,会造成一些问题,即大于128的Ascii对应的字符在解密时无法解析,尝试使用“uvwxyz”等一些码值较大的字符作为密码,同时,密码尽可能的长,如17位密码等,造成加密后的密码出现无法解析的字符

     

    用户检查:任何一个系统,都有各类不同的用户,同样具有一个或多个管理员用户,检查各个管理员之间是否可以相互管理,编辑、删除管理员用户。同时,对于一般用户,尝试删除,并重建同名的用户,检查该用户其它信息是否重现。同样,提供注销功能的系统,此用户再次注册时,是否作为一个新的用户

     

    系统数据检查:这是功能测试最重要的,如果系统数据计算不正确,那么功能测试肯定是通不过的。数据检查根据不同的系统,方法不同。对于业务管理平台,数据随业务过程、状态的变化保持正确,不能因为某个过程出现垃圾数据,也不能因为某个过程而丢失数据

     

    系统可恢复性检查:以各种方式把系统搞瘫,测试系统是否可正常迅速恢复

     

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值