TJU_SCS_软件测试_Lab1

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

Normal
0
false

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

Normal
0
false

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

一.实验要求

  1. Install Junit(4.12), Hamcrest(1.3) with Eclipse

  2. Install Eclemma with Eclipse

  3. Write a java program for the triangle problem and test the program with Junit.

  a) Description of triangle problem:

    Function triangle takes three integers a,b,c which are length of triangle sides; calculates whether the triangle is equilateral, isosceles, or scalene.

二.实验准备

  操作系统: Windows 8.1 64x

  IDE:IntelliJ IDEA 15.0.1

三.实验步骤

  1. 安装JUnit 和Hamcrest

    需要导入JUnit和Hamcrest的jar包。

       首先,先打开IntelliJ IDEA,用maven创建一个java工程。

    

其次,在网络上寻找到JUnit在maven上的依赖,并把依赖添加到java工程中的xml配置文件中。

  

这样相关的jar包也就会出现在工程中。

  2. 实现判定三角形类型的函数

由于问题并不复杂,事先也没什么难度,函数如下:

 1     public int triangleJudgement(int a,int b, int c){
 2         //-1 rep not a triangle
 3 //        if(a <= 0 || b <= 0 || c <= 0)
 4 //        {
 5 //            return -1;
 6 //        }
 7
 8         if(a + b > c && b + c > a && a + c > b)
 9         {
10             //2 rep equilateral, 1 rep isosceles, 0 rep scalene
11             if(a == b && b == c){
12                 return 2;
13             }
14             else if(a == b || b == c || a == c){
15                 return 1;
16             }
17             else
18             {
19                 return 0;
20             }
21         }
22         else
23             return -1;
24     }

    这里需要说明一下,需要先检测以下输入参数是否合法,比如输入负数,然而其实负数是不能够满足构成三角形的条件:任意两边之和大于第三边,所以我注释掉了部分代  码。

  3. 实现测试函数

    3.1 单测试用例测试

      这里实现了最简单的一种JUnit测试,需要在测试的函数前面加上@Test,代码如下:

1 public class Test1 {
2
3     @Test
4     public void test1(){
5       App app = new App();
6         assertEquals(-1,app.triangleJudgement(1,2,3));
7     }
8 }

      测试正常时:

      测试出错时:

      以上是简单的单测试用例的示例。

    3.2 参数化多测试用例测试

      多测试用例测试需要参数化,需要用到@RunWith(Parameterized.class),测试类代码如下:

 1 @RunWith(Parameterized.class)
 2 public class Test2 {
 3     private int input1 = 0;
 4     private int input2 = 0;
 5     private int input3 = 0;
 6     private int expected = 0;
 7     private App AppTest = null;
 8
 9     public Test2(int input1,int input2, int input3, int expected){
10         this.input1 = input1;
11         this.input2 = input2;
12         this.input3 = input3;
13         this.expected = expected;
14     }
15
16     @Before
17     public void setUp(){
18         AppTest = new App();
19     }
20
21     @Parameterized.Parameters
22     public static Collection<Object[]> getData(){
23         return Arrays.asList(new Object[][]{
24                 {3,1,2,-1},
25                 {3,3,3,2},
26                 {1,4,4,1},
27                 {5,3,4,0},
28                 {4,3,3,0},
29                 {2,2,2,1}
30
31         });
32     }
33
34     @Test
35     public void testApp(){
36         assertEquals(this.expected,AppTest.triangleJudgement(input1,input2,input3));
37     }
38 }

      首先我们需要申明以下数据域,expected,inputx等用于对应测试的期望值和输入,然后需要有一个返回Object数组的静态函数,然后测试的函数与之前的大致就相    同了,只不过期待值和参数都使用了我们之前声明的数据域。

      测试结果如下:

      可见参数化的方法可以一次对多个测试用例进行统一测试,相比较单测试用例的测试函数,效率高了很多。

  

  4. 安装Eclemma

    intellij IDEA并不能安装这个插件,所以需要使用Eclipse进行实验。

    EclEmma是一个开源的软件测试工具(for eclipse),可以在编码过程中查看代码调用情况、也可以检测单覆盖率。

 详见: http://eclemma.org/

    4.1 下载Eclemma

      1. 选择Help->Eclipse Marketplace->搜索EclEmma,Install;

      2. 重启eclipse发现工具栏上出现Coverage图标,说明安装成功;

    

    4.2 在Eclpise中使用Eclemma对代码的覆盖情况如下

  

      绿色表示代码被执行到了,运行结果有多种颜色,其中黄色表示代码部分执行到,红色表示代码没有被执行到。

v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}

Normal
0
false

7.8 磅
0
2

false
false
false

EN-US
ZH-CN
X-NONE

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}

时间: 2024-10-12 11:25:17

TJU_SCS_软件测试_Lab1的相关文章

TJU_SCS_软件测试_homework1——《error impressed me most》

1.作业要求 作为TJU_SCS中一个普通的本科生,虽然我写的projects不多,但在学习和作业中也都遇到过许多不大小的bugs.errors,一方面是在完成作业或者是在学习新知识的过程中必然会由于编程知识的缺乏和技术经验的不足而遇到让人头痛的情况.这次作业要求把最近遇到的印象深刻的编程中的问题写到博客上,这里就简单的说明一下. 2.作业内容 上学期在选修图像处理这门课的时候,有一次作业让我印象深刻,由于一小段代码的失误,我折腾了数个小时,直到凌晨3点才找出问题. 2.1具体情况: 当时图像作

[软件测试_LAB1]安装junit和hamcrest及其使用

一.在IDE中集成junit和hamcrest 创建工程后,导入junit和hamcrest的jar包 hamcrest-all-1.3.jar junit-4.12.jar 使用的IDE为Intellij IDEA,在项目上右键,打开Open Module Settings,在Library选项卡中添加以上两个jar包,即可在程序中使用 二.创建判断三角形的Triangle类 三.创建相应的测试类 目录结构如下 四.运行测试用例 测试通过 五.查看代码覆盖率 通过点击Run 'Triangle

TJU_SCS_软件测试_lab2_Selenium

一. 实验要求 1.安装SeleniumIDE插件 2.学会使用SeleniumIDE录制脚本和导出脚本 3.访问http://www.ncfxy.com使用学号登录系统(账户名为学号,密码为学号后6位),进入系统后可以看到该用户的邮箱. 4.编写Selenium Java WebDriver程序,测试info.csv表格中的学号和邮箱的对应关系是否正确. 将测试代码提交到github上 二.实验准备 操作系统: Windows 8.1 64x IDE:Eclipse-Kepler 32x 三.

软件测试概述

• 不论软件的生产者还是软件的使用者,均生存在竞争的环境中: 软件开发商为了占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局. 用户为了保证自己业务的顺利完成,当然希望选用优质的软件. 软件带来错误的原因很多,具体地说,主要有如下几点: • 交流不够.交流上有误解或者根本不进行交流 • 软件复杂性 • 程序设计错误 • 需求变化 • 时间压力 • 代码文档贫乏 • 软件开发工具 什么是软件测试 软件测试就是在软件投入运行前,对软件需求分析.设计规格说明和编码的最终复审

软件测试——Peer Review

一.什么是peer review peer review是一种通过作者的同行来确认缺陷和需要变更区域的检查方法.需要进行同行评审的特定产品在定义项目软件过程的时候被确定并且作为软件开发计划的一部分被安排的进度. 二.背景 这周三老师在课上安排了peer review,每5-6个人一个小组,自己进行分工,并对样例软件进行peer review. 三.peer review的图解及分工 Moderator (主持人) 主持人的主要职责,在评审会前负责正规技术评审计划和会前准备的检查:在评审会中负责调

软件测试不再黑盒— threadingtest带来第二代白盒覆盖率技术

软件测试不再黑盒- threadingtest带来第二代白盒覆盖率技术 穿线测试对于测试界的一个重大创新在于,在白盒测试理论出现数十年以后,上海零一拼装信息技术有限公司结合在测试理论方面十余年的潜心研究,率先提出了第二代覆盖率技术,这绝对不是一个口号,而是ZOA真正对于白盒测试的理解以及对于标准第三方测试服务的深度理解经过数年的基础研究以及2年有余的研发而推出的达到商用标准的技术.现在先让我们温习下经典的测试理论: 1.测试方法论 黑盒功能测试法 黑盒功能测试法, 是把要测试的软件看成一个 "黑

[ 测试思维 ] 探索式软件测试

非常不错的关于探索式软件测试的学习资料 1.探索式测试简析 作者:微软 史亮 http://pan.baidu.com/s/1c2D4tAo 2.探索式测试白皮书 作者:淘宝 季哥 http://pan.baidu.com/s/1qYFNG3y

软件测试的方法-------基于直觉和经验的方法

定义:基于直觉和经验的测试方法,不是严格意义上的科学测试方法,带有一定的随机性,测试结果不够可靠,甚至可以看作是没有办法的办法.但是,软件测试是具有社会性,呈现一定的不确定性.这时,采用直觉和经验往往能够发挥更好的作用.   1.Ad-hoc测试方法和ALAC测试 1.1.自由测试(Ad-hoc Testing)强调测试人员根据自己的经验,不受测试用例的束缚,放开思路.灵活地进行各种测试. 1.2.ALAC,是Act-like-a-customer(像客户那样做)的简写,是一种基于客户使用产品的

软件测试

一个团队在做一个软件的时候,必定离不开软件的测试,首先就是找出代码的Bug,也就是软件的错误.缺陷.Bug也可以分解为症状.程序错误.和根本原因.症状即是从用户的角度看,软件出了什么问题.程序错误乃是从代码的角度看,代码的什么错误导致了软件的问题.根本原因,错误的根源,即导致代码错误的根本原因.另外,我们测试设计游两类方法:黑箱和白箱,所谓黑箱/白箱就是指软件测试设计的方法,不是软件测试的方法.黑箱指的是在设计测试的过程中,把软件系统当作一个"黑箱",无法了解或使用系统的内部结构及知识