2015-09-24 30 views
0

我需要幫助。我必須從Excel中創建測試用例,格式如下:Java腳本:如何從給定的輸入創建測試用例

**Current NextState Function Type** 

GREETING-1,repeat,PMSG 

REPEAT,CallerType,PMSG 

CALLERTYPE,XferBridges(DTMF:1),ClaimMenu(DTMF:2),XferLine2(DTMF:3),XferLine2(DTMF:4),Menu 

CLAIMMENU,RejectMenu(DTMF:1),XferLine2(DTMF:2),Menu 

REJECTMENU,NotCovered(DTMF:1),Terminated(DTMF:2),NMCard(DTMF:3),NMGroup(DTMF:4),Refill(DTMF:5),NoDrugNDC(DTMF:6),XferLine2(DTMF:2),Menu 

NOTCOVERED,RejectMenu(DTMF:1),Menu 

TERMINATED,XferLine2(DTMF:1),Menu 

NMCARD,XferLine2(DTMF:1),Menu 

NMGROUP,XferLine2(DTMF:1),Menu 

REFILL,XferLine2(DTMF:1),Menu 

NODRUGNDC,XferLine2(DTMF:1),Menu 

XFERBRIDGES,STOP,PMSG 

XFERLINE2,STOP,PMSG 

THANKYOU,GoodBye,PMSG 

GOODBYE,STOP,PMSG 

該工具將生成n個測試用例。請指導我什麼代碼我要寫信它可以產生以下類型的測試案例:

Case 1: Greeting-1 -> Repeat -> CallerType, Press DTMF 1 ->XferBridges ->STOP 

Case 2: Greeting-1 -> Repeat -> CallerType, Press DTMF 2 ->ClaimMenu, Press DTMF 1 -> RejectMenu, Press DTMF 1 ->NotCovered, Press DTMF1 -> RejectMenu -> STOP(from entering infinte into loop) 

Case 3: Greeting-1 -> Repeat -> CallerType, Press DTMF 2 ->ClaimMenu, Press DTMF 1 -> RejectMenu, Press DTMF 2 -> Terminated, Press DTMF 1 ->XferLine2 ->STOP 

Case 4: Greeting-1 -> Repeat -> CallerType, Press DTMF 2 ->ClaimMenu, Press DTMF 1 -> RejectMenu, Press DTMF 3 -> NMCard, Press DTMF 1 ->XferLine2 ->STOP 

**.** 


**.** 

你也許能得到一個想法是什麼,我在這裏做。試圖爲每個呼叫流創建測試用例,如果下一個狀態是PMSG,那麼將它添加到同一個數組中,但是如果下一個狀態是MENU,那麼將創建新的數組(這意味着新的測試用例),該數組將通過所有DTMF選項及其相應的下一個狀態等等

我用遞歸循環來獲取輸出,但是它給出了錯誤的值。

代碼:

function generateTestCaseList(nextState) { 
 
\t \t var incCount = 1; 
 
\t \t 
 
\t \t var positionInt = findNextState(nextState); 
 
\t \t var tempStoredArray = allState[positionInt]; 
 
\t \t 
 
\t \t if(tempStoredArray[0].toLowerCase() == menuName.toLowerCase()) 
 
\t \t { 
 
\t \t \t incCount = menuPostion; 
 
\t \t \t f = true; 
 
\t \t } \t 
 
\t \t else if(tempStoredArray[0].toLowerCase() == nextMenuName.toLowerCase()) 
 
\t \t \t incCount = nextMenuPostion; 
 
\t \t \t \t \t 
 
\t \t var tempStr = getState(tempStoredArray, incCount); 
 
\t \t var tempArr = tempStr.toLowerCase().split("%"); 
 
\t \t 
 
\t \t nextState = tempArr[1]; 
 
\t \t parentStr = parentStr + tempArr[0]; 
 
\t \t var cntInfi = parentStr.toLowerCase().split(nextState).length -1; 
 
\t \t 
 
\t \t if(cntInfi == 2) 
 
\t \t { 
 
\t \t \t return parentStr; 
 
\t \t } 
 
\t \t else if(nextState != "stop") 
 
\t \t { 
 
\t \t \t var pstInt = findNextState(nextState); 
 
\t \t \t var tempArr = allState[pstInt]; 
 
\t \t \t 
 
\t \t \t if(tempArr[tempArr.length -1] == "Menu" && f == true) 
 
\t \t \t { \t 
 
\t \t \t \t nextMenuName = tempArr[0]; 
 
\t \t \t \t var tempMenuPsx= tempArr.length - 2; 
 
\t \t \t \t //WScript.Echo("tempMenuPsx"+nextMenuName+tempMenuPsx); 
 
\t \t \t \t for(var k=tempMenuPsx;k >0 ;k--) 
 
\t \t \t \t { 
 
\t \t \t \t \t nextMenuPostion = k; 
 
\t \t \t \t \t //WScript.Echo("nextMenuPostion"+nextMenuPostion); 
 
\t \t \t \t \t WScript.Echo("parentStr"+parentStr); 
 
\t \t \t \t \t var temp = generateTestCaseList(nextState); 
 
\t \t \t \t \t childStr = childStr +temp; 
 
\t \t \t \t \t resultList.push(childStr); 
 
\t \t \t \t \t childStr = ""; 
 
\t \t \t \t \t 
 
\t \t \t \t } 
 
\t \t \t \t 
 
\t \t \t } 
 
\t \t \t else 
 
\t \t \t { 
 
\t \t \t \t generateTestCaseList(nextState); 
 
\t \t \t } 
 
\t \t \t 
 
\t \t } 
 
\t \t else 
 
\t \t { 
 
\t \t \t return parentStr; 
 
\t \t } 
 
\t \t 
 
} 
 

 
function findNextState(nextState) { 
 
\t 
 
\t for(var l=0;l<allState.length;l++) 
 
\t { 
 
\t \t if(allState[l][0].toLowerCase()==nextState.toLowerCase()) 
 
\t \t \t return l; 
 
\t } 
 
\t return 0; \t \t \t 
 
} 
 

 
function getState(tempArray,l) { 
 
\t 
 
\t var tempStr = tempArray[0]; 
 
\t \t \t \t 
 
\t if(tempArray[2] =="GETV") 
 
\t \t tempStr = tempStr +";Voice: Say Something;"+tempArray[2]+";$%"+tempArray[1]; 
 
\t else if(tempArray[2] =="PMSG") 
 
\t \t tempStr = tempStr +";"+tempArray[2]+";$%"+tempArray[1]; 
 
\t else 
 
\t \t tempStr = tempStr +";DTMF:"+l+";"+tempArray[tempArray.length -1]+";$%"+tempArray[l]; 
 
\t \t 
 
\t return tempStr; 
 
}

結果( 「$」 就在這裏下一個狀態分離器):

1. greeting-1;pmsg;$repeat;pmsg;$callertype;dtmf:4;menu;$xferline2;pmsg;$ 
2. greeting-1;pmsg;$repeat;pmsg;$callertype;dtmf:3;menu;$xferline2;pmsg;$ 
3. greeting-1;pmsg;$repeat;pmsg;$callertype;dtmf:2;menu;$claimmenu;dtmf:2;menu;$xferline2;pmsg;$claimmenu;dtmf:1;menu;$rejectmenu;dtmf:7;menu;$xferline2;pmsg;$rejectmenu;dtmf:6;menu;$nodrugndc;dtmf:1;menu;$ 

4. greeting-1;pmsg;$repeat;pmsg;$callertype;dtmf:2;menu;$claimmenu;dtmf:2;menu;$xferline2;pmsg;$claimmenu;dtmf:1;menu;$rejectmenu;dtmf:7;menu;$xferline2;pmsg;$rejectmenu;dtmf:6;menu;$nodrugndc;dtmf:1;menu;$rejectmenu;dtmf:1;menu;$notcovered;dtmf:1;menu;$rejectmenu;dtmf:7;menu;$ 

5. greeting-1;pmsg;$repeat;pmsg;$callertype;dtmf:2;menu;$claimmenu;dtmf:2;menu;$xferline2;pmsg;$claimmenu;dtmf:1;menu;$rejectmenu;dtmf:7;menu;$xferline2;pmsg;$rejectmenu;dtmf:6;menu;$nodrugndc;dtmf:1;menu;$rejectmenu;dtmf:1;menu;$notcovered;dtmf:1;menu;$rejectmenu;dtmf:7;menu;$rejectmenu;dtmf:6;menu;$nodrugndc;dtmf:1;menu;$ 

輸出包含在單個DTMF​​所有選項呼叫流程是worng。任何輸入都會對您有所幫助。

回答

0

我已經得到了解決方案,它效率不高,但確實提供了所需的輸出。

function generateTestPlan() { 
 
\t 
 
\t var menuCount = 0; 
 
\t for(var g=0;g<allState.length;g++) 
 
\t { 
 
\t \t var tempArr = allState[g]; 
 
\t \t 
 
\t \t if(tempArr[tempArr.length-1] == "Menu") 
 
\t \t { 
 
\t \t \t var tempArr = []; 
 
\t \t \t tempArr.push(allState[g][0]); 
 
\t \t \t for(var i =1;i<allState[g].length-1; i++) 
 
\t \t \t { 
 
\t \t \t \t tempArr.push(allState[g][i]); 
 
\t \t \t \t menuCount++; 
 
\t \t \t } 
 
\t \t \t 
 
\t \t \t menuList.push(tempArr); 
 
\t \t } 
 
\t } 
 
\t var firstState = allState[0][0]; 
 
\t \t 
 
\t for(var k=0;k < menuCount*1000;k++) 
 
\t { 
 
\t \t getCallFlow(firstState,stack1) 
 
\t \t stack.push(stack1); 
 
\t \t stack1 = []; 
 
\t } 
 
\t 
 
\t stack = eliminateDuplicates(stack); 
 

 
} 
 

 
function getCallFlow (nextState,stack1) 
 
{ 
 
\t \t var positionInt = findNextState(nextState); 
 
\t \t var tempStoredArray = allState[positionInt]; 
 
\t \t 
 
\t \t var g = 0; 
 
\t \t for(var b= 0; b < menuList.length ;b++) 
 
\t \t { 
 
\t \t \t if(menuList[b][0] == tempStoredArray[0]) 
 
\t \t \t { 
 
\t \t \t \t var len = menuList[b].length -1; 
 
\t \t \t \t g =Math.floor(Math.random() * len) + 1 ; 
 
\t \t \t } 
 
\t \t } 
 
\t \t 
 
\t \t var tempStr = getState(tempStoredArray,g); 
 
\t \t 
 
\t \t var tempArr = tempStr.toLowerCase().split("%"); 
 
\t \t var nextState1 = ""; 
 
\t \t var multipleGoto = tempArr[1].toLowerCase().split("@").length -1; 
 
\t \t 
 
\t \t if(multipleGoto > 1) 
 
\t \t { 
 
\t \t \t var multipleArray = tempArr[1].toLowerCase().split("@"); 
 
\t \t \t //WScript.Echo(multipleArray) 
 
\t \t \t var len = multipleArray.length -1; 
 
\t \t \t var choose =Math.floor(Math.random() * len) + 1 ; 
 
\t \t \t //WScript.Echo(choose) 
 
\t \t \t nextState1 = multipleArray[choose]; 
 
\t \t \t //WScript.Echo(nextState1) 
 
\t \t } 
 
\t \t else 
 
\t \t { 
 
\t \t \t nextState1 = tempArr[1]; 
 
\t \t } 
 
\t \t 
 
\t \t stack1.push(tempArr[0]); 
 
\t \t 
 
\t \t if(checkIfArrayIsUnique(stack1) == false) 
 
\t \t { 
 
\t \t \t stack1.push("stop"); 
 
\t \t \t return ; 
 
\t \t } 
 
\t \t 
 
\t \t if(nextState1 == "stop") 
 
\t \t { 
 
\t \t \t stack1.push("stop"); 
 
\t \t \t return ; 
 
\t \t } 
 
\t \t else 
 
\t \t { 
 
\t \t \t getCallFlow(nextState1,stack1); 
 
\t \t } 
 
\t \t 
 
} 
 
function findNextState(nextState) { 
 
\t 
 
\t for(var l=0;l<allState.length;l++) 
 
\t { 
 
\t \t if(allState[l][0].toLowerCase()==nextState.toLowerCase()) 
 
\t \t \t return l; 
 
\t } 
 
\t return 0; \t \t \t 
 
}

相關問題