软件测试实验过程记录

软件测试

题目1

电话号码问题 某城市电话号码由三部分组成。它们的名称和内容分别是: (1)地区码:空白或三位数字; (2)前 缀:非’0’或’1’的三位数字; (3)后 缀:4 位数字。 假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。根据该 程序的规格说明,作等价类的划分,并设计测试方案。

输入 有效等价类 无效等价类
地区码 ①空白 ②三位数字 ③字母 ④标点符号等特殊字符 ⑤ 超过三位的数字⑥大于0小于3的数字
前缀 ⑦非0或1的三位数字 ⑧三位0或者三位1 ⑨字母⑩标点符号等特殊字符⑪小于三位的数字⑫大于三位的数字
后缀 ⑬四位数字 ⑭小于四位的数字⑮字母等特殊符号⑯大于四位的数字

测试方案

覆盖的等价类 地区码 前缀 后缀 预期结果
① ⑦⑬ 空白 123 4567 正确
② ⑦⑬ 234 123 4567 正确
asd 123 4567 错误
-#¥ 000 4567 错误
1234 123 4567 错误
12 123 4567 错误
213 000 4567 错误
213 asdsad 4567 错误
213 @$ 4567 错误
213 12 4567 错误
213 12345 4567 错误
213 12345 123 错误
213 12345 asd#$% 错误
213 12345 45673445 错误

题目2

题目二:三角形问题 根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。 一个程序读入三个整数。把此三个数值看成是一个三角形的三个边。这个程序要打印出信息, 说明不是三角形、三角形是三边不等的、是等腰的、还是等边的。

输入 有效等价类 无效等价类
a,b,c ①a=b=c ②a+b>c&&a+c>b&&b+c>a ③ a!=b&&b!=c&&a!=c ④a==b&&b!=c or a==c &b!=c or b==c&&b!=a ⑤ 输入的是小数⑥输入是字母或者符号 ⑦a+b<=c or b+c <=a or c+b<=a

测试用例

覆盖的等价类 a b c 预期结果
① ② 2 2 2 等边三角形
②④ 1 2 2 等腰三角形
②③ 2 3 4 三边不等三角形
2.3 2 3 输入错误
sd 4 输入错误
1 2 3 边长度输入错误

题目3

日期问题 用决策表测试法测试以下程序:该程序有三个输入变量month、day、year(month 、 day 和year 均为整数值,并且满足:1≤month≤12 和1≤day≤31),分别作为输入日期的月份、日、年份,通过程序 可以输出该输入日期在日历上隔一天的日期。例如,输入为 2004 年11 月29 日,则该程序的输出为 2004 年12 月1 日。 (1) 分析各种输入情况,列出为输入变量 month 、 day 、 year 划分的有效等价类。 (2) 分析程序的规格说明,并结合以上等价类划分的情况,给出问题规定的可能采取的操作(即 列出所有的动作桩)。 (3) 根据 (1) 和 (2) ,画出简化后的决策表。

输入 有效等价类 无效等价类
year ①1900<=year<=10000 ②字母③标点符号等特殊字符 ④小于0的数字⑤不为整数
month ⑥ 1<=month<=12 ⑦小于0的数字 ⑧字母标点符号等特殊字符⑨大于12的数字⑩不为整数
day 如果大月⑪1<=day<=31 如果小月:⑫1<=day<=30 如果闰年2月 1<=days<=29 如果平年 1<=days<=28 ⑬小于1的数字⑭大月大于31的数字 小月大于30的数字,平年2月大于28的数字,闰年大于29的数字 ⑮字母等特殊字符 ⑯不为整数

动作桩:

  1. 提示 year输入错误
  2. 提示month输入错误
  3. 提示day输入错误
  4. 输出日期

决策表(判定表)

序号 1 2 3 4 5 6 7
条件 year输入是否正确 1 0 1 1 0 1
month输入是否正确 1 1 0 1 0 0
days输入是否正确 1 1 1 0 1 0
动作 输出日期 1 0 0 0 0 0
提示year输出错误 0 1 0 0 1 0
提示month输出错误 0 0 1 0 0 1
提示day输出错误 0 0 0 1 0 0

题目四

生育津贴:生育津贴为女职工产假期间的工资,生育津贴低于本人工资标准的,差额部分由企业补足。(2)参加生育保险累计满一年的职工,在生育(流产)时仍在参保的,按有关规定享受生育保险待遇。(3)生育保险待遇生育津贴发放标准,以职工所在用人单位上年度职工月平均工资为基数按规定假期计发:(职工所在用人单位上年度职工月平均工资/30天 X假期天数)

假期天数:① 正常产假90天(包括产前检查15天);② 独生子女假增加35天;③ 晚育假增加15天;④ 难产假。剖腹产、Ⅲ度会阴破裂增加30天;吸引产、钳产、臀位产增加15天;⑤ 多胞胎生育假,每多生育一个婴儿增加15天;⑥ 流产假:怀孕不满2个月15天;怀孕不满4个月30天;满4个月以上(含4个月)至7个月以下42天;7个月以上遇死胎、死产和早产不成活75天;

设计测试用例

覆盖的等价类 假期天数 生育津贴
90 90/30 *月工资
①② 125 125/30 *月工资
①③ 105 105/30 *月工资
① ④难产 120 120/30 *月工资
① ④其他 105 105/30 *月工资
①②③ 140 140/30 *月工资
①②④难产 155 155/30 *月工资
①②④其他 140 140/30 *月工资
①③⑤ 105+15*(婴儿数-1) 105+15*(婴儿数-1)/30 *月工资
①④⑤ 120+15*(婴儿数-1) 105+15*(婴儿数-1)/30 *月工资
①②③ ④ 170 170/30 *月工资
①②③ ④⑤ 170+15*(婴儿数-1) 170+15*(婴儿数-1)/30 *月工资
⑥不满两个月 15 15/30 *月工资
⑥不满四个月 30 30/30 *月工资
⑥四个月以上七个月以下 42 42/30 *月工资
⑥七个月以上 75 75/30 *月工资

知识储备:

等价类测试用例的设计

1.无效等价类只能有一个 每个测试用例 且都要覆盖
2. 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
3. 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止

条件桩,动作桩

  • 条件桩 列出问题的所有条件
  • 动作桩 列出可能针对问题所采取的动作 如正确打印内容,提示year出错,提示month出错

代码

测试日历

#encoding=utf-8
from sys import argv
from pymongo import mongo_client
from datetime import timedelta,datetime
s=raw_input()

a=s.split(" ")
class OutboundsError(Exception):
    def __init__(self,errormsg):
        self.__errormsg=errormsg
    def __str__(self):
        return self.__errormsg
Bigmonth=[1,3,5,7,8,10,12]
try:

    year=int(a[0])
    month=int(a[1])
    days=int(a[2])
    if year<1900 or year>=10000:
        raise OutboundsError("年份输入有误")
    if month<1 or month>=12:
        raise OutboundsError("月份输入错误")
    #判断闰年2月的日期
    if year%400==0 or year%4==0 and year%100!=0:
        if month==2 and days>29:
            raise OutboundsError("天数输入错误")
    elif month==2 and days>28:
            raise OutboundsError("天数输入错误")

    if month in Bigmonth and days>31:
            raise OutboundsError("天数输入错误")
    elif month not in Bigmonth and days>30:
            raise  OutboundsError("天数输入错误")
    days=datetime(year,month,days)
    afterday=days+timedelta(days=2)
    print "{} {} {}".format(afterday.year,afterday.month,afterday.day)


except IndexError as e:
    print("输入格式错误")

except ValueError as e:
    print("输入信息错误")

except OutboundsError as e1:
    print(e1)

测试三角形


import java.util.Scanner;

public class first {
    public static void main(String[] args) {
    try {
        Scanner sc=new Scanner(System.in);

        String abc= sc.nextLine();

        String sd[]=abc.split(" ");

        int a=Integer.parseInt(sd[0]);
        int b=Integer.parseInt(sd[1]);
        int c=Integer.parseInt(sd[2]);
        if (a<0||b<0||c<0){
            System.out.println("输入错误");
            System.exit(1);
        }
        else if (a+b<=c||a+c<=b||b+c<=a)
            System.out.println("输入的三条边长度不符合要求");

        else if (a==b&&b==c)
            System.out.println("等边三角形");

        else if (a!=b&&b!=c&&a!=c)
            System.out.println("三角形三边都不相等");

        else System.out.println("等腰三角形");


    }
    catch (Exception e){
        System.out.println("输入错误");
        System.out.println(e);
    }
    }
}

你可能感兴趣的:(学习记录)