Report Riepilogo Esecuzioni e Anomalie

 

Il report sarà composto da un unico foglio excel in cui verranno riportate queste informazioni:

 

  • Percorso in TestLab sottoforma di path (es: Root\Folder1\Folder1_1\...)
  • Nome della Strategia
  • Numero Test
  • Passed
  • Failed
  • No Run
  • Not Completed
  • N/A
  • Tot Bug
  • New
  • Open
  • Assigned
  • Fixed
  • Reopen
  • Rejected
  • Closed

 

 

Per estrarre le informazioni relative alle esecuzioni dei test e alle anomalie connesse è importante capire quali sono le relazioni tra i diversi oggetti. Per far ciò si vedano le 2 figure qui sotto:

 

 

______________________________________________________________________

 

Estrazione dei Dati - Riepilogo:

 

 

PREREQUISITI ESSENZIALI:

  • Ogni Caso di Test è composto da ALMENO uno STEP
  • I Defect sono aperti solamente durante l'esecuzione di un Run, più precisamente nella fase di esecuzione singolo Step

 

 

1. Partiamo col fatto che l'estrazione avverrà tramite la selezione di un pulsante personalizzato all'interno della sezione TestLab che funzionerà solo se posizionati su una cartella.

2. Se Ok dalla Folder estraiamo tutte le strategie che si trovano al di sotto (compresi figli, nipoti, pronipoti, ecc...). Utilizzeremo il metodo FindTestSets dell'oggetto TestSetFolder.

3. Ciclando su ogni TestSet viene estratta la lista delle Istanze di Test

4. Ciclando su tutte le Istanze recuperiamo lo stato di esecuzione e accederemo all'ultimo Run, se esiste.

5. Dal Run esamineremo se, per ciascun step, esistono anomalie collegate

5.1 Se esiste l'anomalia dovrà essere riportata incrementando il totale ed esaminando lo stato della stessa incrementando il contatore relativo.

 

_______________________________________________________________________

 

Implementazione sul Prodotto

  

Si rimanda alla sezione WorkFlow Script Editor per la spiegazione su come inserire un Nuovo Pulsante Personalizzato

  

Supponiamo che la Action collegata al Pulsante sia actReportRunDefect

  

1. Inseriremo nella ActionCanExecute il richiamo alla Sub principale in TestLab

  

Function ActionCanExecute(ActionName)

On Error Resume Next

Dim Res

Res = True

  

   if ActionName = "actReportRunDefect" then

        'Richiamo Sub sotto TestLab

        TestSet_ReportRunDefect

   end if

 

ActionCanExecute = Res

On Error Goto 0

End Function

 

 

2. Nella sezione TestLab inserisco la Sub TestSet_ReportRunDefect

 

Sub TestSet_ReportRunDefect

On Error Resume Next

Dim objXLS, objWkb, objWks, i

Dim myTestSetList, myListaIstanze

Dim varRes, arrRes, j, col

 

'Controllo il focus sia su una folder altrimenti esco

'Utilizzo l'oggetto objFold_TL.

'Questo oggetto deve essere dichiarato nella sezione common module

'bisogna inserire questo codice nell'evento MoveToFolder:

'          set objFold_TL = Folder

'bisogna inserire questo codice in ExitModule (common) e

'in TestSet_MoveTo (TestLab):

'          set objFold_TL = Nothing

 

if objFold_TL.IsNull then

   msgbox "Non ho il focus su una cartella. Posizionarsi su una folder.", vbCritical + vbSystemModal, "Quality Center - Errore Focus Cartella"

   exit sub

end if

 

'Se sono qui significa che il controllo di posizionamento è ok

 

'*******************************************************

'Creazione oggetti Excel.

'*******************************************************

set objXLS = CreateObject("Excel.Application")

objXLS.Visible = False   'Non visualizzo l'ambiente excel

 

set objWkb = objXLS.Workbooks.Add

set objWks = objWkb.Worksheets(1)

 

'Rinomino il foglio excel

objWks.Name = "Report Esecuzioni e Bug"

 

'Scrivo l'intestazione delle colonne

objWks.Cells(1,1).Value = "Path"

objWks.Cells(1,2).Value = "Strategia"

'lasciamo la terza colonna libera

objWks.Cells(1,4).Value = "Numero Test"

objWks.Cells(1,5).Value = "Passed"

objWks.Cells(1,6).Value = "Failed"

objWks.Cells(1,7).Value = "No Run"

objWks.Cells(1,8).Value = "Not Completed"

objWks.Cells(1,9).Value = "N/A"

'lasciamo la decima colonna vuota

objWks.Cells(1,11).Value = "Tot Bug"

objWks.Cells(1,12).Value = "New"

objWks.Cells(1,13).Value = "Open"

objWks.Cells(1,14).Value = "Assigned"

objWks.Cells(1,15).Value = "Fixed"

objWks.Cells(1,16).Value = "Reopened"

objWks.Cells(1,17).Value = "Rejected"

objWks.Cells(1,18).Value = "Closed"

 

'*******************************************************

 

'Estraggo la lista dei TestSet presenti nell'alberatura

set myTestSetList = objFold_TL.FindTestSets("",False,"")

 

'incremento il numero di riga

i = 2

 

'Ciclo per ogni strategia e analizzo le info

for each elTS in myTestSetList

   

    'prima di tutto recupero dal testset la folder e da questa il path da scrivere

    'sul file excel. Faccio tutto in una unica istruzione

    objWks.Cells(i,1).Value = elTS.TestSetFolder.Path

    

    'scrivo il nome del testset nel secondo campo dell'excel

    objWks.Cells(i,2).Value = elTS.Name

    'Recupero la lista delle istanze di test presenti nella strategia

    set myListaIstanze = elTS.TSTestFactory.NewList("")

 

    'scrivo il numero dei test che compongono la strategia

    objWks.Cells(i,4).Value = myListaIstanze.Count

 

    'Analizzo tutte le istanze richiamando una funzione che mi ritorna

    'una variabile con tutti i restanti dati suddivisi da una virgola

    varRes = TestSet_Analizza_ListaIstanze(myListaIstanze)

 

    'creo l'array del risultato splittando la variabile sul carattere virgola.

    arrRes = split(varRes,",") 

 

    'scrivo tutti i dati sul file excel

    for j = 0 to Ubound(arrRes)

         'utilizzo una var col che rappresenta la colonna da scrivere

         'avendo inserito uno spazio a colonna 10 devo incrementarlo di 1

         'per saltarla.

         'Dal momento che j=0 sarebbe la colonna 5 quando j = 5

         'la colonna deve essere incrementata di 1, cioè col = 11

         if j = 5 then

           col = j + 5 + 1

          else      

           col = j + 5

         end if

 

         'scrivo l'informazione

         objWks.Cells(i,col).Value = arrRes(j)

 

    next 

 

    set myListaIstanze = Nothing

    

    i =  i + 1  'incremento la riga da scrivere sul file excel

 

next

 

'salvataggio file excel

objWkb.SaveAs "c:\temp\ReportEsecuzioni_" & split(date,"/")(2) & split(date,"/")(1) & split(date,"/")(0) & "_" & split(time,":")(0) & split(time,":")(1) & ".xls"  

'Chiudo il workbook

objWkb.Close

'esco dall'applicazione excel

objXLS.Quit

 

set objWks = Nothing

set objWkb = Nothing

set objXLS = Nothing

 

set myTestSetList = Nothing

On Error Goto 0

End Sub

 

Function TestSet_Analizza_ListaIstanze(theList)

On Error Resume Next

Dim intPassed, intFailed, intNoRun, intNotComp, intNA

Dim intTotBug, intNew, intOpen, intAssigned, intFixed, intReopened, intRejected

Dim intClosed, Res

 

Dim RunList, UltimoRun, StepList

Dim myComm, RecSet, myBug

 

Res = ""

 

'Inizializzo tutti i counter a 0

intPassed = 0

intFailed = 0

intNoRun = 0

intNotComp = 0

intNA = 0

 

intTotBug = 0

intNew = 0

intOpen = 0

intAssigned = 0

intFixed = 0

intReopened = 0 

intRejected = 0

intClosed = 0

 

'adesso ciclo per tutte le istanze

for each elIst in theList

    'recupero l'informazione sullo stato di esecuzione dell'istanza

    select case elIst.Status

             case "Passed": intPassed = intPassed + 1  

             case "Failed": intFailed = intFailed + 1

             case "No Run": intNoRun = intNoRun + 1

             case "Not Completed": intNotComp = intNotComp + 1

             case "N/A": intNA = intNA + 1

    end select

 

    'recupero la lista dei Run per l'istanza per recuperare i bug

    set RunList = elIst.RunFactory.NewList("")

    if RunList.Count > 0 then   'significa che esiste almeno un Run

       

       'istanzio l'ultimo Run

       set UltimoRun = elIst.LastRun

       'estraggo la lista degli step dal Run.

       'Sono certo, perché l'ho dato come prerequisito, 

        'che i casi di Test abbiano almeno uno Step

       set StepList =  UltimoRun.StepFactory.NewList("")      

       for each elStep in StepList

           'Controllo se per questo step è stato creato un bug.

           'devo eseguire una query

           set myComm = TDConnection.Command

           myComm.CommandText = "Select LN_BUG_ID from LINK where " & _

           "LN_ENTITY_TYPE = 'STEP' and LN_ENTITY_ID = " & elStep.ID

         

           'Eseguo la query e la salvo sul RecSet

           set RecSet = myComm.Execute

 

           'Controllo che RecSet abbia qualche record

           if RecSet.RecordCount > 0 then                                          

              'mi muovo al primo elemento

              RecSet.First 

 

              'devo ciclare per tutte le righe del recordset

              do while Not(RecSet.EOR)

 

                 'incremento il contatore del Totale dei bug

                 intTotBug = intTotBug + 1

 

                 'creo l'oggetto Bug prendendo l'ID dal RecordSet

                 set myBug = TDConnection.BugFactory.Item(RecSet.FieldValue(0))

 

                 'Controllo lo stato del Bug per incrementare i contatori

                 Select case myBug.Status

                           case "New": intNew = intNew + 1

                           case "Open": intOpen = intOpen + 1

                           case "Assigned": intAssigned = intAssigned + 1

                           case "Fixed": intFixed = intFixed + 1

                           case "Reopened": intReopened = intReopened + 1

                           case "Rejected": intRejected =  intRejected + 1

                           case "Closed": intClosed = intClosed + 1

                 End Select

 

                 RecSet.Next

 

              loop

              

           end if

 

           set RecSet = Nothing

           set myComm = Nothing

 

       next

       set StepList = Nothing

    end if

    set RunList = Nothing

next

 

'adesso che ho tutti i counter li aggrego in una variabile risultato che poi

'assegnerò alla funzione

res = str(intPassed) & "," & _

str(intFailed) & "," & _

str(intNoRun) & "," & _

str(intNotComp) & "," & _

str(intNA) & "," & _ 

str(intTotBug) & "," & _

str(intNew) & "," & _

str(intOpen) & "," & _

str(intAssigned) & "," & _

str(intFixed) & "," & _

str(intReopened) & "," & _ 

str(intRejected) & "," & _

str(intClosed)

 

TestSet_Analizza_ListaIstanze = Res

 

On Error Goto 0

End Function

 

_________________________________________________________________________

 

Pag: >    >>