白盒测试指南(说明:此白盒测试指南主要给白盒测试人员提供一些基本的白盒测试方法和技术,由于涉及的问题广泛,测试内容中的细节不一定准确和完整,还有待于各位的共同参与和不断完善,欢迎多交流!)目的本方案主要实施NC产品程序代码的白盒测试。
使界面符合设计规范,适用于用户;保证程序创建的类与接口的完整与正确,以及程序模块单独正常运行。
保证局部模块功能完备性,运行正确性与稳定性。
测试项所要测试的类。
如:nc.ui.bd.*nc.bs.bd.*nc.vo.bd.*测试依据1.N C产品需求报告;需求规格说明书、用例描述清单2.设计文档;(OOA、OOD、CRC卡)如:AOM(Analysis Object Model)表示类间的静态关系,是多个相关的用例共用的。
ASD(Analysis Sequence Diagram)是按业务工作的顺序表示每一工作步骤执行时类间的动态关系。
一个用例对应一个ASD。
CRC (Collaborators & Responsibilities Card)卡是一个类的完整表述3.界面规范4.编码规范5.开发命名标准通过的准则1.界面测试通过的标准:界面的样式、大小、颜色、整体布局的设置;各种标签控件的使用及主题描述以及事件源控件的使用、快捷键使用都应符合《NC系统应用框架需求报告》和《设计文档的相关规范》。
2.程序代码通过的标准:创建的类、接口、方法、属性应与《设计文档》保持一致;程序的各种命名、注释、代码行的格式等应符合《程序开发命名标准》和《编码规范》;程序模块能独立稳定运行。
测试环境配置1.测试工具:2.软件环境:Client端:操作系统:中文WINNT/2000开发环境:VA3.5 专业版待测试的源码包Server端:操作系统:WIN NT4.0开发环境:VA3.5 专业版通讯环境: Servlet3.DB Server端:DBMS:SQL SERVER4.资源文件白盒测试总流程测试流程依据,请参见《代码层次结构规范》。
NC系统中的对象主要分为如下几种:✧界面对象(UIObject)✧数值对象VO(ValueObject)✧业务对象BO(BusinessObject)✧数据管理对象DMO(DataManageObject)测试流程可按二种方式,其优缺点对照:前者:优点是便于测试者从界面层直观地录入数据,缺点是做回归测试时,录入数据需重复后者:原则是从底层测试,底层测试通过了,再依次往上一层测试;否则不需往上层测试缺点:需给中间层做一测试小程序:根据程序中类的对象构造输入数据及将结果输出到控制台上,(可通过自行设计测试工具来改善,测试工具需求另附)优点:做回归测试时,不用再构造输入数据,只要再执行一遍小测试程序测试步骤:需要列出所测试类的调用关系和关键方法的调用关系(依据为数据流)。
(1)类关系图。
(2) 方法的功能调用关系图:只需要列出一些调用关系较复杂的方法。
7.1.配置好测试环境;7.2.编写测试用例;另附7.3.静态测试,走查代码;代码走查使用测试用例启发检测错误,沿程序逻辑走一遍,检测程序结构和实现上是否有问题7.4.动态测试●界面初始化状态测试;●界面控件功能测试;(正反用例);●业务功能测试(正反用例);●数据流关联测试(涉及多表的增、删、改),并结合数据库表的字段、外键、字段类型、精度、小数位数、非空、默认值、备注、数据对象等。
●数据传递和接收一致,数据计算或处理后状态正确;●组合模块整体运行稳定,不出现死机;7.5.确定问题属性:分为四类:错误、缺陷、失效、故障错误是指计算值、观测值、测量值之间,或条件与真值之间,不符合规定的或理论上的正确值或条件缺陷是指与期望值或特征值的偏差故障是指功能部件不能执行所要求的功能。
故障可能由错误、缺陷或失效引起。
失效是指功能部件执行其功能的能力丧失,系统或系统部件丧失了在规定限度内执行所要求功能的能力7.6.确定问题类别:7.7.填写测试报告测试记录需详细填写具体实施方法中的相关列表;上交的测试报告只需填写未通过的项。
(详见第10节)具体实施方法:8.1).各层公用问题:8.2).J AVA语言规范走查内容8.3).数据类型:8.4).S QL语句规范:(详见数据库处理规范)8.5).界面UI层:为提高测试效率,界面UI层测试可将黑盒测试技术和白盒测试技术结合起来进行测试8.5.2.UI功能测试分为两个主要手段:●非正常用例手段:此阶段主要是采用不合法的输入数据和非正常的操作手段。
测试系统的错误控制与处理能力。
保证系统不死机,能正常稳定运行。
●正常用例手段:此阶段主要采用合法的业务数据,正常的操作手段。
保证UI符合设计要求和操作习惯,能正常稳定运行,能正确处理业务数据。
8.6).ValubleObject:数值对象一个VO类包装一组代表业务含义的数据,负责在系统各层之间传递业务数据。
通常一个VO 对应一个数据库表,但也可以对应多个数据库表,或对应一个数据库表的部分字段。
8.7).B O业务对象层:每个BO类都继承BusinessObject类。
BO对象通过操纵DMO对象和其他BO对象完成业务逻辑。
8.8).DMO(数据管理对象):错误码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);// set non PK fields:if (invcl.getInvclassname() == null) {stmt.setNull(2, Types.CHAR);}else {stmt.setString(2, invcl.getInvclassname());}if (invcl.getInvclasscode() == null) {stmt.setNull(3, Types.CHAR);}else {stmt.setString(3, invcl.getInvclasscode());}if (invcl.getEndflag() == null) {stmt.setNull(4, Types.CHAR);}else {stmt.setString(4, invcl.getEndflag());}if (invcl.getAvgprice() == null) {stmt.setNull(5, Types.INTEGER);}else {stmt.setBigDecimal(5, invcl.getAvgprice());}if (invcl.getInvclasslev() == null) {stmt.setNull(6, Types.INTEGER);}else {stmt.setInt(6, invcl.getInvclasslev().intValue());}//stmt.executeUpdate();return newOid;} catch (Exception e) {return "插入未成功";}finally {try {if (stmt != null) {stmt.close();}}catch (Exception e) {}try {if (con != null) {con.close();}}catch (Exception e) {}}}8.9).业务逻辑重点测试项目(需根据不同业务要求进行细化)1.状态校验测试:如:(1)作废状态的校验:在Remove和Update单据时,需校验状态。
如果记录处于作废时会抛异常,否则正常删除或修改。
(请构造正反用例分别测试)(2)审核状态的校验:在Remove和Update单据时,需校验状态。
如果记录处于审核状态时会抛异常,否则正常删除或修改。
(请构造正反用例分别测试)(3)冻结状态校验:同上。
2.关联删除测试:3.关联增加测试:4.静态变量的测试:8.10).样例:如存货基本档案UI层:1).显示控件和编辑控件应该加以区分,尽量避免任何引起用户误会的可能。
如,存货档案中的“查询条件”控件,使用户误以为是用来录入的2).编辑控件数据类型没有与表中对应字段数据类型一致如:InvbasdocPanel类中的gettxtWeitUnitNum(){}应加入ivjtxtWeitUnitNum.setTextType(nc.ui.pub.beans.textfield.UITextType.TextDbl);3)控件没有控制最大长度范围:如:对双精度型,数据库表中字段设为Decimal类型,pricision为20位,Scale为8位则需加入下列语句:ivjtxtShipUnitNum.setMaxLength(20);ivjtxtShipUnitNum.setNumPoint(8);4).参照问题按增加时,从树中所选分类没有自动带入,存货分类参照应只显示末级5).树表结构●1.树中节点级次混乱●2.选择末级节点时,树中节点与列表中记录没有对应●3.一进入树表结构型的界面中,选择末级节点时,没有激活“增加”按钮,●4.按增加,没有缺省切换到第一页,从树中所选分类没有自动带入6)报错信息:●1.错误信息提示不准确●2.当操作合法时,也出现报错信息框如:光标定位于左边tree中的某一节点时,报错信息为:只有第二级以下的节点或末级节点表才能展开。
测试数据设计测试数据表测试类名:测试人:编号:代码测试报告填写说明代码测试报告填写说明。