一.集成測試和確認測試
第1關:集成測試
-
1、
集成測試的主要方法有CD
A、自頂向下集成方法
B、自底向上集成方法
C、漸增式測試方法
D、非漸增式測試方法
-
2、
目前在進行集成測試時普遍采用非漸增式測試方法。B
A、√
B、×
-
3、
自底向上集成策略是從主控制模塊開始,沿著程序的控制層次向下移動,逐漸把各個模塊結合起來。B
A、√
B、×
-
4、
下圖是某正文加工系統的層次圖,在模塊3.0還沒有實現的時候需要對3.1進行測試,需要編寫( ),在3.1、3.2、…、3.6還沒有實現的時候需要對3.0進行測試,需要編寫(A )。
A、驅動程序;存根程序
B、存根程序;驅動程序
C、存根程序;存根程序
D、驅動程序;驅動程序
-
5、
應該把回歸測試集設計成只包括可以檢測程序每個主要功能中的一類或多類錯誤的那樣一些測試用例。A
A、√
B、×
-
6、
確認測試就是用于保證由于調試或其他原因引起的變化,不會導致非預期的軟件行為或額外錯誤的測試活動。B
A、√
B、×
第2關:確認測試?
回歸測試的目標是驗證軟件的有效性。B
A、
√
B、
×
2、
確認是保證軟件正確地實現了某個特定要求的一系列活動。驗證是為了保證軟件確實滿足了用戶需求而進行的一系列活動。B
A、
√
B、
×
3、
概要設計說明書,準確地描述了用戶對軟件的合理期望,因此是軟件有效性的標準,也是進行確認測試的基礎。B
A、
√
B、
×
4、
確認測試通常使用什么測試方法A
A、
黑盒測試
B、
白盒測試
C、
單元測試
D、
集成測試
5、
為了制定解決確認測試過程中發現的軟件缺陷或錯誤的策略,通常需要和開發者充分協商。B
A、
√
B、
×
6、
軟件配置復查的目的有哪些?ABCD
A、
保證軟件配置的所有成分都齊全
B、
質量符合要求
C、
文檔與程序完全一致
D、
具有完成軟件維護所必須的細節
7、
Beta測試由用戶在開發者的場所進行,Alpha測試的開發者通常不在Beta測試的現場。B
A、
√
B、
×
8、
Beta測試是在受控的環境中進行的。B
A、
√
B、
×
二.黑盒測試
第1關:等價類劃分法
-
1、
規定輸入的考試成績在0~100之間。以下正確的是? ? ? ? A
A、有效等價類是“0≤成績≤100”,無效等價類是“成績<0”和“成績>100”
B、有效等價類是“成績<0”和“0≤成績≤100”,無效等價類是“成績>100”
C、無效等價類是“0≤成績≤100”,有效等價類是“成績<0”和“成績>100”
D、有效等價類是“0≤成績≤100”和“成績>100”,無效等價類是“成績<0”
-
2、
規定輸入構成三角形的3條邊。以下正確的是B
A、無效等價類是“輸入邊數=3”,有效等價類是“輸入邊數<3”和“輸入邊數>3”
B、有效等價類是“輸入邊數=3”,無效等價類是“輸入邊數<3”和“輸入邊數>3”
C、有效等價類是“輸入邊數<3”和“輸入邊數=3”,無效等價類是“輸入邊數>3”
D、有效等價類是“輸入邊數=3”和“輸入邊數>3”,無效等價類是“輸入邊數<3”
-
3、
等價類劃分案例1——針對一個字段 QQ賬號需求:6-10位自然數。AC
以下哪些屬于有效等價類。
A、長度在6-10位之間
B、長度小于6位
C、類型是0-9的自然數
D、負數
E、長度大于10位
F、特殊字符
-
4、
等價類劃分案例2——針對一個頁面 用戶注冊頁面需求: -用戶名:非空,6-10位字母或數字。 -密碼:非空,必須是6位的字母或數字。 -手機號碼:非空,必須是11位的數字,并且未注冊過。 -驗證碼:非空,值和系統提供的相同。D
以下說法錯誤的是
A、用戶名的輸入中,特殊字符屬于無效等價類
B、密碼的輸入中,6位屬于有效等價類
C、手機號碼的輸入中,11位為有效等價類
D、驗證碼的輸入中,非空為無效等價類
-
5、
等價類劃分案例3——針對文字的需求說明 某企業招工,要求報名者的出生日期在1970年1月1990年12月之間,企業的人事管理系統需要輸入報名者的出生日期,規定日期由6位數字字符組成,前4位表示年,后2位表示月。出生年月不在規定范圍內的,系統將拒絕接受,并顯示“年齡不合格”的出錯信息。試用等價類劃分法設計測試用例,來測試系統的“年齡檢查功能”。 以下說法錯誤的是D
A、對于日期的類型及長度,6位數字字符是有效等價類
B、對于年份范圍,大于1990是無效等價類
C、對于月份范圍,在01~12之間是有效等價類
D、對于日期的類型及長度,有非數字字符是有效等價類
第2關:邊界值分析法?
-
1、
要求a<x<b,測試用例應當包含哪些值ABCD
A、略大于a的值
B、略小于b的值
C、a
D、b
-
2、
一個老師在指導畢業設計時,必須指導1~5個學生,則可選人數為多少個作為測試數據?ABDE
A、0個
B、5個
C、3個
D、6個
E、1個
-
3、
被測程序是一個求和的函數SUM(X, Y),規定其輸出范圍是10~20,則在選擇測試用例時,X、Y可選取以下哪幾個作為測試數據?ABCE
A、(5,4)
B、(10,11)
C、(6,4)
D、(7,8)
E、(10,10)
-
4、
以下關于采用的邊界值的說法中錯誤的是D
A、數據庫表(或報表)的第一行和最后一行。
B、數組元素的第一個和最后一個。
C、字符串中的第一個字符和最后一個字符。
D、對16-bit的整數而言,32757和-32778是它的邊界。
-
5、
根據域測試方法可以把測試域劃分為ABD
A、上點
B、離點
C、外點
D、內點
-
6、
用邊界值分析法,假定1<X<10,那么X在測試中應該取的邊界值是A
A、X=1,X=2,X=9,X=10
B、X=2,X=9
C、X=1,X=10
D、X=1,X=5,X=6,X=10
-
7、
三角形問題的邊界值分析測試用例 在三角形問題描述中,除了要求邊長是整數外,沒有給出其它的限制條件。在此,我們將三角形每邊邊長的取范圍值設值為[1,100],三條邊的邊長分別為a,b,c。 以下哪個測試用例沒有采用邊界值分析法?D
A、a=60,b=60,c=1
B、a=50,b=100,c=50
C、a=99,b=50,c=50
D、a=70,b=70,c=70
-
8、
NextDate函數的邊界值分析測試用例 在NextDate函數中,隱含規定了變量month和變量day的取值范圍為1≤month≤12和1≤day≤31,并設定變量year的取值范圍為1912≤year≤2050。 以下哪個測試用例沒有采用邊界值分析法?D
A、month=6,day=15,year=1912
B、month=1,day=15,year=2000
C、month=6,day=31,year=2000
D、month=6,day=15,year=2000
三.白盒測試
第1關:邏輯覆蓋-語句覆蓋
-
1、
給定如下案例描述: 編寫程序,要求輸入讀入某汽車銷售人員的銷售數(以臺 計)和每臺銷售的基礎提成數(元)、以及銷售人員工種(正式工或臨時工),計算并輸出他的銷售提成。若銷售人員銷售超過40臺且基礎提成超過400元,則超過部分按基礎提成的1.5倍的來計算。超過50臺,如果是正式員工,則超過50臺的部分按基礎提成的2倍的來計算,否則銷售提成仍按照基礎提成的1.5倍的來計算。 使用語句覆蓋法設計測試用例,要求達到100%的語句覆蓋。 以下哪幾種測試用例的組合可以達到100%的語句覆蓋?ABC
A、銷售數量:45 基礎提成:1000 工種:正式工
B、銷售數量:100 基礎提成:1000 工種:正式工
C、銷售數量:10 基礎提成:1000 工種:臨時工
D、銷售數量:30 基礎提成:1000 工種:正式工
-
2、
針對下面的代碼
public int getsum(int num){
int sum = 0;
for(int i = num;i<=100;i++){
sum = sum + i;
}
return sum;
}
為了達到100%的語句覆蓋至少需要設計幾個測試用例?A
A、1
B、2
C、3
D、4
-
3、
針對下面的代碼:
public int fib(int n){
if(n == 0)
return 0;
if(n == 1)
return 1;
if(n >= 2)
return fib(n-1) + fib(n-2);
else
return -1;
}
為了達到100%的語句覆蓋至少需要設計幾個測試用例?A
A、2
B、3
C、4
D、5
-
4、
針對下面的代碼:
public void test(int x,int y){
int z = 0;
if(x > 0 && y > 0){
z = z / x;
}
if(x > 1 && y > 1){
z = z + 1;
}
if(x == 2 || y < 1){
z = z + 2;
}
}
設計滿足語句覆蓋的最有效率測試用例。C
A、x = 1,y = 1
B、x = 2,y = 1
C、x = 2,y = 2
D、x = 1,y = 2
?
第2關:邏輯覆蓋-判定覆蓋?
-
1、
給定如下案例描述: 編寫程序,要求輸入讀入某汽車銷售人員的銷售數(以臺 計)和每臺銷售的基礎提成數(元)、以及銷售人員工種(正式工或臨時工),計算并輸出他的銷售提成。若銷售人員銷售超過40臺且基礎提成超過400元,則超過部分按基礎提成的1.5倍的來計算。超過50臺,如果是正式員工,則超過50臺的部分按基礎提成的2倍的來計算,否則銷售提成仍按照基礎提成的1.5倍的來計算。 使用判定覆蓋法設計測試用例,要求達到100%的判定覆蓋。 以下哪幾種測試用例的組合可以達到100%的判定覆蓋?ABC
A、銷售數量:45 基礎提成:1000 工種:正式工
B、銷售數量:100 基礎提成:1000 工種:正式工
C、銷售數量:10 基礎提成:1000 工種:臨時工
D、銷售數量:30 基礎提成:1000 工種:正式工
-
2、
針對下面的代碼:
public int Test(int a,int b,int c,int d){
int result;
if((a || b) && (c || d))
result = 1;
else
result = 0;
return result;
}
以下哪幾種測試用例的設計滿足判定覆蓋?BCD
A、TestCase1: a = 1 , b = 1, c = 1,d = 1,result=1 TestCase2: a = 1 , b = 0, c = 1,d = 0,result=1
B、TestCase1: a = 0 , b = 1, c = 0,d = 1,result=1 TestCase2: a = 0 , b = 0, c = 0,d = 0,result=0
C、TestCase1: a = 0 , b = 1, c = 0,d = 1,result=1 TestCase2: a = 1 , b = 0, c = 0,d = 0,result=0
D、TestCase1: a = 1 , b = 1, c = 1,d = 1,result=1 TestCase2: a = 0 , b = 0, c = 0,d = 0,result=0
-
3、
針對下面的代碼:
public int fib(int n){
if(n == 0)
return 0;
if(n == 1)
return 1;
if(n > 1)
return fib(n-1) + fib(n-2) + fib(n-3);
else
return -1;
}
為了達到100%的判定覆蓋至少需要設計幾個測試用例?A
A、1
B、2
C、3
D、4
-
4、
針對下面的代碼:
public int func(int i){
int sum = 0;
while(i <= 25){
sum = sum + i;
i++;
}
return sum;
}
要達到100%判定覆蓋,變量i取什么值效力最高?C
A、0
B、24
C、25
D、26
第3關:邏輯覆蓋-條件覆蓋
-
1、
給定如下案例描述: 編寫程序,要求輸入讀入某汽車銷售人員的銷售數(以臺 計)和每臺銷售的基礎提成數(元)、以及銷售人員工種(正式工或臨時工),計算并輸出他的銷售提成。若銷售人員銷售超過40臺且基礎提成超過400元,則超過部分按基礎提成的1.5倍的來計算。超過50臺,如果是正式員工,則超過50臺的部分按基礎提成的2倍的來計算,否則銷售提成仍按照基礎提成的1.5倍的來計算。 使用條件覆蓋法設計測試用例,要求達到100%的條件覆蓋。 為了達到100%的條件覆蓋至少需要設計幾個測試用例?A
A、2
B、3
C、4
D、5
-
2、
假設一段程序中有m條判定語句,每條判定語句中有n個條件表達式(每個條件表達式涉及一個變量,例如if(a > 0 && b > 0)這條判定語句中有2個條件表達式,a > 0這個條件表達式涉及a這個變量,b > 0這個條件表達式涉及b這個變量),請問在最優情況下,至少需要設計幾個測試用例可以滿足條件覆蓋?C
A、2n
B、2m
C、2
D、m * n
-
3、
針對下面的代碼:
public int Test(int a,int b,int c,int d){
int result;
if((a || b) && (c || d))
result = 1;
else
result = 0;
return result;
}
以下哪種測試用例的選擇不滿足條件覆蓋?D
A、TestCase1: a = 1 , b = 1, c = 1, d = 1,result=1
TestCase2: a = 0 , b = 0, c = 0, d = 0,result=0
B、TestCase1: a = 1 , b = 0, c = 1, d = 1,result=1 TestCase2: a = 0 , b = 1, c = 0, d = 0,result=0
C、TestCase1: a = 1 , b = 0, c = 1, d = 0,result=1 TestCase2: a = 0 , b = 1, c = 0, d = 1,result=1
D、TestCase1: a = 1 , b = 0, c = 1, d = 0,result=1 TestCase2: a = 0 , b = 1, c = 0, d = 0,result=0
-
4、
條件覆蓋比判定覆蓋強,因為條件覆蓋細化到了判定覆蓋中的每一個條件表達式,而判定覆蓋只關注總的判定結果。B
A、正確
B、錯誤
?
第4關:邏輯覆蓋-判定/條件覆蓋
-
1、
給定如下案例描述: 編寫程序,要求輸入讀入某汽車銷售人員的銷售數(以臺 計)和每臺銷售的基礎提成數(元)、以及銷售人員工種(正式工或臨時工),計算并輸出他的銷售提成。若銷售人員銷售超過40臺且基礎提成超過400元,則超過部分按基礎提成的1.5倍的來計算。超過50臺,如果是正式員工,則超過50臺的部分按基礎提成的2倍的來計算,否則銷售提成仍按照基礎提成的1.5倍的來計算。 使用判定/條件覆蓋法設計測試用例,要求達到100%的覆蓋率。 以下哪幾種測試用例的組合可以達到100%的判定/條件覆蓋率?ACD
A、銷售數量:100 基礎提成:1000 工種:正式工
B、銷售數量:45 基礎提成:1000 工種:正式工
C、銷售數量:10 基礎提成:100 工種:臨時工
D、銷售數量:100 基礎提成:1000 工種:臨時工
-
2、
針對下面的代碼:
public int Test(int a,int b,int c,int d){
int result;
if((a || b) && (c || d))
result = 1;
else
result = 0;
return result;
}
以下哪種測試用例的設計滿足判定/條件覆蓋?A
A、TestCase1: a = 1 , b = 1, c = 1 , d = 1,result=1 TestCase2: a = 0 , b = 0, c = 0 , d = 0,result=0
B、TestCase1: a = 1 , b = 0, c = 1 , d = 0,result=1 TestCase2: a = 0 , b = 1, c = 0 , d = 1,result=1
C、TestCase1: a = 1 , b = 1, c = 1 , d = 0,result=1 TestCase2: a = 0 , b = 0, c = 0 , d = 1,result=1
D、TestCase1: a = 1 , b = 0, c = 1 , d = 0,result=1 TestCase2: a = 0 , b = 1, c = 0 , d = 0,result=0
第5關:邏輯覆蓋-條件組合覆蓋
-
1、
給定如下案例描述: 編寫程序,要求輸入讀入某汽車銷售人員的銷售數(以臺 計)和每臺銷售的基礎提成數(元)、以及銷售人員工種(正式工或臨時工),計算并輸出他的銷售提成。若銷售人員銷售超過40臺且基礎提成超過400元,則超過部分按基礎提成的1.5倍的來計算。超過50臺,如果是正式員工,則超過50臺的部分按基礎提成的2倍的來計算,否則銷售提成仍按照基礎提成的1.5倍的來計算。 使用條件組合覆蓋法設計測試用例,要求達到100%的覆蓋率。 為達到100%的條件組合覆蓋率至少需要幾個測試用例?C
A、4
B、8
C、12
D、16
-
2、
現有8瓶一模一樣的酒,其中一瓶有毒,需要人來測試出毒酒是哪一瓶。每次測試結果8小時后才會得出,而大家只有8個小時的時間。問最少需要幾人才能測試出毒酒是哪一瓶?B
A、2
B、3
C、4
D、5
-
3、
針對下面的代碼:
public int Test(int a,int b){
int result;
if(a || b)
result = 1;
else
result = 0;
return result;
}
以下哪種測試用例的設計滿足條件組合覆蓋?A
A、TestCase1: a = 1 , b = 1, result=1 TestCase2: a = 0 , b = 0, result=0 TestCase3: a = 1 , b = 0, result=1 TestCase4: a = 0 , b = 1, result=1
B、TestCase1: a = 1 , b = 1, result=1 TestCase2: a = 0 , b = 0, result=0
C、TestCase1: a = 1 , b = 0, result=1 TestCase2: a = 0 , b = 1, result=1
D、TestCase1: a = 1 , b = 1, result=1 TestCase2: a = 0 , b = 0, result=0 TestCase3: a = 1 , b = 0, result=1
?第6關:邏輯覆蓋-路徑覆蓋
-
1、
給定如下案例描述: 編寫程序,要求輸入讀入某汽車銷售人員的銷售數(以臺 計)和每臺銷售的基礎提成數(元)、以及銷售人員工種(正式工或臨時工),計算并輸出他的銷售提成。若銷售人員銷售超過40臺且基礎提成超過400元,則超過部分按基礎提成的1.5倍的來計算。超過50臺,如果是正式員工,則超過50臺的部分按基礎提成的2倍的來計算,否則銷售提成仍按照基礎提成的1.5倍的來計算。 使用路徑覆蓋法設計測試用例,要求達到100%的路徑覆蓋。 為達到100%的路徑覆蓋,至少需要設計幾個測試用例?B
A、2
B、3
C、4
D、5
-
2、
針對下面的代碼:
//判斷一個數是否為水仙花數,若是水仙花數則返回1,否則返回0
public int IsNarcissisticNumber(int number)
{
if(number <= 99 || number >= 1000)
{
return 0;
}
int a = number%10;
int b = number/10%10;
int c = number/100%10;
if(number == a*a*a+b*b*b+c*c*c)
return 1;
return 0;
}
以下哪種測試用例的設計滿足路徑覆蓋?C
A、TeseCase1: num=99, result=0 TeseCase2: num=1000, result=0 TeseCase3: num=100, result=0
B、TeseCase1: num=99, result=0 TeseCase2: num=1000, result=0 TeseCase3: num=100, result=1
C、TeseCase1: num=99, result=0 TeseCase2: num=153, result=1 TeseCase3: num=100, result=0
D、TeseCase1: num=99, result=0 TeseCase2: num=153, result=1 TeseCase3: num=1000, result=0
第7關:基本路徑測試
-
1、
該程序的流圖的環形復雜度和獨立路徑條數分別是多少?B
A、3,3
B、4,4
C、5,5
D、6,6
-
2、
以下哪種測試用例的設計可以覆蓋所有的獨立路徑?A
A、TestCase1: numA = 0, numB = 1 TestCase2: numA = 1, numB = 0 TestCase3: numA = 1, numB = 1 TestCase4: numA = 1, numB = 2
B、TestCase1: numA = 0, numB = 0 TestCase2: numA = 1, numB = 0 TestCase3: numA = 1, numB = 1
C、TestCase1: numA = 1, numB = 0 TestCase2: numA = 1, numB = 1 TestCase3: numA = 1, numB = 2
D、TestCase1: numA = 0, numB = 0 TestCase2: numA = 0, numB = 1 TestCase3: numA = 0, numB = 2 TestCase4: numA = 1, numB = 0
?
四.單元測試
第1關:使用Junit進行單元測試
//CalculatorTest.javapackage step1;import org.junit.Assert;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import step1.Calculator;public class CalculatorTest {//引入Calculator對象Calculator calcu = new Calculator();/*請在下面的Begin/End內補全測試函數,來驗證Calculator中的add、sub、multiply、divide函數編寫是否正確*//***********************Begin**************************/@Testpublic void testAdd(){int result = calcu.add(2, 3);assertEquals(5, result); }@Testpublic void testSub(){int result = calcu.sub(5, 3);assertEquals(2, result); }@Testpublic void testMultiply(){int result = calcu.multiply(4, 5);assertEquals(20, result);}@Testpublic void testDivide(){int res = 0;try{res = calcu.divide(8,2);}catch (Exception e){e.printStackTrace();Assert.fail();}assertEquals(res,4);}@Testpublic void testDivideByZero(){Throwable th = null;try{calcu.divide(5, 0); Assert.fail();} catch (Exception e){th = e;}assertEquals("除數不能為0",th.getMessage());}/************************End***************************/
}
第2關:改進——Junit參數化測試
package step2;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;import java.util.Arrays;
import java.util.Collection;import static org.junit.Assert.assertEquals;//參數化測試類需用@RunWith注解修飾
@RunWith(Parameterized.class)
public class CalculatorTest2 {private int a;private int b;private int expect;@Parameterized.Parameters//prepareData方法會將多個測試用例作為一個Collection返回//Collection中的每個元素都會調用一遍CalculatorTest2類的構造方法//每調用一次構造方法,都會產生一個類對象,每個類對象都會去執行testAdd()方法//這樣一來,便實現了使用不同的測試用例運行同一個測試方法的功能public static Collection prepareData(){//請仿照左側的示例代碼,在Begin/End區域內補全代碼//要求:構造4組測試用例,對Calculator中的multiply方法進行測試/***********************Begin**************************/return Arrays.asList(new Object[][] {{3, 4, 12}, {-2, 5, -10}, {0, 5, 0}, {-3, -4, 12} });/************************End***************************/}public CalculatorTest2(int a,int b,int expect){this.a = a;this.b = b;this.expect = expect;}@Testpublic void testMultiply() {Calculator calcu = new Calculator();int res = calcu.multiply(a,b);assertEquals(expect,res);}
}
第3關:軟件測試的目標和準則
-
1、
下面關于關于測試的說法正確的是:A
A、測試是為了發現程序中的錯誤而執行程序的過程
B、測試是為了表明程序是正確的
C、成功的測試是沒有發現錯誤的測試
D、經過了嚴格的測試,程序中就不可能還有沒被發現的錯誤。
-
2、
好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案。A
A、√
B、×
-
3、
應該遠在測試開始之前就制定出測試計劃。A
A、√
B、×
-
4、
“帕累托定律”指的是D
A、一個設計得好的典型系統的平均扇出通常是3或4。
B、一個人在任何時候都只能把注意力集中在(7±2)個知識塊上。
C、C.一個模塊的規模最好不超過60行語句。
D、80%的錯誤是由20%的原因造成的。
-
5、
為達到測試最佳效果,應由獨立的第三方從事測試工作。A
A、√
B、×
?
第4關:軟件測試的方法和步驟
-
1、
白盒測試是已經知道了產品應該具有的功能,通過測試檢驗是否每個功能都能正常使用。B
A、√
B、×
-
2、
黑盒測試是從____觀點的測試,白盒測試是從____觀點的測試。C
A、開發人員、管理人員
B、用戶、管理人員
C、用戶、開發人員
D、開發人員、用戶
-
3、
白盒測試又稱功能測試。B
A、√
B、×
-
4、
黑盒測試又稱結構測試。B
A、√
B、×
-
5、
單元測試的目的是保證每個模塊作為一個單元能正確運行。A
A、√
B、×
五.軟件測試基礎
第1關:軟件測試的目標和準則
-
1、
下面關于關于測試的說法正確的是:A
A、測試是為了發現程序中的錯誤而執行程序的過程
B、測試是為了表明程序是正確的
C、成功的測試是沒有發現錯誤的測試
D、經過了嚴格的測試,程序中就不可能還有沒被發現的錯誤。
-
2、
好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案。A
A、√
B、×
-
3、
應該遠在測試開始之前就制定出測試計劃。A
A、√
B、×
-
4、
“帕累托定律”指的是D
A、一個設計得好的典型系統的平均扇出通常是3或4。
B、一個人在任何時候都只能把注意力集中在(7±2)個知識塊上。
C、C.一個模塊的規模最好不超過60行語句。
D、80%的錯誤是由20%的原因造成的。
-
5、
為達到測試最佳效果,應由獨立的第三方從事測試工作。A
A、√
B、×
?第2關:軟件測試的方法和步驟
-
1、
白盒測試是已經知道了產品應該具有的功能,通過測試檢驗是否每個功能都能正常使用。B
A、√
B、×
-
2、
黑盒測試是從____觀點的測試,白盒測試是從____觀點的測試。C
A、開發人員、管理人員
B、用戶、管理人員
C、用戶、開發人員
D、開發人員、用戶
-
3、
白盒測試又稱功能測試。B
A、√
B、×
-
4、
黑盒測試又稱結構測試。B
A、√
B、×
-
5、
單元測試的目的是保證每個模塊作為一個單元能正確運行。A
A、√
B、×
六.軟件維護的基本概念-2?
第1關:維護的文檔
-
1、
()是影響軟件可維護性的決定因素。A
A、文檔
B、開發人員
C、測試人員
D、運維人員
-
2、
關于用戶文檔和系統文檔,以下說法錯誤的是()。C
A、用戶文檔主要描述系統功能和使用方法,并不關心這些功能是怎樣實現的
B、系統文檔描述系統設計、實現和測試等各方面的內容
C、系統文檔是用戶了解系統的第一步,它應該能使用戶獲得對系統的準確的初步印象。
D、用戶文檔至少應該包括5方面的內容:功能描述、安裝文檔、使用手冊、參考手冊。
第2關:可維護性復審
-
1、
()是所有軟件都應該具備的基本特點。B
A、可測試性
B、可維護性
C、可修改性
D、可重用性
-
2、
在軟件工程過程的每一個階段都應該考慮并努力提高軟件的可維護性,在()的技術審查和管理復審中,應該著重對可維護性進行復審。A
A、每個階段結束前
B、每個階段開始前
C、每個階段結束后
D、每個階段進行中
-
3、
關于不同階段評審的陳述,以下說法錯誤的是(D)。
A、正式的和非正式的設計復審應該從容易修改、模塊化和功能獨立的目標出發,評價軟件的結構和過程。
B、需求分析階段的復審應該對將來要改進的部分和可能會修改的部分加以注意并指明。
C、代碼復審應該 強調編碼風格和內部說明文檔這兩個影響可維護性的因素。
D、配置復審在測試結束前進行最正式的可維護性復審。
?
第3關:預防性維護
-
1、
(D )是由Miller提出來的,他把這種方法定義為:“把今天的方法學應用到昨天的系統上,以支持明天的需求。”
A、改正性維護
B、適應性維護
C、完善性維護
D、預防性維護
?第4關:軟件再工程范型
-
1、
軟件再工程范型的6類活動不包括以下哪項(D)。
A、庫存目錄分析
B、文檔重構
C、代碼重構
D、人員重構
-
2、
關于軟件再工程范型的6類活動,以下說法錯誤的是(C )。
A、老程序固有的特點是缺乏文檔。
B、軟件的逆向工程是分析程序以便在比源代碼更高的抽象層次上創建出程序的某種表示的過程。
C、數據重構是最常見的再工程活動。
D、正向工程也稱為革新或改造。
第5關:軟件維護的定義
-
1、
軟件維護是軟件生命周期的(D)階段。
A、第一個
B、第二個
C、第三個
D、最后一個
-
2、
請問下面哪些行為造成了軟件的變化,從而使得爬蟲軟件需要進行軟件維護?ABCD
A、原有的爬蟲不存在的功能
B、需要在原爬蟲不支持的環境上部署
C、原有爬蟲的錯誤
D、需要支持新的硬件設備
-
3、
當工程技術人員修改這個爬蟲軟件的內部代碼,使得爬蟲軟件在原來不支持的環境也可以運行,我的這種行為算什么?B
A、軟件集成
B、軟件維護
C、軟件實現
D、軟件測試
-
4、
當技術人員發現爬蟲里面的代碼缺陷和錯誤,并且修復錯誤,這種行為屬于:B
A、預防性維護
B、改正性維護
C、適應性維護
D、完善性維護
-
5、
軟件維護中進行得最少的部分是(D)
A、改正性維護
B、適應性維護
C、完善性維護
D、預防性維護
?
第6關:軟件維護的特點?
-
1、
關于結構化維護與非結構化維護,以下說法錯誤的是(C)。
A、非結構化維護中軟件配置的唯一成分是代碼。
B、非結構化維護中不能進行回歸測試,維護代價大。
C、結構化維護中,維護從詳細設計文檔開始
D、結構化維護可以進行回歸測試
-
2、
軟件生命周期中所花費用最多的階段是(D )。
A、詳細設計
B、軟件編碼
C、軟件測試
D、軟件維護
-
3、
Belady 和 Lehman 提出了一種維護工作量模型,以下公式正確的是(A)。
A、
B、M=P+K×expC?D
C、M=P+K×expD?C
D、M=P+K×ln(D?C)
M=P+K×ln(C?D)
-
4、
Linus torvalds 說過:never break user space,對開發者來說意味著:我們必須保證在引入新代碼時,老代碼仍然能正常工作,Linux 只會保留一個越來越小的核心內核,其他所有內核功能都由用戶定義。Kubernetes 和 docker 是 go 語言開發、體現這種趨勢的 2 個著名開源項目。 https://github.com/docker https://github.com/kubernetes/kubernetes k8s(Kubernetes)能處理的節點和群集大小非常靈活和自動化,很多互聯網公司使用它。 但是 2021.1 月據統計,所有 K8s 集群的80%觀察到的節點少于 10 個,低于 5 個節點的占60%。K8s 可以大規模擴展,大多數人沒有那樣使用它。
同時:雖然 Kubernetes 總體上極受歡迎,但規模最小的公司(1-5 名員工)更常 使用 Docker Swarm(41% 的公司使用 Swarm,31% 的公司使用 Kubernetes) 通過閱讀上述材料,從軟件維護活動的總工作量的公式中的P,K,C,D來解釋這種現象,以下說法錯誤的是(D)
A、P 代表的是互聯網公司的運維或者開發人員了解k8s/docker swarm的架構和功能,理解它們應用場景、安裝、運行甚至進行fork和fix修改的工作量
B、D 代表的是是運維和開發人員對 k8s/docker swarm 的熟悉程度(個人開發者和小公司往往對 docker 更為熟悉,而大公司因為業務需要,有大規模集群需求,所以往往傾向于 k8s)
C、復雜性 C 在 docker 比 k8s 復雜性低很多
D、K 作為經驗常數,普通開發者和運維人員的 docker 的 K 值要小于 k8s.
第7關:軟件維護的過程
-
1、
根據軟件問題報告(維護要求),作出的軟件修改報告包含的信息主要有:(ABCD)。
A、滿足維護要求表中提出的要求所需要的工作量;
B、維護要求的性質;
C、這項要求的優先次序;
D、與修改有關的事后數據(如測試數據等);
-
2、
以下不屬于保存維護記錄的是(D)。
A、程序標識;
B、軟件工程師的名字;
C、使用的程序設計語言;
D、程序改動的日期的天氣;
?
第8關:軟件的可維護性
-
1、
決定軟件可維護性的因素不包括(D)。
A、可理解性
B、可測試性
C、可移植性
D、可利用性
-
2、
伯克利科學家Steven Weber說:“軟件或許就是推動當今技術革命的蒸汽機,而開源社區的想法比起所產生的代碼更具有深遠意義。開源已經改變,并將繼續改變軟件開發的方式” git 是開源社區標配軟件,git工作流程中的fork工作流程如下:B
假設你公司發現k8s在95%時候滿足要求,但是有需要公司開發-運維團隊根據開源項目文檔進行一些接口函數修改,以便于部署到一種新的硬件系統。這種行為屬于以下哪種行為()。
A、Reverse Engineering
B、Re-engineering
C、Debug
D、Review
-
3、
以下有關影響維護工作量的因素的陳述中,錯誤的是(D)。
A、系統越大,功能越復雜,理解掌握起來就越困難,需要的維護工作量越大。
B、老系統比新系統需要更多的維護工作量。
C、使用數據庫工具,可有效地管理和存儲用戶程序中的數據,可方便地修改、擴充報表。
D、語言的功能越強,生成程序所需的指令數就越多。
?
七.設計模式
-
1、
模式的關鍵是將一個對象定義為原型,并為其提供復制自己的方法。A
A、A.原型
B、創建者
C、工廠方法
D、迭代
-
2、
策略模式的意圖是A
A、定義一系列的算法,把它們一個個的封裝起來,并且使它們可相互替換。
B、為一個對象動態連接附加的職責。
C、你希望只擁有一個對象,但不用全局對象來控制對象的實例化。
D、在對象之間定義一種一對多的依賴關系,這樣當一個對象的狀態改變時,所有依賴于它的對象都將得到通知并自動更新。
-
3、
將一個類的接口轉換成客戶希望的另一個接口。這句話是對下列哪種模式的描述C
A、策略模式
B、橋接模式
C、適配器模式
D、單例模式
-
4、
()將抽象部分與它的實現部分分離,使它們都可以獨立地變化B
A、組合
B、橋接
C、責任鏈
D、狀態
-
5、
設計模式具有的優點A
A、適應需求變化
B、程序易于理解
C、減少開發過程中的代碼開發工作量
D、簡化軟件系統的設計
-
6、
以下哪些問題通過應用設計模式不能夠解決C
A、指定對象的接口
B、針對接口編程
C、確定軟件的功能都正確實現
D、設計應支持變化
-
7、
對數據庫的操作一般包括連接、打開、使用、關閉等步驟,對于不同類型的數據庫,其操作步驟都一致,只是連接數據庫方法有所區別,可以使用(C)對其進行設計
A、工廠方法模式
B、訪問者模式
C、模板方法模式
D、責任鏈
-
8、
現在大多數軟件都有撤銷(Undo)的功能,快捷鍵一般都是Ctrl+Z。這些軟件可能使用了( A)模式來進行。
A、備忘錄
B、訪問者
C、模板方法
D、責任鏈
-
9、
假設貓是老鼠和狗的觀察目標,老鼠和狗是觀察者,貓叫老鼠跑,狗也跟著叫,可以使用(B )描述該過程。
A、命令
B、觀察者
C、責任鏈
D、單例
-
10、
工廠方法模式的核心是A
A、一個抽象工廠
B、一個具體工廠
C、一個接口
D、沒有核心
-
11、
Strategy意圖是定義一系列的算法,把它們一個個▁▁▁▁▁起來,并且使它們可相互替換。
填空1答案:封裝
-
12、
▁▁▁▁▁模式使原本接口不兼容而不能一起工作的類可以一起工作。
填空1答案:適配器
-
13、
組合模式對單個對象▁▁▁▁▁和組合對象▁▁▁▁▁的使用具有一致性。
填空1答案:葉子對象
填空2答案:容器對象
-
14、
橋接模式包括抽象類、擴充抽象類、實現類接口和▁▁▁▁▁四個角色
填空1答案:具體實現類
-
15、
狀態模式的關鍵是引入了一個▁▁▁▁▁來專門表示對象的狀態,這個類我們叫做抽象狀態類
填空1答案:抽象類