Saturday, August 20, 2011

Directory Structure For Software Automation Testing Project


Index:
  1. Common Directory Structure  - Automation Frame Work for the AutoIT Project
  2. Naming Convention
  3. Coding Convention
  4. Proper Comments
  5. Write proper precondition
Common Directory Structure  - Automation Frame Work for the AutoIT Project:




Note : Release Notes folder, where .doc file is included.

Naming Convention:
There is Naming Convention which are follows in the project.


Name of the variables
     For example:

Counter name (Write full description like “PASS instead of P / FAIL instead of F”)

Coding Convention:
Name of the Functions

     SC_NameOfTheRelatedScenario (Functions, which are placed in Scenariowise)
     TC_NameOfTheRelatedActivity (Functions, which are placed in TestCasewise)

In Conditional Statement, Variable Name is like, this
     <Name of Action_RowIncr / Name of Action_ColumnIncr>
       

      for(Cost_RowIncreament=0;Cost_RowIncreament<=5;Cost_RowIncreament++)
            {

            }
      instead of           

      for(i=0;i<=5;i++)
            {
            }

Comments:
     There are very importent to write proper comments at the time of making test script
     Comments are two types:
        Single line comments
        Multiple line comments (Block level)



Precondition: 
     Precondition is very important to reaches our goal with the help of reproduction steps





Some performance testing code for autoit tool to desktop based application testing:


1. CPU Utilization
2. Memory Usage
3. Time Taken



   $log = FileOpen(@WorkingDir & "\." & ".\result\Result_PSoC_CPU&MemoryUsage.log", 1)
   $logs = FileOpen(@WorkingDir & "\." & ".\result\Result_PSoC_TimeoutError.log", 1)
   
      #include <Excel.au3>
      #include <File.au3>
      #include <array.au3>
   
 for $i = 1 to 120 Step +1


  If $i == 1 Then
  
   Sleep(3000)
   Run($CmdLine[1])
   Sleep(3000)
   Run(@WorkingDir & "\." & ".\bin\SC_demoScripts\TC_drag&Drop.exe")


   Local $cpuincrement = 0
   Local $memincrement = 0
   Local $cpu = 0
   Local $cpu1 = 0
   Local $mem = 0
   Local $mem1 = 0
   Local $total = MemGetStats()
   Local $array = ProcessList("TC_drag&Drop.exe")
   Local $iPID = $array[1][1]
   Local $sProcess = $iPID
   
   for $j = 1 to 120 step +1
    
    if ProcessExists("TC_drag&Drop.exe") Then
     Local $load = Process($sProcess, 300 )
     Sleep(1000)
     
     if $load > 0 Then
      $cpu = $cpu + $load
      $cpuincrement = $cpuincrement + 1
     EndIf
     
     $mem1 = ProcessGetStats("TC_drag&Drop.exe",0)
     $mem = $mem + $mem1[1]
     $memincrement = $memincrement + 1
     
    EndIf
    
   Next
  
   if $memincrement >= 120 then
    Sleep(2000)
    ProcessClose("TC_drag&Drop.exe")
    Sleep(2000)
    ProcessClose("PSoC Creator 2.0.exe") 
    FileWriteLine($logs,"Timeout Error in TC_drag&Drop Script Execution.")
   EndIf
   
   if $cpu <> 0 Then
    $cpu = Round($cpu/$cpuincrement,2)
   EndIf

  $mem = Round((($mem/1048576)/$memincrement),2) 
  FileWriteLine($log, "                 ")
  FileWriteLine($log,"+++++ Cypress_PSoCreator +++++")
  FileWriteLine($log,"                  ")
  FileWriteLine($log,"***** Cypress_PSoCreator *****")
  FileWriteLine($log,"Process Name: "&$array[1][0])
  FileWriteLine($log,"Process PID: "&$array[1][1])
  
  Global $sFilePath1 = @WorkingDir & "\." & ".\result\Result_PSoC_Creator.xls"
  Global $oExcel1 = _ExcelBookAttach($sFilePath1)
  
   if $cpu <> 0 Then
    FileWriteLine($log,"Average CPU Usage In Percentage: "&$cpu&" %")
    _ExcelWriteCell($oExcel1, $cpu, 3, 4)
   EndIf
   if $cpu == 0 Then
    FileWriteLine($log,"Average CPU Usage In Percentage: "&$cpu1&" %")
    _ExcelWriteCell($oExcel1, $cpu1, 3, 4)
   EndIf
  
  FileWriteLine($log,"Total Physical RAM In MB: "&Round($total[1]/1024,2)&" MB")
  _ExcelWriteCell($oExcel1, Round($total[1]/1024,2), 3, 7)
  FileWriteLine($log,"Average Memory Usage In MB: "&$mem&" MB")
  _ExcelWriteCell($oExcel1, $mem, 3, 5)
  _ExcelBookClose($oExcel1, 1, 0) 
  
 EndIf

 Next
  
  FileClose($logs)
  FileClose($log)


 Func Process($strProcess = "Idle", $iSampleTime = 500, $sComputerName = @ComputerName)
  
  if $strProcess = "" then $strProcess = "Idle"
  if $iSampleTime = "" AND IsString($iSampleTime) then $iSampleTime = 500
  if $sComputerName = "" then $sComputerName = @ComputerName
    
   if not IsDeclared("iP1") AND $iSampleTime = 0 then
    $bFirstTimeInLoopMode = 1
   else
    $bFirstTimeInLoopMode = 0
   endif
    
   if not IsDeclared("iP1") then
    assign("iP1", 0, 2) 
    assign("iT1", 0, 2)
   endif
    
  $objWMIService = ObjGet("winmgmts:\\" & $sComputerName & "\root\CIMV2")
  if @error then return -2
  
   if number($strProcess) then 
    $strProcess = " WHERE IDProcess = '" & $strProcess & "'"
   else 
    $strProcess = " WHERE Name = '" & $strProcess & "'"
   endif


  if $iSampleTime OR $bFirstTimeInLoopMode = 1 then
        
        $colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_PerfRawData_PerfProc_Process" & $strProcess)
        
 For $objItem In $colItems
            
            $iT1 = $objItem.TimeStamp_Sys100NS
            $iP1 = $objItem.PercentProcessorTime
 next


        if  $objItem = "" then return -1
        sleep($iSampleTime)
  endif
    
  $colItems = $objWMIService.ExecQuery ("SELECT * FROM Win32_PerfRawData_PerfProc_Process" & $strProcess)


    For $objItem In $colItems
        $iP2 = $objItem.PercentProcessorTime
        $iT2 = $objItem.TimeStamp_Sys100NS  
    next


  if  $objItem = "" then return -1
   
  $iPP = ($iP2 - $iP1)
  $iTT = ($iT2 - $iT1)
  
  if $iTT = 0 Then return 100


  $iCPU = round( ($iPP/$iTT) * 100, 0)
  
  $iP1 = $iP2
  $iT1 = $iT2
  Return $iCPU
  
 EndFunc