首页 >> 实验教学 >> 实验项目 >> 详细内容
实验教学
 
实验项目 >> 正文
《软件测试》
日期:2021-12-09 18:19:03  发布人:nclgjsj  浏览量:131

 

课程名称(中文/英文):软件测试Software Testing

课程代码0102030401                       课程类型:专业主干课

课程性质:必修课                           

课程总学时:48                             课程总学分:3学分

实验学时:16                                实验学分: 0

适用专业:软件工程                         开实验学期:

 

实验1 白盒测试用例设计

实验名称:白盒测试用例设计

实验目的:

1.阐述语句覆盖的特点,并为下图1,设计测试用例;

2.分别阐述判定覆盖、条件覆盖、判定· 条件覆盖(分支条件覆盖)、条件组合覆盖和路径覆盖的特点,并为下图2设计这五种方法对应的测试用例;

实验环境:Windows 7 +Code Blocks(或Eclipse

实验内容:实验报告画下图1,2


【图 1

 

1、语句覆盖         【图1】的语句覆盖用例

   (1) 主要特点:使程序中的每个可执行语句至少被执行一次。

   (2)  用例设计

 

 

以下均适用【图2

 

【图 2

2、判定覆盖  

   (1) 主要特点: 对于判断语句,在设计用例的时候,要设计判断语句结果为True和False的两种情况

   (2)  用例设计


3、条件覆盖 

   (1)  主要特点:设计用例时针对判断语句里面每个条件表达式true 和 false各取值一次,不考判断语句的计算结果

   (2)  用例设计

 

4判定条件覆盖(分支条件覆盖) 

   (1)  主要特点:设计测试用例时,使得判断语句中每个条件表达式的所有可能结果至少出现一次,每个判断语句本身所有可能结果也至少出现一次。

   (2)  用例设计

 

5条件组合覆盖   

   (1) 主要特点: 设计测试用例时,使得每个判断语句中条件结果的所有可能组合至少出现一次。

   (2)  用例设计

 

6、路径覆盖 

   (1) 主要特点: 设计测试用例时,覆盖程序中所有可能的执行路径

   (2)  用例设计

 

实验小结:自己写,分小点来写(至少三小点)

 

实验2 黑盒测试用例设计

实验名称:黑盒测试用例设计

实验目的:

1.C语言编程,实现给出某一天(年,月,日),计算出它的下一天,否则,输出相应的错误信息;

2.使用等价类划分法和边界值分析法,设计测试用例,并依照测试用例对所编写的程序进行测试;

实验环境:Windows 7 + Code Blocks + C

实验内容:

 

C语言实现,源代码:

 

#include<stdio.h>

void main()

{

int year;

int month,maxmonth=12;

int day,maxday;

printf(" 请输入年份: (1000~3000)");

scanf("%d",&year);

if(year<1000 || year>3000)

{

printf(" 输入错误!请从新输入! \n");

printf(" 请输入年份: (1000~3000)");

scanf("%d",&year);

}

printf(" 请输入月份: (1~12)");

scanf("%d",&month);

if(month<1 || month>12)

{

printf(" 输入错误!请从新输入! \n");

printf(" 请输入月份: (1~12)");

scanf("%d",&month);

}

if(month==4||month==6||month==9||month==11)

maxday=30;

else if(month==2)

{

if(year%400==0 || year%4==0)

maxday=28;

else

maxday=29;

}

else

maxday=31;

printf(" 请输入日份: (1~31)");

scanf("%d",&day);

if(day<1 || day>maxday)

{

printf(" 输入错误!请从新输入! \n");

printf(" 请输入日份: (1~31)");

scanf("%d",&day);

}

if(month==maxmonth && day==maxday)

{

year=year+1;

month=1;

day=1;

}

else if(day==maxday)

{

month=month+1;

day=1;

}

else

day=day+1;

printf(" 下一天是 %d%d %d ",year,month,day);

}

 

 

1)等价类划分:

 

2)等价类测试用例:

 

3)边界测试用例:

 

 

实验小结:

自己写,分小点来写(至少三小点)。

 

 

实验3 Web测试

实验名称: Web测试——成绩评级

实验目的:

1.设计一个网页,输入成绩,对成绩进行评价,并输出等级信息;

2.设计不同的测试用例,对网页功能进行测试,捕获并处理异常;

3.对代码进行覆盖测试,优化网页界面设计。

实验环境:Windows 7 + Visual Studio + C#

实验过程:

1、启动VS,新建网站,设置语言Visual C#、空网站和Web位置。

2、添加网页文件Default.aspx。在该网页内的添加Panel1,然后在Panel1对象内添加TextBoxButton、水平线、Label控件,设计效果:(实验报告画下图

 

  3、在“提交”按钮上双击鼠标左键,添加分数评定的代码如下:

 

  5、运行网站,查看运行效果,如下图所示。

 

实验小结:

自己写,分小点来写(至少三小点)。

 

 

 

实验4 Android项目测试

实验名称: Android项目测试——变色龙

实验目的:

1.Android项目的创建及Activity的添加; 

2.资源文件的添加,选择器的设置与调用方法;

3.掌握点击、长按和触摸事件的编写;

4.颜色的转换,手机震动效果的实现

实验环境:Windows 7 + Android Studio + Java

实验过程:

  • 启动Android Studio 创建项目,添加空白Activity
  • 添加资源文件btn_select.xml文件,设置了按下和弹起两种状态:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <shape>
    <corners android:radius="10dp"/>
            <stroke android:width="1dp" android:color="#2196F3"/>
   <gradient android:startColor="#00FF00"
android:endColor="#fff"
android:angle="-90"/>
        </shape>
    </item>

    <item android:state_pressed="true">
        <shape>
  <corners android:radius="60dp"/>
            <stroke android:width="1dp" android:color="#2196F3"/>
            <gradient android:startColor="#FFC107"
android:endColor="#fff"
android:angle="-90" />
        </shape>
    </item>
</selector>

  • 在主Active_main.xml文件中添加按钮等对象,设置按钮的属性如下:

<Button    android:layout_width="match_parent"
        android:layout_height="60dp"
        android:text="单击变色,长按重置!"
        android:id="@+id/ok"
        android:background="@drawable/btn_select"/>

  • 添加Java代码如下

public class MainActivity extends AppCompatActivity
        implements  View.OnClickListener,View.OnLongClickListener,View.OnTouchListener {
    Button ok_btn;
    TextView result_tv;
    String color;    int i=0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        

ok_btn=findViewById(R.id.ok);
        result_tv=findViewById(R.id.result);
        ok_btn.setOnClickListener(this);
        ok_btn.setOnLongClickListener(this);
        ok_btn.setOnTouchListener(this);
        color=result_tv.getText().toString();    }
    @Override
    public void onClick(View view) {
        Random rd=new Random();        

int r,g,b;
        r=rd.nextInt(256);        g=rd.nextInt(256);        b=rd.nextInt(256);
        result_tv.setBackgroundColor(Color.rgb(r,g,b));
        result_tv.setText((++i)+color+toHexColor(Color.rgb(r,g,b)));   }
    public static String toHexColor(int c){
        String R,G,B;
        StringBuffer sb=new StringBuffer();        R=Integer.toHexString(Color.red(c));  

G=Integer.toHexString(Color.green(c));     B=Integer.toHexString(Color.blue(c));
        R=R.length()==1?"0"+R:R;        G=G.length()==1?"0"+G:G;
        B=B.length()==1?"0"+B:B;        sb.append("0x");
        sb.append(R);        sb.append(G);        sb.append(B);
        return sb.toString();    }
    @Override
    public boolean onLongClick(View view) {
        result_tv.setBackgroundColor(Color.rgb(255,255,255));
        result_tv.setTextColor(Color.BLUE);
        i=0;       return true;    }
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        Vibrator vb= (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        if(motionEvent.getAction()==MotionEvent.ACTION_DOWN){
            vb.vibrate(new long[]{0,100,1000,100},2);
            //({静止时长,震动时长,静止时长,震动时长。。。},次数)
        }else if(motionEvent.getAction()==MotionEvent.ACTION_UP){
            vb.cancel();
        }   return false;   }}

效果预览

 

 

实验小结:

自己写,分小点来写(至少三小点)。

 

 

核发:nclgjsj 点击数:131收藏本页