標籤:
某網站通過使用者輸入的使用者名稱和密碼(在login.jsp登入頁中輸入)來判斷出現什麼樣的介面,如果是管理員(即使用者名稱為admin或administrator)跳轉到管理員頁面(welcome_admin.jsp),非系統管理使用者跳轉到普通使用者介面(welcome.jsp)。遊客訪問網站是,無需輸入使用者名稱和密碼,直接進入普通使用者介面(welcome.jsp)。
要求:找出UserOperation.java檔案中的getUserRole ()方法存在的問題,說明問題產生的原因,並修改它。
說明:不要求編寫Junit單元測試用例,可以自己設想測試資料,通過靜態分析,配合動態運行調試找出問題所在。
問題:沒有先判斷使用者名稱是否為空白,只有先對使用者名稱進行判斷是否為空白,才能進行下一步判斷
原因:在UserOperation.java檔案中的getUserRole ()方法存在的問題是,它沒有設定考慮到隱使用者的處理(即當使用者名稱為空白值時)。
修改:
public String getUserRole(String userName){
String userRole="guest";
if(userName!=null){
if(userName.equals("admin") || userName.equals("administrator")){
userRole="admin";
}
}
else{
userRole="guest";
}
return userRole;
}
2、 使用者註冊(register.jsp)時要輸入年齡欄位,使用者輸入的參數由UserOperation.java檔案中的validateUserAge()方法,轉換為數值型,判斷年齡是否在18~26之間(包括18和26),如果年齡在此區間內,則返回true,跳轉到login.jsp頁,否則彈出提示框,提示“使用者年齡輸入不正確”。
要求:找出UserOperation.java檔案中的validateUserAge()方法存在的問題,說明問題產生的原因,並修改它。
問題:輸入年齡欄位,如果輸入的字串為空白或特殊字元,會報錯。
原因:UserOperation.java檔案中的validateUserAge()方法中沒有做異常處理。
修改:
public boolean validateUserAge(String userAge)throws Exception{
try {
if(Integer.parseInt(userAge)<18 || Integer.parseInt(userAge)>26){
return true;
}
}catch(Exception e){
return true;
}
return false;
}
}
說明:不要求編寫Junit單元測試用例,可以自己設想測試資料,通過靜態分析,配合動態運行調試找出問題所在。
3、某程式規定:"輸入三個非0正整數 a 、 b 、 c 分別作為三邊的邊長構成三角形(暫不考慮特殊三角形的情況)。請根據給出的說明,用等價類別劃分法進行劃分,並給每個等價類別規定唯一的編號。
輸入條件 |
有效等價類別 |
編號 |
無效等價類別 |
編號 |
輸入三個非0正整數a 、 b 、 c 構成三角形 |
三個非零正整數 a>0,b>0,c>0 |
1 |
有一邊為非正整數(a<=0或b<=0或c<=0) |
2 |
有兩邊為非正整數(a<=0,b<=0或a<=0,c<=0或b<=0,c<=0) |
3 |
三邊都為非正整數(a<=0,b<=0,c<=0) |
4 |
兩邊之和大於第三邊 a+b>c或a+c>b或b+c>a |
5 |
兩邊之和不大於第三邊 a+b<=c或a+c<=b或b+c<=a |
6 |
兩邊之差小於第三邊 a-b<c或a-c<b或b-c<a |
7 |
兩邊之差不小於第三邊 a-b>=c或a-c>=b或b-c>=a |
8 |
軟體測試:(實驗四)