• 测试与调试 滕娟


    测试用例

    github地址:https://github.com/mygithubq/libraryManagement

    (一)用例图

    用例图在需求分析阶段有重要作用,它是作为参与者的外部用户所能观察到的系统功能模型图。整个开发过程都是围绕需求阶段用例进行的。首先需要确定参与者。

    管理员在登录后对读者信息进行查询以及对书籍的添加、删除、更新和查询。

    用户在登录后可以对书籍信息进行查询。

     

    图书管理系统管理员-用户用例图

    测试结果

    测试:

    测试截图:

    图1:图书管理系统主界面

     

    图2:查询读者信息

     

    图3:更新图书信息

     

    图4:更新书籍成功

     

    测试代码:

    1用户登录界面

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    import java.sql.*;

    import java.io.*;

    public class UserLogin extends JFrame implements ActionListener

    {

    private static final long serialVersionUID = 1L;

    String name;

    DataBaseManger db=new DataBaseManger();

    MainWindow mainFrame;

    JFrame f=null;

    JPanel panel1,panel2;

    JLabel UserLabel,PasswordLabel;

    JTextField UserTextField;

    JPasswordField PasswordTextField;

    JButton YesBtn,CancelBtn;

    Container c;

    ResultSet rs;

    public UserLogin(MainWindow mainFrame)

    {

    super("用户登录");

    this.mainFrame=mainFrame;

    UserLabel=new JLabel("用户名",JLabel.CENTER);

    PasswordLabel=new JLabel("密码",JLabel.CENTER);

    UserTextField=new JTextField(10);

    PasswordTextField=new JPasswordField(10);

    YesBtn=new JButton("确定");

    CancelBtn=new JButton("取消");

    YesBtn.addActionListener(this);

    CancelBtn.addActionListener(this);

    panel1=new JPanel();

    panel1.setLayout(new GridLayout(2,2));

    panel2=new JPanel();

    c=getContentPane();

    c.setLayout(new BorderLayout());

    panel1.add(UserLabel);

    panel1.add(UserTextField);

    panel1.add(PasswordLabel);

    panel1.add(PasswordTextField);

    c.add(panel1,BorderLayout.CENTER);

    panel2.add(YesBtn);

    panel2.add(CancelBtn);

    c.add(panel2,BorderLayout.CENTER);

    setSize(300,150);

    JLabel JL=new JLabel();

    c.add(JL,"North");

    c.add(panel1,"Center");

    c.add("South",panel2);

    panel1.setBackground(new Color(255,255,255));

    setLocation(400,200);

    }

    public void actionPerformed(ActionEvent e)

    {if(e.getSource()==CancelBtn)

    {this.dispose();}

    else

    {char[] password=PasswordTextField.getPassword();

    String passwordSTR=new String(password);

    String strSQL;

    strSQL="select * from users where uname='"+UserTextField.getText().trim()+"'and upassword='"+passwordSTR+"'";

    rs=db.getResult(strSQL);

    boolean isExist=false;

    try

    {   rs.next();

    mainFrame.loginNo=rs.getString(1);

    name=rs.getString(1);

    mainFrame.loginName=name;

    int right;

    right=rs.getInt(1);

    mainFrame.setenabled(right);

    if(name.length()!=0)

    isExist=true;

    }

    catch(Exception pe)

    { pe.printStackTrace(); }

    if(UserTextField.getText().trim().equals(""))

    {

    JOptionPane.showMessageDialog(null,"用户名不可为空!");

    return;

    }

    if(passwordSTR.equals(""))

    {

    JOptionPane.showMessageDialog(null,"密码不可为空!");

    return;

    }

    if(!isExist)

    { JOptionPane.showMessageDialog(null,"用户名不存在或者密码不正确!");}

    else

    {JOptionPane.showMessageDialog(null,"登录成功");

    this.dispose();}

    }}}

    表2 读者查询模块的测试用例

    public void actionPerformed(ActionEvent e)

    {

    if(e.getActionCommand()=="确定")

    this.dispose();

    if(e.getActionCommand()=="查询")

    {

    String sno=jtf.getText();

    String sqlstrR;

    if((mw.loginNo.trim().equals(sno))||(mw.loginName.trim().equals("admin")))

    {   sqlstrR="select * from reader where sno='"+sno+"'";

    rs=db.getResult(sqlstrR);

    try

    {    rs.next();

    jta.setText("");

    jta.append("学号为:"+rs.getString(1)+", "+"姓名为:"+rs.getString(2)+""+"性别为:"+rs.getString(3)+" ");

    jta.append("年龄为:"+rs.getString(4)+",  "+"密码为:"+rs.getString(5)+""+" 学院为:"+rs.getString(6)+" ");

                String sqlstr="select * from lendbook where sno='"+sno+"'";

         rs=db.getResult(sqlstr);}

    catch(Exception pe) 

    {   pe.printStackTrace();  } }

    else

    {

    JOptionPane.showMessageDialog(null,"请输入正确的证件号!");

    3 图书查询模块的测试用例

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    import javax.swing.event.*;

    import java.sql.*;

    public class FindBook extends JFrame implements ActionListener

    {   DataBaseManger db=new DataBaseManger();

    ResultSet rs;

    JLabel select=new JLabel("请输入书名或者索书号");

    JTextField jtf=new JTextField(20);

    JPanel a=new JPanel();

    JPanel b=new JPanel();

    JLabel lb=new JLabel("书籍信息");

    JButton findbt=new JButton("查询");

    JButton yesbt=new JButton("确定");

    JTextArea jta=new JTextArea(10,10);

    public FindBook()

    {   super("查询书籍信息");

    Container c=getContentPane();

    a.add(select);

    a.add(jtf);

    a.add(findbt);

    c.add(a,BorderLayout.NORTH);

    b.add(lb);

    b.add(jta);

    b.add(yesbt);

    c.add(b,BorderLayout.SOUTH);

    yesbt.addActionListener(this);

    findbt.addActionListener(this);

    setSize(500,300);

    setVisible(true);

    setLocation(400,150);

    }

    public void actionPerformed(ActionEvent e)

    {   if(e.getActionCommand()=="确定")

    this.dispose();

    if(e.getActionCommand()=="查询")

    {   String bname=jtf.getText();

    String bno=jtf.getText();

    String sqlstr;

    sqlstr="select * from book where bname='"+bname+"' or bno='"+bno+"'";

    rs=db.getResult(sqlstr);

    try

    {   jta.setText("");

    if(rs.next()){

    jta.append("索书号为:"+rs.getString(1)+" ");           

            jta.append("书名为:"+rs.getString(2)+" ");            

            jta.append("现有数量为:"+rs.getString(3)+" ");            

            jta.append("出版社为:"+rs.getString(5)+" ");

    jta.append("作者为:"+rs.getString(4)+" ");   }

    else

    {jta.append("对不起,没有您要找的书籍!"); } }

    catch(Exception pe) 

    { pe.printStackTrace();          

    } }}}

    4书籍删除模块的测试用例

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    import javax.swing.event.*;

    import java.sql.*;

    public class DeleteBook extends JFrame implements ActionListener  

    {   MainWindow mw=new MainWindow();

    DataBaseManger db=new DataBaseManger();

    ResultSet rs;

    JLabel bno=new JLabel("<html><font color=#000000 size='4'>请输入要删除的图书索引号:</font>",SwingConstants.CENTER);

    JLabel L;

    JTextField tno=new JTextField(10);

    JTable table;

    JButton delbt=new JButton("删除");

    JButton yesbt=new JButton("确定");

    JPanel p1=new JPanel();

    JPanel p2=new JPanel();

    public DeleteBook()

    {   super("删除图书");

    Container c=getContentPane();

    p1.add(bno);

    p1.add(tno);

    c.add(p1,BorderLayout.NORTH);

    p2.add(delbt);

    p2.add(yesbt);

    c.add(p2,BorderLayout.SOUTH);

    delbt.addActionListener(this);

    yesbt.addActionListener(this);

    setSize(400,300);

    setLocation(400,150);

    JPanel p=new JPanel();

    p.setLayout(new BorderLayout()); }

    public void actionPerformed(ActionEvent e)

    {   String bno;

       if(e.getActionCommand()=="确定")

    this.dispose();

    if(e.getActionCommand()=="删除")

    {   bno=tno.getText();

    String sqlstr="delete bno from book where bno='"+bno+"'";

            boolean result=db.updateSql(sqlstr);

            db.closeConnection();

            if(result)

            {JOptionPane.showMessageDialog(null,"删除书籍成功!");}

            else

            {JOptionPane.showMessageDialog(null,"删除书籍失败!");

            }}}}

    5 书籍添加模块的测试用例

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    import javax.swing.event.*;

    import java.sql.*;

    public class AddBook extends JFrame implements ActionListener  

    {  MainWindow mw=new MainWindow();

    DataBaseManger db=new DataBaseManger();

    ResultSet rs;

    JPanel a,b,c,d,e,f;

        JLabel bname=new JLabel();

    JLabel bno=new JLabel();

    JLabel bnum=new JLabel();

    JLabel author=new JLabel();

    JLabel publisher=new JLabel();

    JTextField tname=new JTextField(20);

    JTextField tno=new JTextField(20);

    JTextField tnum=new JTextField(20);

    JTextField tauthor=new JTextField(20);

    JTextField tpublisher=new JTextField(20);

    JButton addbt=new JButton("添加");

        JButton yesbt=new JButton("确定");

    JPanel p3=new JPanel();

       public AddBook()

    {

    super("添加图书");

            a=new JPanel();

    b=new JPanel();

    c=new JPanel();

    d=new JPanel();

    e=new JPanel();

    f=new JPanel();

                    bname.setText("书名  :");

                    bname.setFont(new Font("Dialog",0,12));

                    bno.setText(" 索书号  :");

                    bno.setFont(new Font("Dialog",0,12));

                    bnum.setText("数量:");

                    bnum.setFont(new Font("Dialog",0,12));

                    author.setText("作者:");

                    author.setFont(new Font("Dialog",0,12));

                    publisher.setText(" 出版社  :");

                    publisher.setFont(new Font("Dialog",0,12));

            a.add(bname);

                    a.add(tname);

    b.add(bno);

                    b.add(tno);

    c.add(bnum);

                    c.add(tnum);

    d.add(author);

                    d.add(tauthor);

    e.add(publisher);

                    e.add(tpublisher);

    f.add(addbt);

                    f.add(yesbt);

         add(a);

                    add(b);

                    add(c);

                    add(d);

                    add(e);

                    add(f);

    setLayout(new GridLayout(8,1));

    addbt.addActionListener(this);

    yesbt.addActionListener(this);

    setSize(500,300);

    setLocation(400,150);

    }

    public void actionPerformed(ActionEvent e)

    {

    String bname,bno,author,publisher;

    int bnum;

    if(e.getActionCommand()=="确定")

    this.dispose();

    if(e.getActionCommand()=="添加")

    {

    bname=tname.getText();

    bno=tno.getText();

    author=tauthor.getText();

    publisher=tpublisher.getText();

    bnum=Integer.parseInt(tnum.getText());

    String sqlstr1="select bno from book";

    rs=db.getResult(sqlstr1);

    try{

    while(rs.next())

    {

    if(rs.getString(1).trim().equals(bno))

    {

    JOptionPane.showMessageDialog(null,"此书号已存在,请重新输入索书号!");

    }

    else

    {break;}

    }

    }

    catch(Exception pe) 

                 pe.printStackTrace();         

    String sqlstr="insert into book (bno,bname,bnum,author,publisher) values ('"+bno+"','"+bname+"','"+bnum+"','"+author+"','"+publisher+"')";

            boolean result=db.updateSql(sqlstr);

            db.closeConnection();

            if(result)

            {

             JOptionPane.showMessageDialog(null,"添加书籍成功!");

            }

            else

            {

             JOptionPane.showMessageDialog(null,"添加书籍失败!");

            }}}}

    5.删除图书信息

    序号

    测试内容

    测试数据

    期望结果

    测试结果

    测试结论

    1

    合法输入格式

    000000,000000

    登陆成功

    登陆成功

    正确

    2

    错误用户名

    Admin,00000

    提示“用户名不存在或者密码不正确”

    提示“用户名不存在或者密码不正确”

    正确

    3

    错误密码

    Admin,xx,正确验证码

    提示“用户名不存在或者密码不正确”

    提示“用户名不存在或者密码不正确”

    正确

    4

    用户名为空

    Null,00000

    提示“用户名不能为空”

    提示“用户名不能为空”

    正确

    5

    密码为空

    000000,Null

    提示“密码不能为空”

    提示“密码不能为空”

    正确

    表1 登陆模块的测试用例

    序号

    测试内容

    测试数据

    期望结果

    测试结果

    测试结论

    1

    合法输入格式

    00001

    王明   00001

     女

    20

    123456

    计算机

    王明  00001

     女

    20

    123456

    计算机

    正确

    2

    错误证件号名

    10060028

    提示“请输入正确的证件号!”

    提示“请输入正确的证件号!”

    正确

    3

    空数据

    Null

    提示“请输入正确的证件号!”

    提示“请输入正确的证件号!”

    正确

    表2 读者查询模块的测试用例

    序号

    测试内容

    测试数据

    期望结果

    测试结果

    测试结论

    1

    合法输入格式

    00001

    索书号为:00001,书名为:Java程序设计,现有数量为1

    ,出版社为:清华大学出版社,作者为:沈泽刚

    索书号为:00001,书名为:Java程序设计,现有数量为1

    ,出版社为:清华大学出版社,作者为:沈泽刚

    正确

    2

    错误索书号

    0

    提示“对不起,没有您要找的书籍!”

    提示“对不起,没有您要找的书籍!”

    正确

    3

    空索书号

    Null

    提示“对不起,没有您要找的书籍!”

    提示“对不起,没有您要找的书籍!”

    正确

    表3 图书查询模块的测试用例

    序号

    测试内容

    测试数据

    期望结果

    测试结果

    测试结论

    1

    合法输入格式

    00001

    提示“删除成功”

    提示“删除成功”

    正确

    2

    错误索书号

    0

    提示“删除书籍失败!”

    提示“删除书籍失败!”

    正确

    3

    空数据

    Null

    提示“删除书籍失败!”

    提示“删除书籍失败!”

    正确

    表4书籍删除模块的测试用例

    序号

    测试内容

    测试数据

    期望结果

    测试结果

    测试结论

    1

    合法输入格式

    中国近现代史纲要,00006,5,编写组,高等教育出版社

    提示“添加书籍成功!”

    提示“添加书籍成功!”

    正确

    2

    重复书号

    中国近现代史纲要,00006,5,编写组,高等教育出版社

    提示“此书号已存在,请重新输入索书号!”

    提示“此书号已存在,请重新输入索书号!”

    正确

    3

    遗漏书名

    Null,00006,5,编写组,高等教育出版社

    提示“添加书籍失败!”

    提示“添加书籍失败!”

    正确

    4

     遗漏书号

    中国近现代史纲要,Null,5,编写组,高等教育出版社

    提示“添加书籍失败!”

    提示“添加书籍失败!”

    正确

    5

     遗漏数量

    中国近现代史纲要,00006,Null,编写组,高等教育出版社

    提示“添加书籍失败!”

    提示“添加书籍失败!”

    正确

    6

    遗漏作者

    中国近现代史纲要,00006,5,Null,高等教育出版社

    提示“添加书籍失败!”

    提示“添加书籍失败!”

    正确

    7

    遗漏出版社

    中国近现代史纲要,00006,5,编写组,Null

    提示“添加书籍失败!”

    提示“添加书籍失败!”

    正确

    表5 书籍添加模块的测试用例

    序号

    测试内容

    测试数据

    期望结果

    测试结果

    测试结论

    1

    合法输入格式

    行政能力测试,00004,7,李永新,中共教育出版社

    提示“更新书籍成功!”

    提示“更新书籍成功!”

    正确

    2

    不存在书号

    中国近现代史纲要,00106,5,编写组,高等教育出版社

    提示“更新书籍失败!”

    提示“更新书籍失败!”

    正确

    3

    遗漏书名

    Null,00004,7,李永新,中共教育出版社

    提示“更新书籍失败!”

    提示“更新书籍失败!”

    正确

    4

     遗漏书号

    行政能力测试,Null,7,李永新,中共教育出版社

    提示“更新书籍失败!”

    提示“更新书籍失败!”

    正确

    5

     遗漏数量

    行政能力测试,00004,Null,李永新,中共教育出版社

    提示“更新书籍失败!”

    提示“更新书籍失败!”

    正确

    6

    遗漏作者

    行政能力测试,00004,7,Null,中共教育出版社

    提示“更新书籍失败!”

    提示“更新书籍失败!”

    正确

    7

    遗漏出版社

    行政能力测试,00004,7,李永新,Null

    提示“更新书籍失败!”

    提示“更新书籍失败!”

    正确

    表6 书籍更新模块的测试用例

        3.登录用户名:00000 密码:00000

    调试方法

    调试代码:

    1用户登录界面

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    import java.sql.*;

    import java.io.*;

    public class UserLogin extends JFrame implements ActionListener

    {

    private static final long serialVersionUID = 1L;

    String name;

    DataBaseManger db=new DataBaseManger();

    MainWindow mainFrame;

    JFrame f=null;

    JPanel panel1,panel2;

    JLabel UserLabel,PasswordLabel;

    JTextField UserTextField;

    JPasswordField PasswordTextField;

    JButton YesBtn,CancelBtn;

    Container c;

    ResultSet rs;

    public UserLogin(MainWindow mainFrame)

    {

    super("用户登录");

    this.mainFrame=mainFrame;

    UserLabel=new JLabel("用户名",JLabel.CENTER);

    PasswordLabel=new JLabel("密码",JLabel.CENTER);

    UserTextField=new JTextField(10);

    PasswordTextField=new JPasswordField(10);

    YesBtn=new JButton("确定");

    CancelBtn=new JButton("取消");

    YesBtn.addActionListener(this);

    CancelBtn.addActionListener(this);

    panel1=new JPanel();

    panel1.setLayout(new GridLayout(2,2));

    panel2=new JPanel();

    c=getContentPane();

    c.setLayout(new BorderLayout());

    panel1.add(UserLabel);

    panel1.add(UserTextField);

    panel1.add(PasswordLabel);

    panel1.add(PasswordTextField);

    c.add(panel1,BorderLayout.CENTER);

    panel2.add(YesBtn);

    panel2.add(CancelBtn);

    c.add(panel2,BorderLayout.CENTER);

    setSize(300,150);

    JLabel JL=new JLabel();

    c.add(JL,"North");

    c.add(panel1,"Center");

    c.add("South",panel2);

    panel1.setBackground(new Color(255,255,255));

    setLocation(400,200);

    }

    public void actionPerformed(ActionEvent e)

    {if(e.getSource()==CancelBtn)

    {this.dispose();}

    else

    {char[] password=PasswordTextField.getPassword();

    String passwordSTR=new String(password);

    String strSQL;

    strSQL="select * from users where uname='"+UserTextField.getText().trim()+"'and upassword='"+passwordSTR+"'";

    rs=db.getResult(strSQL);

    boolean isExist=false;

    try

    {   rs.next();

    mainFrame.loginNo=rs.getString(1);

    name=rs.getString(1);

    mainFrame.loginName=name;

    int right;

    right=rs.getInt(1);

    mainFrame.setenabled(right);

    if(name.length()!=0)

    isExist=true;

    }

    catch(Exception pe)

    { pe.printStackTrace(); }

    if(UserTextField.getText().trim().equals(""))

    {

    JOptionPane.showMessageDialog(null,"用户名不可为空!");

    return;

    }

    if(passwordSTR.equals(""))

    {

    JOptionPane.showMessageDialog(null,"密码不可为空!");

    return;

    }

    if(!isExist)

    { JOptionPane.showMessageDialog(null,"用户名不存在或者密码不正确!");}

    else

    {JOptionPane.showMessageDialog(null,"登录成功");

    this.dispose();}

    }}}

    2书籍删除模块的测试用例

    import java.awt.*;

    import java.awt.event.*;

    import javax.swing.*;

    import javax.swing.event.*;

    import java.sql.*;

    public class DeleteBook extends JFrame implements ActionListener  

    {   MainWindow mw=new MainWindow();

    DataBaseManger db=new DataBaseManger();

    ResultSet rs;

    JLabel bno=new JLabel("<html><font color=#000000 size='4'>请输入要删除的图书索引号:</font>",SwingConstants.CENTER);

    JLabel L;

    JTextField tno=new JTextField(10);

    JTable table;

    JButton delbt=new JButton("删除");

    JButton yesbt=new JButton("确定");

    JPanel p1=new JPanel();

    JPanel p2=new JPanel();

    public DeleteBook()

    {   super("删除图书");

    Container c=getContentPane();

    p1.add(bno);

    p1.add(tno);

    c.add(p1,BorderLayout.NORTH);

    p2.add(delbt);

    p2.add(yesbt);

    c.add(p2,BorderLayout.SOUTH);

    delbt.addActionListener(this);

    yesbt.addActionListener(this);

    setSize(400,300);

    setLocation(400,150);

    JPanel p=new JPanel();

    p.setLayout(new BorderLayout()); }

    public void actionPerformed(ActionEvent e)

    {   String bno;

       if(e.getActionCommand()=="确定")

    this.dispose();

    if(e.getActionCommand()=="删除")

    {   bno=tno.getText();

    String sqlstr="delete bno from book where bno='"+bno+"'";

            boolean result=db.updateSql(sqlstr);

            db.closeConnection();

            if(result)

            {JOptionPane.showMessageDialog(null,"删除书籍成功!");}

            else

            {JOptionPane.showMessageDialog(null,"删除书籍失败!");

            }}}}

    调试截图:

     

  • 相关阅读:
    java--面向抽象编程
    java--面向接口编程
    一个网页的测试用例
    浏览器Notwork XHR被隐藏了
    在element-ui label中设置空格
    数组对象排序
    js动态替换和插入字符串
    vue-quill-editor回显时移除焦点
    vue中监听页面是否有回车键按下
    vue-quill-edito 字体倾斜加粗无效
  • 原文地址:https://www.cnblogs.com/tuanduiboke-/p/4589844.html
Copyright © 2020-2023  润新知