Requisito Utente
Richiesta di Creazione Automatica di un TestSet contenente i test "Falliti" o "Not Completed" di una strategia (di test automatici) dopo l'esecuzione completa della stessa.
Soluzione Proposta
Inserimento di un test automatico di tipo VAPI-XP, in coda alla strategia, che controlla gli stati di tutti i test. Se presente un test in stato "Failed" o "Not Completed" allora verrà creata una strategia sotto la cartella Unattached con i casi di test negli stati sopraindicati.
_______________________________________________________________________
Implementazione sul Prodotto
Lo scenario, in questo esempio, prevede la creazione di un caso di test automatico di tipo VAPI-XP da inserire all'interno di una strategia di test automatici (QTP).
Questo caso di test si avvierà sul client di Quality Center e analizzerà tutti i casi di test precedenti, gli stati di esecuzione e se incontra almeno un Failed o Not Completed verrà creata la strategia con i soli casi di test Failed e Not Completed collegati tra loro in maniera sequenziale.
La creazione del test VAPI-XP viene effettuata in TestPlan scegliendo la tipologia VAPI-XP. Utilizzeremo il linguaggio vbs a noi più consono. Questi i passi:
1. In fase di creazione del test scegliere VAPI-XP come Tipo
2. Viene visualizzata la seguente mappa:
3. Lasciando le informazioni impostate come da default (Linguaggio e Script Name) selezionare Next. Comparirà la seguente mappa:
4. Lasciando selezionato il primo radiobutton, "COM/DCOM Server Test", andare avanti selezionando Next.
Il Wizard per la creazione del Test passa alla mappa successiva:
5. E' possibile inserire altre Classi COM ma in questo esempio ci limitiamo ad andare avanti selezionando il tasto "Next":
Selezionare il tasto Finish per concluedere e arrivare così ad aver censito il caso di test di tipo VAPI-XP che, per il momento, non fa ancora nulla.
Il Caso di Test appena creato contiene script vbs che possiamo vedere accedendo alla tab "Test Script":
Analizziamo cosa è stato creato. Sono stati inseriti automaticamente dei commenti che contengono:
Vediamo adesso cosa inserire per verificare tutte le esecuzioni delle Istanze che compongono il TestSet eccetto se stessa.
Quindi sotto la parte TODO inserirò il codice che indico per punti:
'1. Recupero Lista Istanze (ListaTS)
Dim MyTempTestSet, ListaTS, i, isCreationNeed
'variabile che indica se deve essere creato o meno il TestSet temporaneo
isCreationNeed = False
set ListaTS = CurrentTestSet.TSTestFactory.NewList("")
'2. Ciclo per tutte le istanze eccetto questa
for i = 1 to ListaTS.Count - 1
'3. Controllo stato esecuzione istanza. Se "Failed" o "Not Completed" controllo se è già stato creato il TestSet sotto Unattached. In caso contrario lo creo
if (ListaTS.Item(i).Status = "Failed" Or _
ListaTS.Item(i).Status = "Not Completed") then
if Not(isCreationNeed) then
set MyTempTestSet = TDConnection.TestSetFactory.AddItem("TemporaryTestSet_" & split(Date,"/")(2) & split(Date,"/")(1) & split(Date,"/")(0))
'viene creato un testset sotto Unattached che la cui nomenclatura è:
'TemporaryTestSet_AAAAMMGG
isCreationNeed = True
end if
'4. inserisco il caso di test in errore tramite la proprietà TestID
MyTempTestSet.TSTestFactory.AddItem(ListaTS.Item(i).TestID)
end if
next
'i punti 5, 6 e 7 devono essere effettuati solo se isCreationNeed è True
if isCreationNeed then
'5. Copio l'info dell'Host dai test failed ai test inseriti nel testset temporaneo
'Creazione Lista Istanze del Temporary TestSet
set TempListTS = MyTempTestSet.TSTestFactory.NewList("")
'ciclo per ogni istanza di test del Temporary TestSet
for each tsts in TempListTS
'ciclo per ogni istanza del CurrentTestSet
for each elem in ListTS
if elem.TestId = tsts.TestID then
tsts.field("TC_HOST_NAME") = elem.field("TC_HOST_NAME")
tsts.Post
tsts.Refresh
exit for 'esco dal for perché non mi interessa guardare tutte le altre
end if
next
next
'6. Recupero le info per le Notifiche
MyTempTestSet.Field("CY_MAIL_SETTINGS") = CurrentTestSet.Field("CY_MAIL_SETTINGS")
'7. Creazione Dipendenze tra i test nell'ordine in cui sono stati inseriti
Dim v_CY_Desc, QuerySEQ, MyComm, RecSet
v_CY_Desc = ""
'Ciclo per tutte le istanze della Temporanea eccetto l'ultima
for i=1 to TempListTS.Count - 1
'caricamento del Source
Set SourceTest = MyTempTestSet.TSTestFactory.Item(TempListTS.Item(i).ID)
Set TargetTest = MyTempTestSet.TSTestFactory.Item(TempListTS.Item(i+1).ID)
'Settaggio valore del campo CY_DESCRIPTION
v_CY_Desc = v_CY_Desc & "{" & vbNewLine & _
"CN_COND_ID:" & i-1 & "," & vbNewLine &
_
"CN_TYPE:1" & "," & vbNewLine & _
"CN_VALUE:1" & "," & vbNewLine & _
"CN_TARGET:" & TargetTest.ID & "," & vbNewLine
& _
"CN_SOURCE:" & SourceTest.ID & "," & vbNewLine
& _
"CN_DESCRIPTION:" & vbNewLine & _
"}" & vbNewLine
Set SourceTest = Nothing
Set TargetTest = Nothing
next
'Imposto la query di Update
QuerySEQ = "UPDATE CYCLE SET CY_DESCRIPTION = '" & v_CY_Desc & "' WHERE CY_CYCLE_ID = " & MyTempTestSet.ID & " ;"
'Creazione oggetto Command
Set MyComm=TDConnection.Command
'Caricamento query nel Command Object
MyComm.CommandText = QuerySEQ
'Esecuzione Query
Set RecSet = MyComm.Execute
'Distruzione oggetti RecordSet e Command
Set RecSet = Nothing
Set MyComm = Nothing
'Eseguo Post e Refresh per l'oggetto TemporaryTestSet
MyTempTestSet.Post
MyTempTestSet.Refresh
'Distruzione oggetto Temporary TestSet
set MyTempTestSet = Nothing
end if
Finalmente la creazione del VAPI-XP è stata effettuata. L'unica cosa da fare è inserirlo all'interno della strategia che si vuole analizzare come ultimo caso di test.