测试与调试 滕娟

测试用例

 

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)+"\n");

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

            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)+"\n");           

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

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

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

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

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,"删除书籍失败!");

        }}}}

 

 

调试截图:

 

 

 

posted on 2015-06-19 22:25  薄荷绿的feel  阅读(758)  评论(5编辑  收藏  举报