|
4#
楼主 |
发表于 2005-11-17 17:37:26
|
只看该作者
接#3
TT24 数据封装性 数据成员是否满足数据封装的要求。
有时强制的类型转换会破坏数据的封装特性。例如:
class Hiden
{private:
int a=1;
char *p= "hiden";}
class Visible
{public:
int b=2;
char *s= "visible";}
…..
…..
Hiden pp;
Visible *qq=(Visible *)&pp;
在上面的程序段中,pp的数据成员可以通过qq被随意访问
TT25 类中成员方法 以OOD为依据,类中成员方法是否实现了设计中所要求的功能;如通过OOD仍不清楚,则还应依据OOA、及需求报告说明书
8.2). 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语句将会不利于处理异常。 健壮性 缺陷
J11 switch 是否在switch结构中的每一个case语句体结束时都有break语句? 正确性 错误
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不仅用于对子类可见,也用于对同一个包的其它所有类可见
8.3). 数据类型:
序号 测试项 测试内容 质量保证标准 问题属性 出错频率
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);
ivjtxtShipUnitNum.setNumPoint(8);
D11 最大长度的设置 设置最大长度MaxLength(默认20位、对TextDate与TextDateTime无效),
D12 小数位数的设置 设置小数位数NumPoint(默认4位、只对TextDbl有效)
D13 禁止输入字符的设置 设置禁止输入的字符DelStr,整数和浮点数也可设置禁止字符串,如:
//禁止输入负数
setTextType("TextStr");
setDelStr("-");
//只输入数字型字符
setTextType("TextDbl");
setDelStr("-.");
D14 对齐方式 整数和浮点数默认右对齐,其它左对齐,可以改变
D15 左边字符锁定的设置 设置左边字符锁定
(1)setFixText(String)--设置串并锁定和字符串相同的长度
(2)setFixText(String,int)--设置串并锁定参数给定的长度
(3)setFixTextLen(int)--锁定参数给定的长度
(4)setText(String)--设置串并取消锁定
任何设置都会修改以前设定的锁定长度
8.4). 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语句含有运算符时,运算符需与其他字符串用空格区分。否则容易导致以下类似问题。在语句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语句包含多表连接时,是否加上表的别名。
3. 子查询问题。对于能用连接方式或者视图方式实现的功能,不要用子查询。
例如: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返回的错误信息为主 |
|