博文
软件测试---白盒测试指南(一三)(2007-06-27 12:54:00)
摘要:错误码DM13举例,如:数据库表bd_invcl中加一字段avgprice,执行完后sql语句后,PreparedStatement类型的stmt中执行set语句的顺序要与数据库表中字段顺序一致。否则出错
String sql = "insert into bd_invcl(pk_invcl, invclassname, invclasscode, endflag, avgprice, invclasslev) values(?, ?, ?, ?, ?, ?)";
Connection con = null;
PreparedStatement stmt = null;
try {
con = getConnection();
stmt = con.prepareStatement(sql);
// set PK fields:
String newOid = getOID();
stmt.setString(1, newOid);
&......
软件测试---白盒测试指南(一二)(2007-06-27 12:53:00)
摘要:
B12
在BO、DMO类中调用另一个BO对象时是否保证一个事务内的正确实现
在BO和DMO类中,如要使用其它BO对象,必须使用getBeanHome()方法获得。假如BO1的一个方法内要使用BO2,那么示例如下:
BO2Home home = getBeanHome(“BO2Name”, BO2Home.class);
BO2 bo2 = BO2Home.create();
bo2.method1();
其中,getBeanHome()方法的第一个参数(“BO2Name”)是一个字符串,代表BO2的JNDI名称。我们技术部的中间件默认的JNDI名称由“包名.remote接口名”构成,例如,对上述BO2(假定它位于nc.bs.mypackage包中),默认的JNDI名称是“nc.bs.mypackage.BO2”。
不可直接New一个BO对象的实例,否则中间件将无法控制和确保其事务属性的正确实现
B13
向数据库插入一条记录时,是否为它获得唯一主键(OID)
提供OID的算法由系统管理统一处理,通过在DMO基类的两个接口方法getOID(String pk_corp)和getOIDs(String pk_corp, int amount)提供给业务模块使用。其中,参数pk_corp是此记录所属的公司的主键。如果参数pk_corp为null,则默认为集团公司的数据。
B14
业务级校验
业务级校验方法是否齐全
8.1). DMO(数据管理对象):
序号
测试项
测试内容
质量保证标准
问题属性
出错频率
DM0
继......
软件测试---白盒测试指南(一一)(2007-06-27 12:52:00)
摘要:8.1). ValubleObject:数值对象
一个VO类包装一组代表业务含义的数据,负责在系统各层之间传递业务数据。通常一个VO对应一个数据库表,但也可以对应多个数据库表,或对应一个数据库表的部分字段。
序号
测试项
测试内容
质量保证标准
问题属性
出错频率
VO1
继承性
该类是否继承于VO类
正确性
错误
VO2
get()和set()方法是否齐全
VO类是否包含每个需要持久化属性的setXXX和getXXX方法。
在set方法中是否对属性进行合法性校验,校验失败抛出ValidationException异常
正确性
错误
VO3
构造子
该类应包含无参构造子、只含参数OID的构造子
正确性
错误
VO5
参数
全参构造子中参数的顺序是否与set语句的顺序一致?(去掉)
正确性
错误
VO6
语句体
在每个set方法中是否有修改对应属性的语句体?
正确性
错误
VO7
语句体
在每个get方法中是否有返回对应属性的语句体?
正确性
错误
VO8
空值问题
所有为保存操作员的录入数据而创建VO对象的类属性应初始化为null,直到操作员录入数据时才为相应属性分配空间和赋值。在保存到数据库时,把空属性(null)映射为数据库相应字段的null。
VO9
Integer、Double包装类型
由于Java的Primitive Type类型(如int、double)不是对象,所以不能使用它们作为类属性类型,应该采用对应的Integer、Double等相应的包装类型。
8.2). BO业务对象层:
每个BO类都继承BusinessObject类。B......
软件测试---白盒测试指南(十)(2007-06-27 12:51:00)
摘要:
UI28
业务功能测试
系统初始化状态测试
1. 系统初始化分为两种,初次使用本系统时各界面的初始化和再次使用本系统时各界面的初始化。主要测试各菜单和功能按扭的缺省状态(变灰与激活)是否合理;各种控件的缺省值是否正确。
2.对于母子表的界面,注意母子表是否能同步显示,显示的明细记录是否正确。
UI29
新增:
l 操作逻辑是否合理(包括业务数据输入的先后顺序)。比如应先定位树节点,再按新增按钮;
l 按下新增按钮后,各功能按钮和菜单状态变化是否正确;界面的编辑框是否刷新(注意合理的保留值不应刷新);光标定位是否合理。
l 能否输入合法的数据;能否正常地调出参照框,并导入所需的数据(包括下拉框,参照对话框,右键菜单等)。能否正常修改或清除数据(需要注意参照框的此项要求)。
l 在没保存所编辑的记录时,进行其他操作,系统是否提示保存新增记录,对话框文本是否正确合理。
l 按保存按钮后,是否进行全面的逻辑校验(与设计文档相符),与正常的业务逻辑保持一致;提示文本是否正确合理,对话框能否正常操作(见非正常用例阶段的通用对话框测试描述)。退出对话框后光标定位是否合理。
l 能否正常保存数据。界面数据显示是否正确。菜单、其它功能按钮及控件状态变化是否合理。
l 能否查询到此记录,查询到......
软件测试---白盒测试指南(九)(2007-06-27 12:50:00)
摘要:8.5.1. UI功能测试
分为两个主要手段:
l 非正常用例手段:此阶段主要是采用不合法的输入数据和非正常的操作手段。测试系统的错误控制与处理能力。保证系统不死机,能正常稳定运行。
l 正常用例手段:此阶段主要采用合法的业务数据,正常的操作手段。保证UI符合设计要求和操作习惯,能正常稳定运行,能正确处理业务数据。
1、界面规范测试
2.界面初始化测试
3、编辑控件(除功能按钮以外的控件)应用测试;
4、通用对话框测试
5、参照框测试;
6、状态栏测试
7、业务功能测试(新建、保存、删除、查询、浏览、退出)
8. 界面级校验测试
序号
测试项
测试内容
质量保证标准
问题属性
出错频率
UI20
界面规范测试
1.同一界面,不能同时在同一屏上打开多个。
2.菜单、控件的一致性测试:与设计文档相比较。主要查看菜单与控件是否齐全,控件的类型是否正确。
3.界面的整体布局测试:控件的整体布局是否协调,颜色,尺寸是否合理。具有操作逻辑的控件,其摆放的先后位置是否合理。
4.图标、标题、标签测试:各种图标使用是否符合规范;标题文本、标签文本是否正确合理。
5.控件的鼠标提示文本测试:是否有鼠标提示,提示文本是否正确合理(针对重要的控件)。
UI21
界面初始化测试
1.“增加”、 “退出”、“浏览”按钮是否被激活,“取消”按钮是否变灰。
2.界面是否自动列示最后(或最前)一条记录?(如在列表/卡片型界面中的卡片中)
3.各种标签文本和图标提示文本是否正确
UI22
界面控件功能测试
1.最小化、......
软件测试---白盒测试指南(八)(2007-06-27 12:49:00)
摘要:8.1). 界面UI层:
为提高测试效率,界面UI层测试可将黑盒测试技术和白盒测试技术结合起来进行测试
8.5.1. 代码规范:
序号
测试项
测试内容
质量保证标准
问题属性
出错频率
UI1
继承类
1.从ToftPanel继承一个类。每个界面类都要继承ToftPanel:
public class myUI extends ToftPanel{…}
UI2
添加按钮
2. 是否为界面类添加它需要的按钮。
a) 添加按钮属性。
b) 添加按钮组属性
c) 将按钮设置到界面上。在构造方法中是否添加如下语句:
setButtons(m_aryButtonGroup);
UI3
响应按钮
3. 响应按钮。在onButtonClicked(ButtonObject bo)方法中,处理按钮事件:
public void onButtonClicked(ButtonObject bo) {
if (bo == m_boNormalButton) {
onNormalButtonClicked(......
软件测试---白盒测试指南(七)(2007-06-27 12:48:00)
摘要:8.1). SQL语句规范:(详见数据库处理规范)
序号
测试项
测试内容
质量保证标准
问题属性
出错频率
S1
书写规范
语句全部用小写
S2
SQL语法
l 禁止使用“select * from ”语法。
l 禁止使用“insert into table_name values(?,?,……)”语法,
l 统一使用“insert into table_name (col1,col2,……) values(?,?,…...)”。
S3
SQL语法
如果在语句中有not in(in)操作,是否考虑用not exists(exists)来重写。
S4
类型转换
避免显式或隐含的类型转换。例如在where子句中numeric 型和int型的列的比较
S5
当SQL语句含有运算符时,运算符需与其他字符串用空格区分。否则容易导致以下类似问题。在语句select a–b from table 中, a,b均为变量。拼写该语句时,如果a=6, b= -3,则语句变为select 6--3 from table。--变为Sql的注释,语句报错
S6
查询优化
为提高索引的效率,查询路径优化(尤其是要尽力减少查询嵌套)。
S7
视图
使用静态视图,不允许动态创建视图,索......
软件测试---白盒测试指南(六)(2007-06-27 12:48:00)
摘要:8.1). 数据类型:
序号
测试项
测试内容
质量保证标准
问题属性
出错频率
D1
Null转化
在设置值对象VO时,在VO内部是否将空串""将转化null,数值型数据(整数、浮点数)null转为0。*
D2
Null转化
在取得VO元素放到界面时(如放到UITextField)是否根据需要将null转化为""或"0"或”0.0”。
D4
控件数据类型的转换
编辑控件数据类型是否与表中对应字段数据类型一致
1.UITextField文本域数据类型在nc.ui.pub.beans.textfield包的UITextType接口中定义了TextStr、TextInt、TextDbl、TextDate和TextDateTime等5类,但布尔型使用UICheckBox或UIRadioButton控件,故没有定义布尔型。
D5
UFDouble的使用
去掉原UFCurrency类型,重新封装UFDouble,所有的数值型及运算是否采用UFDouble。
D6
UFDateTime的使用
去掉原UFTime类型,重新封装UFDateTime。
D7
某些数据封装类型的禁用
禁止使用的数据封装类型,如Boolean、Short、Long、Float、Double、Date。
D9
双精度型控件的范围控制
对双精度型控件是否控制最大长度范围:
如:对双精度型,数据库表中字段设为Decimal类型,pricision为20位,Scale为8位
则需加入语句:
ivjtxtShipUnitNum.setMaxLength(20);
&nbs......
软件测试---白盒测试指南(五)(2007-06-27 12:47:00)
摘要:
J12
if语句
在if语句体右括号后紧跟一个分号常常是一个错误,会使if语句成为顺序语句。
正确性
错误
J13
循环语句
通过循环语句对一Vector型变量赋值时,其Vector变量的实例化语句是否被错误地包含在循环体内?
正确性
错误
J14
循环语句
注意循环的条件中是否有差1的现象?
正确性
错误
J15
循环语句
代码是否有无穷循环的可能?(循环条件永远为真)
可预测性
错误
J16
数值范围
是否存在溢出错误
J17
This
Super
This和Super的用法是否正确
J18
构造子
是否缺少构造子方法
J19
方法声明、参数、
返回值
方法声明错误
参数错误
返回值错误
J20
计算
计算错误
J21
比较
比较错误
J22
控制流
控制流错误
J23
类的修饰符
修饰符是否符合以下原则:
Public用于对所有的类可见,
Private用于对本类可见
Protected不仅用于对子类可见,也用于对同一个包的其它所有类可见
......
软件测试---白盒测试指南(四)(2007-06-27 12:46:00)
摘要:8.1). JAVA语言规范走查内容
序号
测试项
测试内容
质量保证标准
问题属性
出错频率
J1
下标
是否有下标变量越界错误?
健壮性
错误
J2
除数
是否包含有除零错误的可能?
健壮性
错误
J4
Get方法
当对一个不知是否为空的对象取其属性值会引起空指针异常。如果空指针异常没有被接收程序将终止。例如:BusinessData1.getBusinessDate2.getOid()当BusinessData1.getBusinessDate2为null时,
BusinessData1.getBusinessDate2.getOid()将发生异常
健壮性
错误
J5
字符串
在字符串比较和将字符串写入数据表前应Trim()掉它的前后空格。
健壮性
错误
J6
字符串连结符"+"
将字符串连结操作中的+操作符同加法运算中的+操作混淆将导致奇怪的结果。例如:y为int类型,y的值为5,g.drawString("y+2="+y+2,30,30);将显示y+2=52
正确性
错误
J7
Float
double
不要用等于或不等于来比较浮点值,而应该判断其差别是否小于某一指定小的值。例如:89.6 实际可能为89.59999232458
正确性
错误
J8
Float
double
不要对浮点值用做计数循环,应用整型值。
正确性
错误
J9
Float
double
不要使用类型float或者double的变量执行精确的金融计算。浮点数的不精确会导致引起不正确金融计算的错误。可定义若干类来完成不同的金融计算。
正确性
错误
J10
switch
switch语句的末尾如果没有defaul语句将会不利于处理异常。
健壮性
缺陷
......