軟件測試實驗過程記錄

軟件測試

題目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);
    }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章