信 息 工 程 学 院
软件测试与自动化 实习报告
一、实习题目:Junit单元测试
二、 实习过程
1、实验目的
1) 掌握Junit的安装及其与Eclipse的集成。
2) 利用Junit进行单元测试。
2、实验步骤
3) Junit的安装及其与Eclipse的集成。
(1)从http://www.Junit.org下载Junit压缩包,把Junit压缩包解压到一个物理路径(例C:\junit4.8.2)
(2)记录Junit4.8.2.jar文件所在目录。(例c:\junit4.8.2\junit-4.8.2.jar )
(3)设置环境变量CLASS_PATH,变量值为c:\junit4.8.2\junit-4.8.2.jar。
(4)在Eclipse菜单“project”的子项“properties”中选择“Java Build Path”,单击
“Libraries”标签,添加External JARs,即选择junit.jar或junit-4.8.2.jar,单击
打开,就完成了Junit的安装。
4) Junit单元测试
实习题1:利用Junit Test Case生成测试用例的框架,在框架中设计测试代码,完成对
getId(),setId(),getName(),setScore()函数的测试。
public class Student {
private String id=null;
private String name=null;
private int score;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
package JunitTest;
import static org.junit.Assert.*;
import org.junit.Test;
public class StudentTest {
Student stu = new Student() ;
@Test
public void testGetId() {
String str = stu.getId() ;
stu.setId("Hello") ;
assertNull("this object is null", str) ;
assertEquals("Hello", stu.getId()) ;
// fail("Not yet implemented");
}
@Test
public void testSetId() {
stu.setId("Mr Luo") ;
assertEquals("hello", stu.getId(), "Mr Luo") ;
// fail("Not yet implemented");
}
@Test
public void testGetName() {
String str = stu.getName() ;
stu.setName("Luo Nian") ;
assertNull("this object is null", str) ;
assertEquals(Luo Nian", stu.getName()) ;
// fail("Not yet implemented");
}
@Test
public void testSetScore() {
stu.setScore(20) ;
assertEquals("hello2", stu.getScore(), 20) ;
// fail("Not yet implemented");
}
}
测试结果截图:
实验题2:实现教学示例中money类的加钱和判断钱数是否相等方法的测试。
package JunitTest;
public class money {
private int fAmount;//余额
private String fCurrency;//货币类型
public money(int amount, String currency) {
fAmount= amount;
fCurrency= currency; }
public int amount() {
return fAmount;}
public String currency() {
return fCurrency;}
public money add (money m) {//加钱
return new money(amount()+m.amount(), currency());
}
public boolean equals (Object anObject) {//判断钱数是否相等
if (anObject instanceof money) {
money aMoney= (money)anObject;
return aMoney.currency().equals(currency())
&& amount() == aMoney.amount();}
return false;
} }
测试类:
package JunitTest;
import static org.junit.Assert.*;
import org.junit.Test;
public class moneyTest {
@Test
public void testAdd() {
money m12CHF= new money(12, "CHF"); //本行和下一行进行一些初始化
money m14CHF= new money(14, "CHF");
money expected= new money(26, "CHF");//预期的结果
money result= m12CHF.add(m14CHF); //运行被测试的方法
assertTrue(expected.equals(result)); }
@Test
public void testEqualsObject() {
money m12CHF= new money(12, "CHF"); //本行和下一行进行一些初始化
money m14CHF= new money(14, "CHF");
assertTrue(!m12CHF.equals(null));//进行不同情况的测试
assertEquals(m12CHF, m12CHF);
assertEquals(m12CHF, new money(12, "CHF"));
assertTrue(!m12CHF.equals(m14CHF));}
}
测试结果截图:
实验题3:设计判断一个数是不是素数的程序,用基本断言类型实现测试,并用setup
()初始化测试环境。
package JunitTest;
public class Primes {
public int in;
public int temp=0;
public Primes(int in){
this.in = in;
}
public int Division(int k1,int k2){
if(k1%k2==0)
return 0;
else
return 1;
}
public int Primestest(int a){
temp = a/2;
for(int i=2;i<=temp;i++){
if(Division(a,i)==0)
return 0;
}
return 1;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Primes p1 = new Primes(13);
int b = p1.Primestest(p1.in);
if(b==0) System.out.println("这不是素数!");
else System.out.println("这是素数!");
}
}
测试类:
package JunitTest;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class PrimesTest {
public Primes num13;
public Primes num14;
@Before
public void setUp() throws Exception {
num13 = new Primes(13);
num14 = new Primes(14);
}
@After
public void tearDown() throws Exception {
}
@Test
public void testPrimestest() {
int result1 = num13.Primestest(num13.in);
int result2 = num13.Primestest(num14.in);
assertEquals(1,result1);
assertEquals(0,result2);
//fail("Not yet implemented");
}
}
测试结果截图:
三、实验总结:
这次实验比较简单,首先理解了书本上用JUnit进行单元测试的方法后,就开始写相关的测试类,单元测试比较方便,由于用java开发,很多测试方法可以直接调用,整个实现起来比较方便,并且省去了很多手工测试的时间。
学生信息管理系统
单元测试报告
[二零##年十二月二日]
1.1为了保证学生信息管理系统的各项功能可靠的实现,特编写了此测试计划,对所开发软件的各功能模块和事例进行测试。
1.2学会使用简单的单元测试工具,对系统模块进行测试分析,并编写测试用例。
1.3为软件单元的评审验收提供依据.
2.单元模块概述
2.1功能需求分析
本系统由系统用户管理、学生管理、班级信息管理、课程设置和成绩管理几个模块组成。
2.1.1 系统用户管理模块
系统用户管理模块主要是对用户信息的管理,它包括用户登录、添加用户、修改用户密码。
2.1.1.1 用户登录
用户的登录限于已注册的用户,只有已注册的用户才能登录系统。其实现过程:
输入:用户名(用于登录账号);
输入:密码。
点击:登录按钮。
处理:1)输入信息的合法性。
2)操作成功,登录系统。否则,给出出错提示。
输出:登录成功或者登录失败的提示。
2.1.1.2 添加用户信息
增加一个新的用户。其实现过程如下:
输入:用户名(用于登录帐号),姓名,密码,权限。
处理:1)数据有效性检验。
2)将用户信息保存到数据库对应的数据表中
3)操作成功,给出成功提示,否则给出出错提示。
输出:操作结果。成功给予成功提示,失败给予失败提示,并且给出失败原因。
2.1.1.3 修改用户密码
修改密码用于用户对自己的密码进行修改。
输入:旧密码,新密码,确认密码
处理:1)输入数据有效性的验证,密码长度为6-20。
2)判断新密码与确认密码是否相同,如果不相同,给出出错提示。
3)新密码与确认密码相同,判断旧密码是否正确,如果不正确给出出错提示。
4)新密码与确认密码相同,旧密码正确,用新密码替换原来旧密码。操作成功, 给出成功提示,否则给出出错信息。
输出:操作成功,系统提示密码修改成功,反之,系统提示密码修改错误,显示失败的原因
2.2 主要测试工具的介绍
测试单元的介绍和使用(Visual Unit测试工具)
2.2.1直接解压“Visualunit1.4.5”文件,点击“setup”进行安装,安装完成后形成的文件:最后安装目录结果如图所示。
2.2.2点击运行Visual Unit主界面如下。
2.2.3信息窗口及其菜单
2.3.4建立与配置测试工程
建立测试工程:
测试工程使用与产品工程相同的开发环境建立和编译,运行测试工程即可执行测试,例如,产品工程的开发环境是VC6.0,则同样用VC6.0建立、编译测试工程。
测试工程的命名建议采用"Test"+产品工程名,如TestDemo。特别提醒:测试工程不能命名为:xxxTester,因为这是测试文件的专用命名格式。
1. 新建一个“TestX”工程作为测试的工作区:如图所示。
建立一个“Test”的工程
2. 工具->选项->编辑器,选择“自动重新载入外部修改的文件”:如图所示。
3. 选项->目录,添加INCLUDE文件和JENNY文件:如图所示。
4. 工程->设置 ,在C/C++目录下的预处理出程序定义里添加_VUNIT:如图所示。
5.添加头文件:
6. 启动VU软件,点击菜单,选择目录,在目录上将产品工程目录和测试工程目录相对的文件路径导入. 点击菜单,选择选项,检查运行的环境是否正确,导入文件到工程。
7. 点击导航窗口的定义数据输出, 点击图中的确定后,跳出的窗口:如图所示。
8.在导航窗口中选择函数“OnClose()”:如图所示。
3.主要测试内容
测试内容
3.1管理员登录模块
3.2学生成绩录入模块
2.2.4学生信息修改模块
2.2.5学生信息查询模块
4.1用户登录(01)
本测试考虑到:未注册用户名的处理,用户名与密码不匹配处理
4.2.1控制
利用白盒测试和黑盒测试相结合的方式。
4.2.2输入和输出
4.2成绩录入模块(02)
本测试考虑到:输入信息格式的合法性,学生是否注册。
4.2.1控制
利用白盒测试和黑盒测试相结合的方式。
4.2.2输入和输出
4.3信息修改模块(03)
本测试考虑到:输入信息格式的合法性,学生是否注册。
4.3.1控制
利用白盒测试和黑盒测试相结合的方式。
4.3.2输入和输出
4.4信息查询模块(04)
本测试考虑到:输入信息格式的合法性,学生是否注册。
4.4.1控制
利用白盒测试和黑盒测试相结合的方式。
4.4.2输入和输出
5.1范围
所选择的测试用例基本上能够检查到所有合法与不合法的输入。
其局限性在于对于例如家庭地址等字段,无法检查其语义的有效性。
5.2数据整理
输入的测试数据基本上能够满足测试的预期的要求,整个的数据处理基本上可以达到预期的结果。测试基本通过
6.实验总结:
这次实验我总的来说准备的不充分,后来的时候也花了相当多的时间补做这个实验,在使用工具的时候也遇见了比较多的困难,没有提前学习教程是其中的一个方面。在这个实验中单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。 单元测试不仅仅是作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。测试用例的核心是输入数据。预期输出是依据输入数据和程序功能来确定的。在用例方面和使用软件方面我还做得不好。
案例演示1启动CruiseControl程序编辑CruiseControl路径下的cruisecontrolbat文件在最下面的位…
5etesting论坛项目自动化测试报告版本10Page1of75etesting论坛项目自动化测试报告版本10修改记录Page2…
XXXX客户自动化测试可行性报告XXXX客户网银资金管理系统引入自动化测试的可行性分析报告版本10111XXXX客户自动化测试可行…
软件测试自动化实验报告班级姓名学号一实验目的掌握软件测试自动化的基础知识二实验内容1软件测试自动化的初步介绍和产生软件测试自动化就…
实验一QTP自动化测试一实验目的和要求测试登录模块的功能二实验步骤和原理1设计好测试用例当然这步可以先做这里我们使用5个测试用例来…
实验二Junit单元测试实验报告实验内容利用Junit对实验程序Point2djava进行单元测试实验目的掌握单元测试的方法掌握在…
BITCOM08036SoftwareTestingTechniquesSpring20xx软件测试技术单元测试实践实验报告1BI…
华北电力大学实验报告实验名称课程名称软件测试专业班级软件1101学生姓名张晓琳号20xx09020xx1成绩指导教师李整实验日期2…
华北电力大学科技学院实验报告实验名称课程名称软件测试专业班级学生姓名号成绩指导教师李整实验日期20xx525学华北电力大学科技学院…
华北电力大学实验报告实验名称课程名称软件测试专业班级学生姓名号成绩指导教师李整实验日期20xx512学华北电力大学科技学院实验报告…
文件编号:PTS-PDP–UTR单元测试报告拟制:____________________日期:_________________…