《软件工程实验》实验指导书2016

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

个项目:在该项目上点右键,点“属性”,
如右图所示:
(3)在弹出的属性窗口中,首先在左边选择“Java Build Path”,然后到右上选择“Libraries” 标签,之后在最右边点击“Add Library…”按钮,如下图所示:
然后在新弹出的对话框中选择 JUnit4 并点击确定,如上图所示,JUnit4 软件包就被包含进 我们这个项目了。
用安装就可以在项目中测试相关的类,并且可以调试测试用例和被测类。下面以实例说明,如
何建立一个基于 JUnit4 的测试项目,对一个类当中的多个方法进行单元测试。
(1)新建一个名为 JUnitTest 的项目,在其中编写一个 Calculator 类,这是一个能够简单实
现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。这个类中我们故意保留
实验一 结对编程
一、实验目的
1)体验敏捷开发中的两人合作。 2)进一步提高个人编程技巧与实践。
二、实验内容及要求
1)选择一个程序实例,练习结对编程(pair programming)实践; 2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。 3)要求在结对编程工作期间,两人的角色至少切换 4 次; 4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
(3)生成 JUnit 测试框架:在 Eclipse 的 Package Explorer 中用右键点击该类弹出菜单,选 择“JUnit 测试用例”。在弹出的对话框中,进行相应的选择,如下图所示:
点击“下一步”后,系统会自动列出你 这个类中包含的方法,选择你要进行测试的 方法。此例中,我们仅对“加、减、乘、除” 四个方法进行测试。如右图所示:
public void square(int n) { result = n * n; }
public void squareRoot(int n) { //求平方根
for (; ) //Bug : 死循环
}
public void clear() { // 将结果清零
result = 0;
}
}
(2)将 JUnit4 单元测试包引入这
之后系统会自动生成一个新类 CalculatorTest,里面包含一些空的测试用例。 你只需要将这些测试用例稍作修改即可使 用。
பைடு நூலகம்
完整代码如下: package andycpp; import static org.junit.Assert.*; import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.internal.runners.TestClassRunner; import org.junit.runner.RunWith;
实验二 单元测试
一、实验目的 1) 掌握单元测试的方法; 2) 学习 JUnit 测试原理及框架; 3)掌握在 Eclipse 环境中加载 JUnit 及 JUnit 测试方法和过程。
二、实验内容与步骤
1. Eclipse 中 JUnit 的使用
Eclipse 集成了 JUnit,可以非常方便地编写 Test Case。Eclipse 自带了一个 JUnit 插件,不
每个细胞的状态由该细胞及周围 8 个细胞上一次的状态所决定; 如果一个细胞周围有 3 个细胞为生,则该细胞为生,即该细胞若原先为死则转为生, 若原先为生则保持不变; 如果一个细胞周围有 2 个细胞为生,则该细胞的生死状态保持不变; 在其它情况下,该细胞为死,即该细胞若原先为生则转为死,若原先为死则保持不变。 (2)推箱子游戏 在一个 M*N 的房间里有一个箱子和一个搬运工,搬运工的工作就 是把箱子推到指定的位置。注意:搬运工只能推,不能拉。因此,如右 图所示,箱子被推到一个角上,那么就不能再被移动了,如果箱子被推 到一面墙上,那么箱子只能沿着墙移动。 要求:现在给定房间的结构、箱子的位置、搬运工的位置和箱子要 被推去的位置,请计算出搬运工至少要推动箱子多少格? 输入:输入数据的第一行是一个整数 T(1<=T<=20),代表测试数据 的数量。然后是 T 组测试数据,每组测试数据的第一行是两个正整数 M,N(2<=M,N<=7),代表房间的大小。然后是一个 M 行 N 列的矩阵,代表房间的布局,其 中 0 代表空的地板,1 代表墙,2 代表箱子的起始位置,3 代表箱子要被推去的位置,4 代表搬 运工的起始位置。 输出:对于每组测试数据,输出搬运工最少需要推动箱子多少格才能帮箱子推到指定位置, 如果不能推到指定位置则输出-1。
《软件工程实验》 实验指导书
武汉理工大学计算机科学与技术学院 2016 年 9 月
1 实验目标
1)使学生加深对软件工程基本概念的理解,学会使用软件工程的思想、方法指 导软件开发。
2)通过实验,要求学生掌握在软件生存周期各阶段使用到的软件开发工具,能 独立安装并使用各类工具。
3)培养学生利用软件工具进行系统分析、设计、实现等实际能力。
游戏在一个类似于围棋棋盘一样的,可以无限延伸的二维方格网中进行。例如,设想每个 方格中都可放置一个生命细胞,生命细胞只有两种状态:“生”或“死”。图中,用黑色的方 格表示该细胞为“死”, 其它颜色表示该细胞为“生” 。游戏开始时, 每个细胞可以随机地(或 给定地)被设定为“生”或“死”之一的某个状态, 然后,再根据如下生存定律计算下一代每 个细胞的状态:
“Run As ——>JUnit Test”来运行我们的测试,运行结果如下:
进度条是红颜色表示发现错误,具体的测试结果在进度条上面有表示“共进行了 4 个测试, 其中 1 个测试被忽略,一个测试失败”。
实验四: UML 建模工具的安装与使用
安装并学习使用一种 UML 建模工具;了解该工具图形 应用的基本概念,重点掌握用例图、顺序图、状态图等 UML 模型图的绘制方法。
实验五:
选定一个系统案例,使用上一个实验中所安装的 UML 建
UML 系统分析与设计
模工具完成系统的分析与设计,绘制相应的 UML 模型图。
实验六:系统测试 实验七:Git 实战
在初步掌握 JMeter 系统测试工具的使用方法之后,通过 对一个软件实例来组织测试,以进一步熟悉 JMeter; 通过分析和采用适当的测试用例去发现程序中的错误, 提高软件测试的实践能力。 学习软件配置管理工具 Git 的相关内容;我们知道版本 控制,对于大中型软件系统的开发;利用假想的 IT 项 目,介绍该软件的使用方法。
三、示例程序问题描述
(1)生命游戏 生命游戏是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机,它包括一个二维矩
形世界,这个世界中的每个方格居住着一个活着的或死亡的细胞。一个细胞在下一个时刻生死 取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个 细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因太孤单 而死去。
2 实验项目及学时分配
序号
实验项 目 名称
1 结对编程
2 单元测试
3 代码评审与程序性能优化
4 UML 建模工具的安装与使用
5 UML 系统分析与设计
6 系统测试
7 Git 实战
实验学时 每组人数 实验类别 实验类型
4
2
专业基础 验证与设计
4
2
专业基础 验证与设计
4
2
专业基础 验证与设计
4
1
专业基础 验证与设计
@RunWith(TestClassRunner.class) public class CalculatorTest {
private static Calculator calculator=new Calculator(); @Before public void setUp() throws Exception {
4 实验组织
所有实验均以个人独立完成,或两人结对协作的方式展开,在实验室环境下进 行。实验指导教师帮助学生熟悉各类软件工具,培养符合软件工程方法的软件开发 技能;督促学生在正式实验前进行适当的预习或准备,在实验过程中按照实验步骤 积极动手进行实验操作,深入思考、分析和讨论,在课堂外再进行一定时间的练习, 按各个实验的具体要求完成和提交实验成果,增强解决实际问题的能力。
5 考核方式
结合平时考查,以实验实际操作的优劣、提交的文档和程序等作为考核依据。 实验成绩按五级制评分,课程结束,以学生实际实验工作能力的强弱作为评定成绩 的主要依据。
最终成绩 100% = 平时成绩 10% + 实验成绩 70% + 课程总结(含案例)20%
6 推荐教材及参考资料
1)《软件工程基础实验指导书》 自编 2)《构建之法:现代软件工程》,邹欣,人民邮电出版社,2015 3)《UML 与 Enterprise Architect 7.5 团队开发实务手册》,赖信仁著,UMLChina 改 编,电子工业出版社,2010 4)《零成本实现 Web 性能测试:基于 Apache JMeter 》温素剑编,电子工业出版 社,2012
8
1
专业基础
综合
4
1
专业基础 验证与设计
4
1
专业基础 验证与设计
3 单项实验内容及要求
实验要求学生按照面向对象方法,在软件工程思想指导下,独立或分组完成各 项实验,每个实验结束均需撰写和提交本实验的实验报告。
项目名称
实验内容
实验一:结对编程
实验二:单元测试 实验三:
代码评审与程序性能优化
练习结对编程(pair programming),体验敏捷开发中的 两人合作;两人一组,自由组合;使用一台计算机,共 同编码,完成实验要求。 安装 JUnit 单元测试工具;使用 Junit 对实验程序进行 单元测试。 针对前面实验中所完成的代码,进行代码评审(走查)和 性能分析;练习代码评审的两个方面:静态分析、动态 分析。
calculator.clear(); } @After public void tearDown() throws Exception { } @Test(timeout=1000) public void testAdd() {
calculator.add(2); calculator.add(3); assertEquals(5, calculator.getResult()); } @Test public void testSubstract() { calculator.add(10); calculator.substract(2); assertEquals(8,calculator.getResult()); } @Ignore("Multiply() Not yet implemented") @Test public void testMultiply() { } @Test(expected =ArithmeticException.class) public void testDivide() { calculator.add(8); calculator.divide(0); assertEquals(4,calculator.getResult()); } } (4)运行测试代码:按照上述代码修改完毕后,我们在 CalculatorTest 类上点右键,选择
了一些 Bug 用于演示,这些 Bug 在注释中都有说明。该类代码如下:
public class Calculator{
private static int result;
// 静态变量,用于存储运行结果
public void add(int n) { result = result + n; }
public void substract(int n) {
result = result - 1; //故意的 Bug,应该是 result =result-n
}
public void multiply(int n) { } // 假设此方法在项目完成过程中尚未写好
public void divide(int n) { result = result / n; }
相关文档
最新文档