国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

軟件測試和質(zhì)量管理——實驗3:單元測試

這篇具有很好參考價值的文章主要介紹了軟件測試和質(zhì)量管理——實驗3:單元測試。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

《軟件測試和質(zhì)量管理》實驗報告三

一、目的和要求

????????1、掌握單元測試技術,并要求按照單元測試的要求設計測試用例;

????????2、掌握在Eclipse里進行Junit4測試的技術;

????????3、根據(jù)題目要求編寫測試用例;

????????4、實驗結(jié)果要求給出測試用例集測試效果比較;

????????5、撰寫實驗報告。

二、實驗內(nèi)容

日期問題:

測試以下程序:該程序有三個輸入變量month、day、year(month、day和year均為整數(shù)值,并且滿足:1≤month≤12、1≤day≤31和1900≤ year ≤2050),分別作為輸入日期的月份、日、年份,通過程序可以輸出該輸入日期在日歷上隔一天的日期。例如,輸入為 2004 年11月30日,則該程序的輸出為2004年12月1日。

(1)邊界值分析法設計測試用例;

(2)根據(jù)劃分的有效等價類,給出問題規(guī)定的可能采取的操作,畫出簡化后的決策表。

三、測試用例的編寫

3.1 邊界值分析法設計測試用例

(1)劃分等價類并編號

本題按照三個輸入變量年year、月month、日day的輸入條件:均為整數(shù)值并滿足1≤month≤12、1≤day≤31和1900≤year≤2050,程序輸出條件:需要有對平閏年、大小月、跨年月的測試,進行等價類劃分,形成等價類表,并為每一等價類規(guī)定唯一編號。最終得到的等價類表如下表3-1所示。

表3-1等價類

輸入數(shù)據(jù)

有效等價類

無效等價類

年(Year)

(1)1900~2050之間的平年

(2)1900~2050之間的閏年

(11)Year<1900

12)Year>2050

13)非數(shù)串

月(Month)

(3)Month=2(2月)

(4)Month={1,3,5,7,8,10}(大月)

(5)Month=12(跨年月)

(6)Month={4,6,9,11}(小月)

14)Month<1

15)Month>12

16)非數(shù)串

日(Day)

(7)1~28所有日(正常)

8)Day=29(閏年2月)

9)Day=30(小月)

(10)Day=31(大月)

17)Day<1

18)Day>28(平年2月)

19)Day>29(閏年2月)

20)Day>30(小月)

21)Day>31(大月)

22)非數(shù)串

(2)測試用例

表3-2邊界值測試用例表

用例

編號

輸入?yún)?shù)

期望輸出

邊界

Year

Month

Day

1

1899

1

1

的值不在指定范圍內(nèi)

year上邊界

2

1900

1

1

1900年1月2

year上邊界

3

1901

1

1

1901年1月2

year上邊界

4

2000

1

1

2000年1月2日

year健壯

5

2049

1

1

2049年1月2

year下邊界

6

2050

1

1

2050年1月2

year下邊界

7

2051

1

1

的值不在指定范圍內(nèi)

year下邊界

8

2023

0

1

的值不在指定范圍內(nèi)

month上邊界

9

2023

1

1

2023年1月2

month上邊界

10

2023

2

1

2023年2月2

month上邊界

11

2023

5

1

2023年5月2

month健壯

12

2023

11

1

2023年11月2日

month下邊界

13

2023

12

1

2023年12月2日

month下邊界

14

2023

13

1

的值不在指定范圍內(nèi)

month下邊界

15

2023

1

0

的值不在指定范圍內(nèi)

day上邊界

16

2023

1

1

2023年1月2日

day上邊界

17

2023

1

2

2023年1月3日

day上邊界

18

2023

1

15

2023年1月16日

day健壯

19

2023

2

27

2023年2月28日

平年2月下邊界

20

2023

2

28

2022年3月1日

平年2月下邊界

21

2023

2

29

的值不在指定范圍內(nèi)

平年2月下邊界

22

2020

2

28

2020年2月29日

閏年2月下邊界

23

2020

2

29

2020年3月1日

閏年2月下邊界

24

2020

2

30

的值不在指定范圍內(nèi)

閏年2月下邊界

25

2023

1

30

2023年1月31日

大月day下邊界

26

2023

1

31

2023年2月1日

大月day下邊界

27

2023

1

32

的值不在指定范圍內(nèi)

大月day下邊界

28

2023

4

29

2023年4月30日

小月day下邊界

29

2023

4

30

2023年5月1日

小月day下邊界

30

2023

4

31

的值不在指定范圍內(nèi)

小月day下邊界

31

2023

5

4

2023年5月5

普通

3.2?判定表驅(qū)動法設計用例

(1)條件樁設計

表3-3?條件樁

條件

具體

M1

month:只有30天的小月,如:4、6、9、11月

M2

month:除12月外有31天的大月,如:1、3、5、7、8、10月

M3

month:12月

M4

month:2月

D1

day:1≤day≤27

D2

day:day=28

D3

day:day=29

D4

day:day=30

D5

day:day=31

Y1

year:year是閏年

Y2

year:year是平年

(2)動作樁設計

動作

不存在

日期+1

日期置1

月份+1

月份置1

年份+1

動作樁

A0

A1

A2

A3

A4

A5

(3)判斷表設計

規(guī)則

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

C1

(month是)

M1

M1

M1

M2

M2

M3

M3

M4

M4

M4

M4

M4

M4

C2

(day是)

D1

D2

D3

D4

D5

D1

D2

D3

D4

D5

D1

D2

D3

D4

D5

D1

D2

D2

D3

D4

D4

D5

C2

(year是)

?

?

?

?

?

?

?

?

Y1

Y2

Y1

Y2

?

A0

(不存在)

A1

(day+1)

A2

(day=1)

A3

(month+1)

A4

(month=1)

A5

(year+1)

(4)測試用例

用例

編號

輸入?yún)?shù)

期望輸出

Year

Month

Day

1-3

2023

4

23

2023424

4

2023

6

30

2023年71

5

2023

9

31

日的值不在指定范圍內(nèi)

6-9

2023

5

4

202355

10

2023

5

31

202361

11-14

2023

12

15

2023年1216

15

2023

12

31

202411

16

2023

2

14

2023215

17

2020

2

28

2020229

18

2023

2

28

202331

19

2020

2

29

202031

20

2023

2

29

日的值不在指定范圍內(nèi)

21,?22

2023

2

30

日的值不在指定范圍內(nèi)

四、測試結(jié)果的分析

4.1 邊界值分析法測試結(jié)果

(1)測試代碼
package?com.softtest.danyuan.test;

import?static?org.junit.Assert.*;

import?java.util.Arrays;
import?java.util.Collection;

import?org.junit.Assert;
import?org.junit.Test;
import?org.junit.runner.RunWith;
import?org.junit.runners.Parameterized;
import?org.junit.runners.Parameterized.Parameter;
import?org.junit.runners.Parameterized.Parameters;

import?com.softtest.danyuan.*;

@RunWith(Parameterized.class)
public?class?DanYuanTest?{
?
 @Parameter
 public?String?input1;
 @Parameter(1)
?public?String?input2;
?@Parameter(2)
?public?String?input3;
?@Parameter(3)
?public?String?expected;

????@Parameters
????public?static?Collection<?>?prepareData(){
????????return?Arrays.asList(new?Object[][]{
?????????//?邊界值測試用例
?????????{"1899",?"1",?"1",?"年的值不在指定范圍內(nèi)"},??????//0
?????????{"1900",?"1",?"1",?"下一天是1900年1月2日"},????//1
?????????{"1901",?"1",?"1",?"下一天是1901年1月2日"},????//2
?????????{"1901",?"1",?"1",?"下一天是1901年1月2日"},????//3
?????????{"2000",?"1",?"1",?"下一天是2000年1月2日"},????//4
?????????{"2049",?"1",?"1",?"下一天是2049年1月2日"},????//5
?????????{"2050",?"1",?"1",?"下一天是2050年1月2日"},????//6
?????????{"2051",?"1",?"1",?"年的值不在指定范圍內(nèi)"},??????//7
?????????{"2023",?"0",?"1",?"月的值不在指定范圍內(nèi)"},??????//8
?????????{"2023",?"1",?"1",?"下一天是2023年1月2日"},????//9
?????????{"2023",?"2",?"1",?"下一天是2023年2月2日"},????//10
?????????{"2023",?"5",?"1",?"下一天是2023年5月2日"},????//11
?????????{"2023",?"11",?"1",?"下一天是2023年11月2日"},??//12
?????????{"2023",?"12",?"1",?"下一天是2023年12月2日"},??//13
?????????{"2023",?"13",?"1",?"月的值不在指定范圍內(nèi)"},?????//14
?????????{"2023",?"1",?"0",?"日的值不在指定范圍內(nèi)"},??????//15
?????????{"2023",?"1",?"1",?"下一天是2023年1月2日"},????//16
?????????{"2023",?"1",?"2",?"下一天是2023年1月3日"},????//17
?????????{"2023",?"1",?"15",?"下一天是2023年1月16日"},??//18
?????????{"2023",?"2",?"27",?"下一天是2023年2月28日"},??//19
?????????{"2023",?"2",?"28",?"下一天是2023年3月1日"},???//20
?????????{"2023",?"2",?"29",?"日的值不在指定范圍內(nèi)"},?????//21
?????????{"2020",?"2",?"28",?"下一天是2020年2月29日"},??//22
?????????{"2020",?"2",?"29",?"下一天是2020年3月1日"},???//23
?????????{"2020",?"2",?"30",?"日的值不在指定范圍內(nèi)"},?????//24
?????????{"2023",?"1",?"30",?"下一天是2023年1月31日"},??//25
?????????{"2023",?"1",?"31",?"下一天是2023年2月1日"},???//26
?????????{"2023",?"1",?"32",?"日的值不在指定范圍內(nèi)"},?????//27
?????????{"2023",?"4",?"29",?"下一天是2023年4月30日"},??//28
?????????{"2023",?"4",?"30",?"下一天是2023年5月1日"},???//29
?????????{"2023",?"4",?"31",?"日的值不在指定范圍內(nèi)"},?????//30
?????????{"2023",?"5",?"4",?"下一天是2023年5月5日"},????//31
????????});
????}
????public?void?DateTests(String?input1,String?input2,String?input3,String?expected){
????????this.input1?=?input1;
????????this.input2?=?input2;
????????this.input3?=?input3;
????????this.expected?=?expected;

????}
?@Test
?public?void?testNextDate()?{
??String?result?=?DanYuan.nextDate(input1,input2,input3);
??System.out.println(input1?+?'年'?+?input2?+?'月'+?input3?+'日');
??System.out.println(result);
??System.out.println(this.expected);
??System.out.flush();
????????Assert.assertEquals(this.expected,result);
?}
}
(2)結(jié)果截圖

軟件測試和質(zhì)量管理——實驗3:單元測試,軟件測試與質(zhì)量管理,實驗報告,單元測試,軟件測試,邊界值分析法,判定表驅(qū)動法,nextDate函數(shù)

錯誤用例:

軟件測試和質(zhì)量管理——實驗3:單元測試,軟件測試與質(zhì)量管理,實驗報告,單元測試,軟件測試,邊界值分析法,判定表驅(qū)動法,nextDate函數(shù)

軟件測試和質(zhì)量管理——實驗3:單元測試,軟件測試與質(zhì)量管理,實驗報告,單元測試,軟件測試,邊界值分析法,判定表驅(qū)動法,nextDate函數(shù)

(3)缺陷分析

現(xiàn)針對上述測試到的錯誤用例詳細分析源代碼的錯誤。

1、分析1:

按實際情況來看,編寫的“1899年1月1日”、“2051年1月1日”兩個用例的年份超出題給范圍,應輸出“年的值不在指定范圍內(nèi)”。由此,推斷源代碼中對于年份范圍的判斷部分的代碼出錯。

程序修改:將源程序中“year<1000||year>3000”改為“year<1900||year>20500”。

2、分析2:

按實際情況來看,編寫的“2023年1月0日”日期超出題給范圍,應輸出“日的值不在指定范圍內(nèi)”。由此,推斷源代碼中對于日期范圍的判斷部分的代碼出錯。

在源程序中,沒有先判斷接收的三個參數(shù)是否在指定范圍內(nèi),而是先根據(jù)month進行數(shù)據(jù)處理,再判斷處理后的參數(shù)是否在指定范圍內(nèi)。此用例雖然最初的三個參數(shù)中day=0不符合指定范圍,但程序并不判斷,而是在經(jīng)過數(shù)據(jù)處理day=1后才判斷,此時符合了指定范圍讓其輸出。

程序修改:先判斷接收的三個參數(shù)是否在指定范圍內(nèi),再根據(jù)month進行數(shù)據(jù)處理。

3、分析3:

編寫的“2023年2月29日”用例,由于平年沒有2月29日,應當輸出日的值不在指定范圍內(nèi)。由此,推斷源代碼對2月日期判斷部分代碼出錯。

在2月判別部分代碼中,程序只有檢測到day==28時,才會進入平年閏年的判斷。從而導致,在平年情況下判斷2月29日的下一天時,直接進入了分支判斷day==29,程序輸出結(jié)果為當年的3月1日,而不是“日的值不在指定范圍內(nèi)”。

程序修改:在2月部分中先判斷平年閏年,而后根據(jù)年份再選擇具體日期的判斷。若為閏年,當day=29時,輸出下一天為當年的3月1日;當day<29時,輸出日期+1;其余情況均為日的值不在指定范圍內(nèi)。若為平年,當day=28時,輸出下一天為當年的3月1日;當day<28時,輸出日期+1;其余情況均為日的值不在指定范圍內(nèi)。

(4)nextDate代碼修改
package?com.softtest.danyuan;

public?class?DanYuan?{
??public?static?String?nextDate(String?s_year,?String?s_month,?String?s_day)?{
??????//將字符串轉(zhuǎn)為int
??????int?year?=?Integer.parseInt(s_year);
??????int?month?=?Integer.parseInt(s_month);
??????int?day?=?Integer.parseInt((s_day));
??????boolean?flag?=?false;

??????if?(year?<?1900?||?year?>?2050)?{
??????????return?("年的值不在指定范圍內(nèi)");
??????}?else?if?(month?>?12?||?month?<?1)?{
??????????return?("月的值不在指定范圍內(nèi)");
??????}?else?if?(day?>?31?||?day?<?1)?{
??????????return?("日的值不在指定范圍內(nèi)");
??????}
??????
??????switch?(month)?{
??????????case?1:
??????????case?3:
??????????case?5:
??????????case?7:
??????????case?8:
??????????case?10:
??????????????if?(day?==?31)?{
??????????????????day?=?1;
??????????????????month?=?month?+?1;
??????????????}?
??????????????else?{
??????????????????day?=?day?+?1;
??????????????}
??????????????break;
??????????case?4:
??????????case?6:
??????????case?9:
??????????case?11:
??????????????if?(day?==?30)?{
??????????????????day?=?1;
??????????????????month?=?month?+?1;
??????????????}?
??????????????else?if?(day?==?31)?{
??????????????????flag?=?true;
??????????????}?
??????????????else?{
??????????????????day?=?day?+?1;
??????????????}
??????????????break;
??????????case?12:
??????????????if?(day?==?31)?{
??????????????????day?=?1;
??????????????????month?=?1;
??????????????????year?=?year?+?1;
??????????????}?
??????????????else?{
??????????????????day?=?day?+?1;
??????????????}
??????????????break;
??????????case?2:?{
???????????if?(((year?%?4?==?0?&&?year?%?100?!=?0)?||?year?%?400?==?0))?{
??????????????????//?閏年
??????????????????if?(day?==?29)?{
??????????????????????day?=?1;
??????????????????????month?=?3;
??????????????????}?
??????????????????else?if?(day?<?29)?{
??????????????????????day?=?day?+?1;
??????????????????}?
??????????????????else?{
??????????????????????flag?=?true;
??????????????????}
??????????????}?else?{
??????????????????//平年
??????????????????if?(day?==?28)?{
??????????????????????day?=?1;
??????????????????????month?=?3;
?????????????????}?
??????????????????else?if?(day?<?28)?{
??????????????????????day?=?day?+?1;
??????????????????}?
??????????????????else?{
??????????????????????flag?=?true;
??????????????????}
??????????????}

??????????}
??????????break;
??????????default:
??????}

??????if?(flag)?{
??????????return?("日的值不在指定范圍內(nèi)");
??????}?
??????else?{
??????????return?("下一天是"?+?year?+?"年"?+?month?+?"月"?+?day?+?"日");
??????}
?}
}
(5)代碼修改后用例測試

代碼修正后再次驗證,此時所有設計的用例均測試通過。

軟件測試和質(zhì)量管理——實驗3:單元測試,軟件測試與質(zhì)量管理,實驗報告,單元測試,軟件測試,邊界值分析法,判定表驅(qū)動法,nextDate函數(shù)

4.2?判定表驅(qū)動法測試結(jié)果

(1)測試代碼
package?com.softtest.danyuan.test;

import?static?org.junit.Assert.*;

import?java.util.Arrays;
import?java.util.Collection;

import?org.junit.Assert;
import?org.junit.Test;
import?org.junit.runner.RunWith;
import?org.junit.runners.Parameterized;
import?org.junit.runners.Parameterized.Parameter;
import?org.junit.runners.Parameterized.Parameters;

import?com.softtest.danyuan.*;

@RunWith(Parameterized.class)
public?class?DanYuanTest?{
?
?@Parameter
?public?String?input1;
?@Parameter(1)
?public?String?input2;
?@Parameter(2)
?public?String?input3;
?@Parameter(3)
?public?String?expected;

????@Parameters
????public?static?Collection<?>?prepareData(){
????????return?Arrays.asList(new?Object[][]{
?????????//?判定表驅(qū)動法用例
?????????{"2023",?"4",?"23",?"下一天是2023年4月24日"},???//0
?????????{"2023",?"6",?"30",?"下一天是2023年7月1日"},????//1
?????????{"2023",?"9",?"31",?"日的值不在指定范圍內(nèi)"},??????//2
?????????{"2023",?"5",?"4",?"下一天是2023年5月5日"},?????//3
?????????{"2023",?"5",?"31",?"下一天是2023年6月1日"},????//4
?????????{"2023",?"12",?"15",?"下一天是2023年12月16日"},?//5
?????????{"2023",?"12",?"31",?"下一天是2024年1月1日"},???//6
?????????{"2023",?"2",?"14",?"下一天是2023年2月15日"},???//7
?????????{"2020",?"2",?"28",?"下一天是2020年2月29日"},???//8
?????????{"2023",?"2",?"28",?"下一天是2023年3月1日"},????//9
?????????{"2020",?"2",?"29",?"下一天是2020年3月1日"},????//10
?????????{"2023",?"2",?"29",?"日的值不在指定范圍內(nèi)"},??????//11
?????????{"2023",?"2",?"30",?"日的值不在指定范圍內(nèi)"},??????//12
????????});
????}
????public?void?DateTests(String?input1,String?input2,String?input3,String?expected){
????????this.input1?=?input1;
????????this.input2?=?input2;
????????this.input3?=?input3;
????????this.expected?=?expected;
????}
?@Test
?public?void?testNextDate()?{
??String?result?=?DanYuan.nextDate(input1,input2,input3);
??System.out.println(input1?+?'年'?+?input2?+?'月'+?input3?+'日');
??System.out.println(result);
??System.out.println(this.expected);
??System.out.flush();
????????Assert.assertEquals(this.expected,result);
?}
}
(2)結(jié)果截圖

軟件測試和質(zhì)量管理——實驗3:單元測試,軟件測試與質(zhì)量管理,實驗報告,單元測試,軟件測試,邊界值分析法,判定表驅(qū)動法,nextDate函數(shù)

(3)缺陷分析

現(xiàn)針對上述測試到的錯誤用例詳細分析源代碼的錯誤。

按實際情況來看,編寫的“2023年2月29日”用例,由于平年沒有2月29日,應當輸出日的值不在指定范圍內(nèi)。由此,推斷源代碼對2月日期判斷部分代碼出錯。

在2月判別部分代碼中,程序只有檢測到day==28時,才會進入平年閏年的判斷。從而導致,在平年情況下判斷2月29日的下一天時,直接進入了分支判斷day==29,程序輸出結(jié)果為當年的3月1日,而不是“日的值不在指定范圍內(nèi)”。

程序修改:在2月部分中先判斷平年閏年,而后根據(jù)年份再選擇具體日期的判斷。若為閏年,當day=29時,輸出下一天為當年的3月1日;當day<29時,輸出日期+1;其余情況均為日的值不在指定范圍內(nèi)。若為平年,當day=28時,輸出下一天為當年的3月1日;當day<28時,輸出日期+1;其余情況均為日的值不在指定范圍內(nèi)。

(4)代碼修改
package?com.softtest.danyuan;

public?class?DanYuan?{
??public?static?String?nextDate(String?s_year,?String?s_month,?String?s_day)?{
??????//將字符串轉(zhuǎn)為int
??????int?year?=?Integer.parseInt(s_year);
??????int?month?=?Integer.parseInt(s_month);
??????int?day?=?Integer.parseInt((s_day));
??????boolean?flag?=?false;

??????switch?(month)?{
??????????case?1:
??????????case?3:
??????????case?5:
??????????case?7:
??????????case?8:
??????????case?10:
??????????????if?(day?==?31)?{
??????????????????day?=?1;
??????????????????month?=?month?+?1;
? ????????????}?
 ?????????????else?{
??????????????????day?=?day?+?1;
??????????????}
??????????????break;
??????????case?4:
??????????case?6:
??????????case?9:
??????????case?11:
??????????????if?(day?==?30)?{
??????????????????day?=?1;
??????????????????month?=?month?+?1;
??????????????}?
??????????????else?if?(day?==?31)?{
??????????????????flag?=?true;
??????????????}?
??????????????else?{
??????????????????day?=?day?+?1;
??????????????}
??????????????break;
??????????case?12:
??????????????if?(day?==?31)?{
??????????????????day?=?1;
??????????????????month?=?1;
??????????????????year?=?year?+?1;
??????????????}?
??????????????else?{
??????????????????day?=?day?+?1;
??????????????}
??????????????break;
??????????case?2:?{
??????????????if?(((year?%?4?==?0?&&?year?%?100?!=?0)?||?year?%?400?==?0))?{
??????????????????//?閏年
??????????????????if?(day?==?29)?{
??????????????????????day?=?1;
??????????????????????month?=?3;
??????????????????}?
??????????????????else?if?(day?<?29)?{
??????????????????????day?=?day?+?1;
??????????????????}?
??????????????????else?{
??????????????????????flag?=?true;
??????????????????}
??????????????}?else?{
??????????????????//平年
??????????????????if?(day?==?28)?{
??????????????????????day?=?1;
??????????????????????month?=?3;
??????????????????}?
??????????????????else?if?(day?<?28)?{
??????????????????????day?=?day?+?1;
??????????????????}?
??????????????????else?{
??????????????????????flag?=?true;
?????????????????}
??????????????}

??????????}
??????????break;
??????????default:
??????}

?????if?(flag)?{
??????return?("日的值不在指定范圍內(nèi)");
????}
?????
????if?(year?>=?1900?&&?year?<=?2050?&&?month?<=?12?&&?month?>=?1?&&?day?<=?31?&&?day?>=?{
????????return?("下一天是"?+?year?+?"年"?+?month?+?"月"?+?day?+?"日");
????}?else?if?(year?<?1000?||?year?>?3000)?{
????????return?("年的值不在指定范圍內(nèi)");
????}?else?if?(month?>?12?||?month?<?1)?{
????????return?("月的值不在指定范圍內(nèi)");
????}?else?if?(day?>?31?||?day?<?1)?{
????????return?("日的值不在指定范圍內(nèi)");
????}
?return?"1";
?}
}
(5)代碼修改后用例測試

代碼修正后再次驗證,此時所有設計的用例均測試通過。

軟件測試和質(zhì)量管理——實驗3:單元測試,軟件測試與質(zhì)量管理,實驗報告,單元測試,軟件測試,邊界值分析法,判定表驅(qū)動法,nextDate函數(shù)

五、心得與體會

本次實驗,針對nextDate函數(shù),我使用junit5測試工具,利用黑盒測試中的邊界值分析法和判定表驅(qū)動法設計測試用例,根據(jù)測試到的出錯用例分析源碼,找出代碼錯誤后修正再次驗證,最終使設計的測試用例在修正后的nextDate函數(shù)中全部通過,成功掌握了用單元測試技術按要求設計測試用例。

邊界值分析法是對輸入或輸出的邊界值進行測試的一個黑盒測試方法,該方法是對等價類劃分法的一個補充,其測試設計基于有效等價類。其基本思想:在最小值(min)、略高于最小值(min+)、正常值(nom)、最大值(max)、略低于最大值(max-)處取輸入變量值,對系統(tǒng)進行驗證。經(jīng)驗表明,大量的缺陷是發(fā)生在輸入輸出的邊界值,而不是輸入輸出的范圍值。如果輸入條件規(guī)定了值的范圍,則應取剛達到這個范圍的邊界值以及剛剛超過這個范圍邊界的值作為測試輸入數(shù)據(jù)。如果輸入條件規(guī)定了值的個數(shù),則用最大個數(shù)、最小個數(shù)和比最大個數(shù)多1個、比最小個數(shù)少1個的數(shù)作為測試數(shù)據(jù)。找到每個輸入條件的邊界點,即可得到邊界?;趩芜吔缭瓌t設計測試用例,即每個邊界點及領域測試數(shù)據(jù)設計測試用例。

另外基于普通邊界值還需要設計健壯性邊界值分析的測試用例,將其中居中的數(shù)據(jù)也拿來保證健壯性測試,如year除了邊界值1和12月外,還可以拿6月這個居中值加入到測試用例當作健壯性測試。

此次實驗中,利用邊界值分析法我發(fā)現(xiàn)源程序存在的問題有:① 年份范圍的判斷部分的代碼出錯;② 沒有先判斷接收的三個參數(shù)是否在指定范圍內(nèi);③ 對2月日期判斷部分代碼出錯。并且通過修改代碼,再次檢驗用例均成功通過測試。

判定表驅(qū)動法表示的是有多個輸入和多個輸出,而且輸入與輸入之間有相互的組合關系、輸入和輸出之間有相互的制約和依賴關系。此次實驗中,利用判定表驅(qū)動法發(fā)現(xiàn)源程序?qū)?月日期判斷部分代碼出錯。并且通過修改代碼,再次檢驗用例均成功通過測試。

兩種方法測試用例集測試效果比較:基于邊界值分析法的測試用例集著重測試輸入和輸出的邊界情況;而基于判定表驅(qū)動法的測試用例集能夠?qū)碗s的問題按照各種可能的情況全部列舉出來,簡明并避免遺漏。一般情況下,邊界值分析法設計出的測試用例發(fā)現(xiàn)程序錯誤的能力更強,比如本次實驗中利用邊界值分析法發(fā)現(xiàn)了三處代碼錯誤,而判定表驅(qū)動法只發(fā)現(xiàn)了一處錯誤。而判定表驅(qū)動法更適合于針對不同邏輯條件的組合值需要分別執(zhí)行不同的操作的數(shù)據(jù)處理問題,經(jīng)過化簡相比邊界值測試用例集要小。文章來源地址http://www.zghlxwxcb.cn/news/detail-848568.html

到了這里,關于軟件測試和質(zhì)量管理——實驗3:單元測試的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 軟件測試實驗:Junit單元測試

    軟件測試實驗:Junit單元測試

    目錄 前言 實驗目的 實驗內(nèi)容 實驗要求 實驗過程 題目一 題目一測試結(jié)果 題目二 題目二實驗結(jié)果 總結(jié) 軟件測試是軟件開發(fā)過程中不可缺少的一個環(huán)節(jié),它可以保證軟件的質(zhì)量和功能,發(fā)現(xiàn)并修復軟件的缺陷和錯誤。軟件測試分為多種類型,其中一種是單元測試,即對軟件

    2024年02月02日
    瀏覽(33)
  • 軟件質(zhì)量保證與測試技術實驗:白盒測試用例設計

    軟件質(zhì)量保證與測試技術實驗:白盒測試用例設計

    目錄 前言 一、白盒測試 二、實驗目的 三、實驗內(nèi)容 四、實驗步驟 五、實驗過程 題目一 1、程序流程圖 2、測試用例??????? 3、測試代碼 4、測試結(jié)果 題目二 1、控制流圖 2、獨立路徑集合 3、測試用例? 4、測試代碼 ?5、測試結(jié)果 總結(jié) 白盒測試是一種基于程序內(nèi)部

    2024年02月04日
    瀏覽(30)
  • 軟件測試技術實驗一 JUnit 單元測試的環(huán)境搭建

    軟件測試技術實驗一 JUnit 單元測試的環(huán)境搭建

    1、確安裝并配置 IntelliJ IDEA開發(fā)環(huán)境 2、安裝插件Junit4.x,進行測試環(huán)境搭建 3、根據(jù)給定的源代碼,編寫測試代碼,并運行成功。 1、調(diào)試指導書給定的目標源代碼,除掉明顯的語法錯誤,記錄正確無誤的被測程序代碼。被測程序?: (1)?Account.Java (2)Tc_Account.java (3)由插

    2024年04月28日
    瀏覽(25)
  • 軟件項目管理 第七章 軟件項目的質(zhì)量管理與配置管理 課后習題參考答案——主編:李冰、張橋珍、劉玉娥

    軟件項目管理 第七章 軟件項目的質(zhì)量管理與配置管理 課后習題參考答案——主編:李冰、張橋珍、劉玉娥

    1.選擇題 (1)項目質(zhì)量管理的最終責任由誰來承擔?( D ) ?? A.項目開發(fā)人員????????B.采購經(jīng)理????????C.質(zhì)量經(jīng)理????????D.項目經(jīng)理 (2)“質(zhì)量成本”是一個項目管理概念,它說明了下列哪項成本?( C ) ?? A.額外需求的成本????????B.需求變更的成本???????

    2024年02月10日
    瀏覽(22)
  • 軟件研發(fā)質(zhì)量管理體系建設白皮書 V1.0 下載

    軟件在現(xiàn)代社會中發(fā)揮著越來越重要的作用,但軟件質(zhì)量問題也越來越受到人們的關注。尤其是在軟件開發(fā)的過程中,可能存在的質(zhì)量問題會導致交付產(chǎn)品質(zhì)量下降、項目超預算和延遲交付等問題。在這種背景下,建立研發(fā)質(zhì)量管理體系是非常重要的。本白皮書的主要目的是

    2024年02月08日
    瀏覽(16)
  • 如何保證測試質(zhì)量之Bug管理規(guī)范及流程

    目錄 Bug 屬性規(guī)范及流程 ?1 1. ? 目的 ?2 2. ? 范圍 ?3 3. ? 工具 ?3 4. ? 角色和職責 ?3 5. ? Bug 屬性定義 ?3 5.1 . bug 類型 ?4 5.2 . bug 嚴重性 ?4 5.3 ? bug 優(yōu)先級 ?5 6. ? Bug 管理流程 ?6 6.1 提交 bug ?6 6.2 分配 bug ?6 6.3 解決 bug ?7 6.4 驗證 bug ?7 6.5 遺留 bug ?7 6.5.1 跟蹤遺留 bug ?

    2023年04月13日
    瀏覽(19)
  • docker+django+ubuntu服務器 測試質(zhì)量管理平臺部署

    docker+django+ubuntu服務器 測試質(zhì)量管理平臺部署

    ? 然后setting.py中增加服務器ip地址 0.0.0.0開放所有 其中setting.py注意 DEBUG = False 是False的話js和css的靜態(tài)文件不會生效 在此注意一下!!!!!!! 2.拉取git的項目代碼 構(gòu)建成鏡像 鏡像run成容器 其中8888是容器內(nèi)部的端口號,8886是對外開放的端口號 ?沒有報錯說明就是成功了 最后直接訪

    2024年02月01日
    瀏覽(31)
  • 軟件工程頭歌軟件測試(實驗五)軟件項目管理(實驗六)

    軟件工程頭歌軟件測試(實驗五)軟件項目管理(實驗六)

    白盒測試 單元測試 軟件維護 維護的事件流 通常維護的事件流如下圖所示: 維護記錄的內(nèi)容 1)程序標識; 2)源語句數(shù); 3)機器指令數(shù); 4)使用的程序設計語言; 5)程序安裝的日期; 6)自安裝以來程序運行次數(shù); 7)自安裝以來程序失效次數(shù) 8)程序變動的層次和標識

    2024年02月05日
    瀏覽(103)
  • 大語言模型LLM技術賦能軟件項目管理和質(zhì)量保障︱微軟中國高級研發(fā)經(jīng)理步紹鵬

    大語言模型LLM技術賦能軟件項目管理和質(zhì)量保障︱微軟中國高級研發(fā)經(jīng)理步紹鵬

    微軟中國高級研發(fā)經(jīng)理步紹鵬先生受邀為由PMO評論主辦的2023第十二屆中國PMO大會演講嘉賓,演講議題:大語言模型LLM技術賦能軟件項目管理和質(zhì)量保障。大會將于8月12-13日在北京舉辦,敬請關注! 議題內(nèi)容簡要: 本次分享將從如下幾個要點展開,探索LLM技術賦能下的軟件項

    2024年02月14日
    瀏覽(93)
  • 【軟件質(zhì)量與軟件測試 軟件測試】

    9.1軟件測試的目的和原則: 9.1.1 軟件測試的目的 軟件測試是指在執(zhí)行程序之前或者在發(fā)布程序之前,對程序進行系統(tǒng)性的檢查和分析,以發(fā)現(xiàn)并糾正程序中的錯誤、缺陷和問題。軟件測試的目的主要包括:發(fā)現(xiàn)和糾正程序中的錯誤,提高軟件的質(zhì)量和可靠性,減少開發(fā)成本

    2024年02月08日
    瀏覽(32)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包