1、淮海工学院计算机工程学院实 验 报 告 书课 程 名 : 软件工程 题 目: 仓储物资管理系统 编码和测试 班 级: 学 号: 姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日1、实验目的与要求(1)选定项目中的模块,给出详细设计结果与 C 语言代码,对其使用白盒和黑盒测试技术设计若干测试用例。然后,使用测试用例进行实际测试操作实验,并给出测试结果;(2)了解一些典型的自动化测试软件和方法,建议有条件可下载、安装 Mercury Interactive 公司的负载测试工具 LoadRunner、功能测试工具 WinRunner 和测试管理工具TestDirector;IBM-Rati
2、onal 公司的测试套件 Rational Suite TestStudio 的 Rational Robot、Rational TestManagerhe、Rational Quantify 等工具。2、实验内容1 引言1.1 编写目的在计算机飞速发展的今天,将计算机这一信息处理利器应用于仓库的日常管理已是势必所然,而且这也将为仓库管理带来前所未有的改变,它可以带来意想不到的效益,同时也会为企业的飞速发展提供无限潜力。采用计算机管理信息系统已成为仓库管理科学化和现代化的重要标志,它给企业管理来了明显的经济效益和社会效益。1.2 背景本测试计划从属于仓储物资管理系统。用户为中、小规模超市、商场
3、、仓库等。执行本测试 前,应完成软件计划,需求分析,设计及编码工作。1.3 参考资料需求分析文档,概要设计文档,详细设计文档,测试计划文档,程序清单。1.4 各模块主要代码员工登陆public void actionPerformed(ActionEvent e) Connection con;Statement sql;ResultSet rs;tryClass.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver“);catch(ClassNotFoundException ef)System.out.println(“+ef);if(
4、e.getSource()=jButton1)jTextArea1.setText(“); String na=jTextField1.getText();String mi=jTextField2.getText();trycon=DriverManager.getConnection(“jdbc:sqlserver:/localhost:1433;DatabaseName=maen;“,“sa“,“12 3456“);sql=con.createStatement();rs=sql.executeQuery(“SELECT * FROM User“);while(rs.next() Str
5、ing depotID=rs.getString(1);String mima=rs.getString(7);if(na.equals(null) a=-1; else if(depotID.equals(na)JOptionPane.showMessageDialog(null, “登陆成功“);this.dispose();wz a=new wz();a.setVisible(true);if(a=0|a=-1)JOptionPane.showMessageDialog(null, “登陆失败“);System.exit(0); con.close();catch(SQLExceptio
6、n eg) System.out.println(e); 入库登记:public void actionPerformed(ActionEvent e)int h=0,j=0,c=0,d=0; /连接数据库Connection con1,con2,con3,con4,con;Statement sql1,sql2,sql3,sql4,sql;ResultSet rs1,rs2,rs3,rs4,rs;tryClass.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver“);catch(ClassNotFoundException ef)Sy
7、stem.out.println(“+ef); if(e.getSource()=jButton1)trycon1=DriverManager.getConnection(“jdbc:sqlserver:/localhost:1433;DatabaseName=maen;“,“sa“,“123456“);sql1=con1.createStatement();rs1=sql1.executeQuery(“SELECT * FROM Wp“);while(rs1.next()String WpID;String wpID=rs1.getString(1);WpID=jTextField1.get
8、Text();if(wpID.equals(WpID) h+;if(h=0)id=jTextField1.getText();wupingjibenInfo yji=new wupingjibenInfo(id);yji.setVisible(true); if(h!=0) jTextArea1.setText(“);jTextArea1.append(“该物品已有登记,无需登记!“+“n“);con1.close();catch(SQLException es)System.out.println(es); if(e.getSource()=jButton2)trycon2=DriverMa
9、nager.getConnection(“jdbc:sqlserver:/localhost:1433;DatabaseName=maen;“,“sa“,“123456“); sql2=con2.createStatement();rs2=sql2.executeQuery(“SELECT * FROM Prodcom“);while(rs2.next() String ProID;String proID=rs2.getString(1);ProID=jTextField2.getText();if(proID.equals(ProID) j+;if(j=0)dr=jTextField2.g
10、etText();gongyingshangjibenInfo gji=new gongyingshangjibenInfo(dr);gji.setVisible(true); else if(j!=0) jTextArea1.setText(“);jTextArea1.append(“该供应商已有登记,无需登记!“+“n“);con2.close();catch(SQLException em)System.out.println(em); if(e.getSource()=jButton3)String gy,wpid,gyid,ImpID,DruID,DepotID,Import_tim
11、e,StorID,insertStr1,Recode1,insertStr2,Recode2;double Import_num;gy=jTextField9.getText();wpid=jTextField1.getText();gyid=jTextField2.getText();ImpID=jTextField3.getText();DruID=jTextField4.getText();DepotID=jTextField5.getText();Import_time=jTextField6.getText();Import_num=Double.parseDouble(jTextF
12、ield7.getText();StorID=jTextField8.getText();trycon3=DriverManager.getConnection(“jdbc:sqlserver:/localhost:1433;DatabaseName=maen;“,“sa“,“123456“);sql3=con3.createStatement();rs3=sql3.executeQuery(“SELECT * FROM Import“);while(rs3.next() String impID=rs3.getString(1);String druID=rs3.getString(2);S
13、tring depotID=rs3.getString(3);if(impID.equals(ImpID) if(c=0) Recode1=“(“+“+ImpID+“+“,“+“+DruID+“+“,“+“+DepotID+“+“,“+“+Import_time+“+“,“+Import_num+“)“;insertStr1=“INSERT INTO Import VALUES“+Recode1;sql3.executeUpdate(insertStr1);jTextArea1.setText(“);jTextArea1.append(“登记成功!“+“n“);tryint a=0;con=D
14、riverManager.getConnection(“jdbc:sqlserver:/localhost:1433;DatabaseName=maen;“,“sa“,“123456“); sql=con.createStatement();rs=sql.executeQuery(“SELECT * FROM Provide“);String Recode,insertStr;Recode=“(“+“+gy+“+“,“+“+wpid+“+“,“+“+gyid+“+“)“;insertStr=“INSERT INTO Provide VALUES“+Recode;while(rs.next()S
15、tring g=rs.getString(1);String wp=rs.getString(2);String gys=rs.getString(3);if(g.equals(gy) if(a=0)sql.executeUpdate(insertStr); con.close();catch(SQLException eb)System.out.println(eb);jTextArea1.append(“不存在该供应商或该物品!“+“n“);if(c!=0) jTextArea1.setText(“);jTextArea1.append(“主键重复,请检查!“+“n“);con3.clos
16、e();catch(SQLException es)System.out.println(es); trycon4=DriverManager.getConnection(“jdbc:sqlserver:/localhost:1433;DatabaseName=maen;“,“sa“,“123456“);sql4=con4.createStatement();rs4=sql4.executeQuery(“SELECT * FROM Storage“);while(rs4.next() String storID=rs4.getString(1); String druID=rs4.getStr
17、ing(2); String depotID=rs4.getString(3);if(storID.equals(StorID) if(d=0) Recode2=“(“+“+StorID+“+“,“+“+DruID+“+“,“+“+DepotID+“+“,“+Import_num+“)“;insertStr2=“INSERT INTO Storage VALUES“+Recode2;sql4.executeUpdate(insertStr2);jTextArea1.setText(“);jTextArea1.append(“入库成功!“+“n“);if(d!=0) jTextArea1.set
18、Text(“);jTextArea1.append(“主键重复,请检查!“+“n“);con4.close();catch(SQLException es)System.out.println(es); 销售登记:if(e.getSource()=jButton4)String xiaoshouid,yaopinid,kehuid,xiaoshoudate,kucunid,cangkuid,Recode1,insertStr1,Recode2,updateStr1,userid; double xiaoshounum,yingfum;xiaoshouid=jTextField1.getText
19、();yaopinid=jTextField2.getText();kehuid=jTextField3.getText();xiaoshoudate=jTextField4.getText();xiaoshounum=Double.parseDouble(jTextField5.getText();yingfum=Double.parseDouble(jTextField6.getText();kucunid=jTextField9.getText();cangkuid=jTextField10.getText();userid=jTextField11.getText();trycon4=
20、DriverManager.getConnection(“jdbc:sqlserver:/localhost:1434;DatabaseName=maen;SelectMethod=Cursor“,“sa“,“123456“);sql4=con4.createStatement();rs4=sql4.executeQuery(“SELECT * FROM Sell“);while(rs4.next()String sellID =rs4.getString(1);String wpID=rs4.getString(2);String cusID=rs4.getString(3);if(xiao
21、shouid.equals(sellID) h=1; if(h=0) Recode1=“(“+“+xiaoshouid+“+“,“+“+yaopinid+“+“,“+“+kehuid+“+“,“+“+xiaoshoudate+“+“,“+xiaoshounum+“,“+yingfum+“,“+“+userid+“+“)“;insertStr1=“INSERT INTO Sell VALUES“+Recode1;sql4.executeUpdate(insertStr1);area.append(“登记成功!“+“n“);if(h=1) area.setText(“);area.append(“
22、主键重复,请检查!“+“n“);h=-1; con4.close();catch(SQLException es)System.out.println(es);area.setText(“);area.append(“主键不能为空!“+“n“);销售退货:if(e.getSource()=jButton1)trycon1=DriverManager.getConnection(“jdbc:sqlserver:/localhost:1433;DatabaseName=maen;“,“sa“,“123456“); sql1=con1.createStatement();String StorID,
23、DruID,DepotID,updateStr;double Storage_num;StorID=jTextField1.getText();DruID=jTextField2.getText();DepotID=jTextField3.getText();Storage_num=Double.parseDouble(jTextField4.getText();rs1=sql1.executeQuery(“SELECT * FROM Storage“);while(rs1.next()String storID=rs1.getString(1);String druID=rs1.getStr
24、ing(2);String depotID=rs1.getString(3);Double storage_nu =rs1.getDouble(4);if(storID.equals(StorID) b=Storage_num; c=b+storage_nu; updateStr=“UPDATE Storage SET storage_num= “+c+“WHERE storID = “+“+StorID+“+“AND“+“ wpID=“+“+DruID+“+“ AND“+“ depotID=“+“+DepotID+“;if(a=1) sql1.executeUpdate(updateStr)
25、;jTextField1.setEditable(false);jTextField2.setEditable(false);jTextField3.setEditable(false);if(a=0)jTextField4.setText(“回库失败“+“n“);统计功能:if(e.getSource()=jButton1)String date;date=Sell_time.getText();trycon1=DriverManager.getConnection(“jdbc:sqlserver:/localhost:1433;DatabaseName=maen;“,“sa“,“12345
26、6“); sql1=con1.createStatement();rs1=sql1.executeQuery(“SELECT * FROM Sell“);while(rs1.next()Date sell_time=rs1.getDate(4);Double ell_money=rs1.getDouble(6);String s=sell_time.toString();if(s.regionMatches(5,date,0,2) a+; money=money+ell_money; if(a!=0) Ell_money.setText(“+money);if(a=0) area.setTex
27、t(“);area.append(“该日没有记录,或输入不合法,输入格式“03”“+“n“);a=0;con1.close();catch(SQLException eb)System.out.println(eb); 2 计划2.1 软件说明本软件的主要功能为:(1)对物品入库和出库详细情况进行登记(2)对库存信息进行查询(3 定期对信息排序和生成报表(4)物品的销售处理及生成销售报表 条件与限制:考虑到本系统面向的用户群比较广泛,在设计时应注意使软件具有较强的可移植性;因本软件管理的某些信息属商业机密,必须注意信息的安全防范,同时应以标准的数据格式来实现,以方便数据共享;2.2 测试内容本
28、次测试主要任务是对仓储物资管理系统进行初步验收的测试。测试的主要内容为:系统重要功能测试、监理方测试发现问题的回归测试以及系统的性能测试。2.3 测试 1(员工登陆)本项测试采用黑盒法。主要依据需求分析文档,以需求分析文档中的功能模块为单位,对编码人员提交的成型系统进行测试,综合使用等价类划分法。2.3.1 条件员工登陆功能为:对登录系统的员工进行身份合法性检查,要求输入员工工号和密码。禁止身份信息不正确的用户登录;当输入密码错误次数超过一定限制时(初定为 3 次)将自动关闭系统,以防止非法穷举入侵;将成功的登录操作记入操作日志文件2.3.2 测试用例1有效等价类:输入为用户信息表中保存的员工
29、号和对应的密码。测试用例为:等价类编号 员工号 密码 输出1 10001 123456 “登录成功”2 10002 123123 “登录成功”符合预期结果。通过“查询”功能检查操作日志,发现已登记以上“登录数据库”操作及相应用户名密码。2无效等价类:员工号不在用户信息表中,密码在员工信息表中。测试用例为:用户名:10003密码: 123456点“确定”后,弹出“员工号和密码错误”对话框。员工号在员工信息表中,密码不在员工信息表中。测试用例为:用户名:10001密码: 123点“确定”后,弹出“员工号和密码错误”对话框。员工号和密码均在员工信息表中,但两者不匹配。测试用例为:用户名:10001密
30、码: 123123点“确定”后,弹出“员工号和密码错误”对话框。连续输入错误达 3 次时,登录对话框自动关闭。2.4 测试 2(入库登记)本项测试采用黑盒法。主要依据需求分析文档,以需求分析文档中的功能模块为单位,对编码人员提交的成型系统进行测试,综合使用等价类划分法。2.4.1 条件入库登记。功能为: 由员工输入物品的所有信息,系统检查该物品基本信息是否已作登记; 若该物品信息未作登记,则填写该物品详细信息单,并提交给数据库,写入物品信息文件,再填写入库单; 若该物品信息已作登记,则直接填写入库数据; 检查入库数据的合法性:即检查表单中的输入信息是否具有非法字符,物品来源(供应商信息)是否合
31、法; 若检查结果不合法,提示操作员重新输入;若检查结果合法,则根据申请内容对物品库存信息文件和入库文件进行更新,打印入库凭证,完成物品入库操作; 将成功的入库操作写入操作日志文件;2.4.2 测试用例情况一:(模拟)读入的物品号已在物品信息表中,弹出对话框:“该物品已存在,请输入入库时的必要信息!” 。“供应商号” , “类型” , “物品名” , “存放地点”框中将显示此物品号在物品信息表中对应的属性值。“最大量” , “最小量”框中将显示此物品号在库存信息表中对应的属性值。余下的“入库量” , “有效期” , “采购员”由用户填写。测试用例:物品号:000100010001,点“查询”按钮
32、,可得以上相关信息。经检查,各显示属性与数据库中的值一致。1有效等价类:“入库量”为正整数, “有效期”为 yyyy-mm-dd 格式的日期, “采购员”为任意字符串(采购员名) 。对上面的测试用例(物品号 000100010001) ,输入信息为:入库量:10; 有效期:2006-01-01; 采购员:李输出:“添加成功”经检查,数据库相关表都正确更新。2 无效等价类:“入库量”不是正整数。输出:“入库量应为正整数!” 。“入库量”为空。输出:“入库量不可为空!” 。“入库量”是正整数,但大于“最大量”框中的值。输出:“入库量不能大于最大量!” 。“入库量”是正整数且小于“最大量”框中的值。但“采购员”和(或) “有效期”为空。输出:“入库信息不能有一项为空!”“入库量”是正整数且小于“最大量”框中的值。 “采购员”非空。但“有效期”格式错。输出:“有效期应为 yyyy-mm-dd 格式!”情况二:(模拟)读入的物品号不在物品信息表中,弹出对话框:“该物品为新物品,请输入入库时的必要