课程名称(中文/英文):软件测试/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对象内添加TextBox、Button、水平线、Label控件,设计效果:(实验报告画下图)
3、在“提交”按钮上双击鼠标左键,添加分数评定的代码如下:
5、运行网站,查看运行效果,如下图所示。
实验小结:
自己写,分小点来写(至少三小点)。
实验4 Android项目测试
实验名称: Android项目测试——变色龙
实验目的:
1.Android项目的创建及Activity的添加;
2.资源文件的添加,选择器的设置与调用方法;
3.掌握点击、长按和触摸事件的编写;
4.颜色的转换,手机震动效果的实现。
实验环境:Windows 7 + Android Studio + Java
实验过程:
<?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>
<Button android:layout_width="match_parent"
android:layout_height="60dp"
android:text="单击变色,长按重置!"
android:id="@+id/ok"
android:background="@drawable/btn_select"/>
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; }}
效果预览:
实验小结:
自己写,分小点来写(至少三小点)。