软工第八次实验——测试

这篇博客详细介绍了软件测试的基本概念、生命周期、原则和分类。重点讲解了黑盒测试中的等价类划分法,包括概述、划分原则、步骤和实例。此外,还讨论了白盒测试,特别是逻辑覆盖法和分支覆盖,并给出了实际的测试用例。最后,文中列举了历年试题,以等价类划分法设计测试用例,帮助读者深入理解测试方法。
摘要由CSDN通过智能技术生成

其实是没有前七次实验的
因为第八次实验是考试,复习了前七次实验的内容。
所以这个第八次实验是个伪命题hiahiahia

一、软件测试

1.1 概述

软件测试是为了发现程序中的错误而执行程序的过程,贯穿于软件生命周期,其目的是尽早发现软件缺陷,并确保其得以修复。再全面的测试也不能完全消除软件缺陷,希望完全依托测试确保软件质量是不现实的。

1.2 软件生命周期

从软件工程的角度来看,软件的生命周期一般分为4部分:

  • 软件分析时期
  • 软件设计时期
  • 编码和测试时期
  • 软件运行与维护时期

在编码的同时,也进行着单元测试。

1.2 软件测试原则

  • 完全测试是不可能的。测试并不能找出所有错误。
  • 测试中存在风险。
  • 软件测试只能表示缺陷的存在,而不能证明软件产品已经没有缺陷。
  • 软件产品中潜在的错误数与已发现的错误数成正比。
  • 让不同的测试人员参与到测试工作中。
  • 让开发小组和测试小组分立。
  • 尽早并不断进行测试。
  • 在设计测试用例时,应该包括输入数据和预期的输出结果两部分。
  • 集中测试容易出错或错误较多的模块。
  • 长期保留所有的测试用例。

1.3 测试分类

软件测试

二、黑盒测试

2.1 概述

将被测试的软件系统看成一个黑盒子,不关心盒子的内部结构和内部特性,只关心软件产品的输入数据和输出结果。
黑盒测试的测试方法有等价类划分法边界值分析法错误推测法因果图法

2.2 等价类划分法

2.2.1 概述

将程序的输入域划分为若干子集,然后从每个子集中选取少数具有代表性的数据用作测试用例。所选取的输入数据对于揭露程序中的错误都是等效的。

2.2.2 等价类

等价类分为有效等价类和无效等价类:

  • 有效等价类:对程序的规格说明是有意义的、合理的输入数据所构成的集合。
  • 无效等价类:对程序的规格说明是无意义的、不合理的输入数据所构成的集合
2.2.3 划分原则

划分等价类时遵循的原则:

  1. 如果输入条件规定了取值范围或个数,则可确定一个有效等价类和两个无效等价类。例如,如果输入值x在0到100之间,那么有效等价类是0<=x<=100,无效等价类是x<0和x>100。
  2. 如果输入条件规定了输入值的集合或是规定了“必须如何”的条件,则可以确定一个有效等价类和一个无效等价类。例如,如果输入值是日期类型,那么有效等价类是日期类型的数据,无效等价类是非日期类型的数据。
  3. 如果输入条件是布尔表达式,则可以分为一个有效等价类和一个无效等价类。例如,如果要求密码非空,则有效等价类为非空密码,无效等价类为空密码。
  4. 如果输入条件是一组值,且程序对不同的值有不同的处理方式,则每个允许的输入值对应一个有效等价类,所有不允许的输入值的集合为一个无效等价类。例如,如果级别的值是初级、中级、高级,则有效等价类应该有三个,分别为初级、中级、高级,无效等价类有一个,为其他任何级别。
  5. 如果规定了输入数据必须遵循的规则,则可划分出一个有效等价类(符合规则)和若干个无效等价类(从不同的角度违反规则)
2.2.5 划分步骤
  1. 对每个输入和外部条件进行等价划分,画出等价类表,并为每个等价类进行编号。
  2. 设计一个测试用例,使其尽可能多地覆盖有效等价类,重复这一步直到其有效等价类被覆盖。
  3. 为每一个无效等价类设计一个测试用例。

2.3 示例

1

2.3.1 题目要求

测试一个函数dateValidation(int year, int month, int day),功能是验证输入日期是否合法。

输入三个变量(年、月、日),函数返回布尔值,判断该日期是否合法:1≤月份≤12,1≤日期≤31,2000≤年份≤2019。

2.3.2 等价类划分表
输入及外部条件 有效等价类 等价类编号 无效等价类 等价类编号
日期的类型 数字字符 1 非数字字符 8
year 2000<=year<=2019 2 year<2000 year>2019 9 10
month 1<=month<=12 3 month<1 month>12 11 12
非闰年的2月 1<=day<=28 4 day<1 day>28 13 14
闰年的2月 1<=day<=29 5 day<1 day>29 15 16
month ϵ {1,3,5,7,8,10,12} 1<=day<=31 6 day<1 day>31 17 18
month ϵ {4,6,9,11} 1<=day<=30 7 day<1 day>30 19 20
2.3.3 测试用例
2.3.3.1 有效等价类
序号 输入数据 预期输出 覆盖范围(等价类编号)
year month day
1 2008 1 9 TRUE 1,2,3,6
2 2008 2 29 TRUE 1,2,3,5
3 2008 4 30 TRUE 1,2,3,7
4 2018 2 28 TRUE 1,2,3,4
2.3.3.2 无效等价类
序号 输入数据 预期输出 覆盖范围(等价类编号)
year month day
1 x 2 29 FALSE 8
2 1234 3 2 FALSE 9
3 2222 3 2 FALSE 10
4 2018 0 3 FALSE 11
5 2018 13 1 FALSE 12
6 2018 2 0 FALSE 13
7 2018 2 29 FALSE 14
8 2004 2 0 FALSE 15
9 2004 2 30 FALSE 16
10 2018 3 0 FALSE 17
11 2018 3 32 FALSE 18
12 2018 4 0 FALSE 19
13 2018 4 31 FALSE 20

三、白盒测试

3.1 概述

白盒测试关注软件产品的内部细节和逻辑结构。

方法:

  • 逻辑覆盖测试方法
  • 基本路径测试方法

3.2 逻辑覆盖法

根据覆盖的目标不同,可分为语句覆盖、分支覆盖、条件覆盖、分支-条件覆盖、条件组合覆盖、路径覆盖。

  1. 语句覆盖每条语句至少执行一次。
  2. 判定覆盖每个判定的每个分支至少执行一次。
  3. 条件覆盖每个判定的每个条件应取到各种可能的值。
  4. 判定/条件覆盖同时满足判定覆盖条件覆盖。
  5. 条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
  6. 路径覆盖使程序中每一条可能的路径至少执行一次。

3.3 分支覆盖

基本思想:设计若干个测试用例,运行被测程序,使程序中的每个分支至少被执行一次。

以考察程序if-else结构为基础。

对循环结构,考察循环条件能够满足和不可能满足两种情况。

3.4 示例

3.4.1 题目要求

判断是否为闰年的函数isLeapYear(int year)。

闰年的条件是:

  • 能被4整除,但不能被100整除;
  • 能被100整除,又能被400整除。
3.4.2 流程图及分支标注

分支流程图

3.4.3 分支覆盖及用例列表
输入 执行路径
2000 1,2,4,5,8,10
2004 1,2,4,7,10
2006 1,2,3,9
1900 1,2,4,5,6,9,10

四、实验1:三角形类型判断

4.1 问题描述

三角形的判断:(题目链接)
定义一个函数,用于判断三角形的三条边能否构成三角形,如果能,则判断是普通三角形,等腰三角形,还是等边三角形。(三角形的边长为整数)
输入:三角形的三条边a,b,c(1≤a,b,c≤104)
输出:如果是普通三角形,输出:regular triangle!
如果是等腰三角形,输出:isosceles triangle!
如果是等边三角形,输出:equilateral triangle!
如果不能构成三角形,输出:not a triangle!
实现代码:

//Trangle.java

package testProject;

import java.util.Scanner;

public class Trangle {
   
    public static boolean isTrangle (int x, int y, int z) {
   
        if (x <= 0 || y <= 0 || z <= 0 ||x + y <= z
                || x + z <= y || y + z <= x) {
   
            return 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值