Tuesday

On demand Testing Framework - Keyword Driven

What this program will do : it will read the Yes flag and then run the QTP on the particular machine. Which is given into the column "Where want to Run PATH - QC or any other Path"
Prerequisite: Might be DCOM setting need to do for remote execution.

Run prompt > dcomcnfg > Component service > Computer > My computer > DCOM config > right click on QuickTest Professional Automation > security > add the name of user for alll three customize radio button from which you want to run the QTP scripts.

Steps:
Design the Exel with coulmn
Testcasename Where want to Run PATH - QC or any other Path Run On demand When You want to run AM/PM Enviorment URL Resultant Command TSR Location USER


Sample:

Testcasename Where want to Run PATH - QC or any other Path Run On demand When You want to run AM/PM Enviorment URL Resultant Command TSR Location USER
TC_Login shukr02-xp YES Now PM www.Build1.com C:\Automation\TestSuite
TC_CreatRequest Load Sharing Machine NO Now AM www.Build1.com C:\Automation\TestSuite
TC_AmendRequest Load Sharing Machine NO Now PM www.Build3.com C:\Automation\TestSuite
TC_DO_Question Load Sharing Machine NO Now AM www.Build4.com C:\Automation\TestSuite
TC_PutRecommendation Load Sharing Machines NO Now AM www.Build1.com C:\Automation\TestSuite
TC_LogIncident Load Sharing Machine NO Now AM www.Build1.com C:\Automation\TestSuite
TC_resubmit Incident Load Sharing Machine NO 10:20 AM www.Build2.com C:\Automation\TestSuite
TC_SendEmail Subject\QTPFolder\Automation Suite NO 10:34 PM www.Build2.com C:\Automation\TestSuite
TC_LogtheBug0 alara01-xp YES Now AM www.Build2.com \\alara01-xp\Automation\TestSuite
TC_LogtheBug1 alara01-xp NO Now AM www.Build2.com \\alara01-xp\Automation\TestSuite
TC_LogtheBug Load Sharing Machines NO Now AM www.Build2.com C:\Automation\TestSuite
EOF EOF EOF EOF EOF EOF EOF EOF EOF



Select Task
QTP Automation YES
CURL Automation - Sheet 2 NO
Build Deployment - Sheet 3 NO


Macro to run this Code:

'OnDEmandAutomation ("C:\AutomationTesting\TestSuite.xlsm")
Sub OnDEmandAutomation()

'Shell Environ$("COMSPEC") & " /k C:\AutomationTesting\StartAutomation.bat"

Dim tNum, tLoc(100), tCase(100), tTime(100), tTimeAMPM(100), tEnv(100), tpth(100)
APath = "C:\AutomationTesting\TestSuite.xlsm"
tNum = 0

Dim rowCount
rowCount = 2

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.Workbooks.Open APath

'xlApp.ScreenUpdating = False
'Set objSheet=xlApp.Workbooks(APath).worksheet("Sheet1")
Set objSheet = xlApp.ActiveWorkbook.Worksheets(1) ' Take Active WorkBook




screenRow = 0

For rowNumber = 2 To 100

screenRow = screenRow + 1

If objSheet.Cells(rowNumber, 1) = "EOF" Then
Exit For

Else
If objSheet.Cells(rowNumber, 3) = "YES" Or objSheet.Cells(rowNumber, 1) = "EOF" Then
tCase(tNum) = objSheet.Cells(rowNumber, 1).Value
tLoc(tNum) = objSheet.Cells(rowNumber, 2).Value
tTime(tNum) = objSheet.Cells(rowNumber, 4).Value
tTimeAMPM(tNum) = objSheet.Cells(rowNumber, 5).Value
tEnv(tNum) = objSheet.Cells(rowNumber, 6).Value
tpth(tNum) = objSheet.Cells(rowNumber, 7).Value


For rt = 0 To 0

'sComp = tLoc(tNum)
'Set WMIobj = GetObject("winmgmts:\\" & sComp & "\root\cimv2")
'Set IEExp = WMIobj.ExecQuery("Select * from Win32_Process Where Name = 'QTPro.exe'")
'MsgBox IEExp.Count
'For Each IEx In IEExp
' IEx.Terminate()
'Next
'Set WMIobj = GetObject("winmgmts:\\" & sComp & "\root\cimv2")
' Find All the iexplore.exe processes
'Set IEExp = WMIobj.ExecQuery("Select * from Win32_Process Where Name = 'iexplore.exe'")
'For Each IEx In IEExp
' IEx.Terminate()
'Next

'Shell Environ$("COMSPEC") & " /k C:\AutomationTesting\LaunchQTP.bat"
'wscript.exe "C:\AutomationTesting\Testrun.vbs"
'If tLoc(tNum) <> "shukr02-xp" Then
'staf_command(tNum)="Staf" & tLoc(tNum) & "process start command" QTPro.exe
Set qtApp = CreateObject("QuickTest.Application", tLoc(tNum)) ' tLoc(tNum) Create the Application object
qtApp.Launch ' Start QuickTest
qtApp.Visible = True ' ' Make the QuickTest application visible
qtApp.Open tpth(tNum), False
qtApp.Test.Run
'qtApp.Test.Close ' Close the test
qtApp.Quit
Set qtApp = Nothing

'Else
'staf_command(tNum)="Staf" & tLoc(tNum) & "process start command" QTPro.exe
'Set qtApp1 = CreateObject("QuickTest.Application") ' Create the Application object
'qtApp1.Launch ' Start QuickTest
'qtApp1.Visible = True ' ' Make the QuickTest application visible
'qtApp1.Open tpth(tNum), False
'qtApp1.Test.Run
'qtApp.Test.Close ' Close the test
'qtApp1.Quit
'Set qtApp1 = Nothing
'End If



Next


'qtApp.Quit ' Exit QuickTest

'Set qtApp = Nothing ' Release the Application object

tNum = tNum + 1


'tNum = tNum + 1
'msgBox "Testcase" & testCase
End If
End If
Next

xlApp.Quit

KillProcessEXCEL = "EXCEL.EXE"
Set ProcessList2 = GetObject("winmgmts://.").InstancesOf("win32_process")
For Each Process In ProcessList2
If Process.Name = KillProcessEXCEL Then
Process.Terminate
End If
Next

'Call AttachHTMLAsMailContent("Team-Picasso-QA123", "shukr02", "alara01", "Automation Completed", "http://result.com")

End Sub


'Function AttachHTMLAsMailContent(sSendTo, sSendToCC, sSendToBCC, sSubject, sHtmlPath)

'Dim objOutlook
'Dim objOutlookMsg
'Dim olMailItem

' Create the Outlook object and the new mail object.
'Set objOutlook = CreateObject(Outlook.Application)
'Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

' Define mail recipients
'objOutlookMsg.To = sSendTo
'objOutlookMsg.CC = sSendToCC
'objOutlookMsg.BCC = sSendToBCC

' Body of the message

'With objOutlookMsg
'Set fso = CreateObject(Scripting.FileSystemObject)
'Set ts = fso.OpenTextFile(sHtmlPath, 1)
'strText = ts.ReadAll
'.HTMLBody = strText
'.Display
'End With

' Send the message
'objOutlookMsg.Send
'Wait (3)

' Release the objects
'Set objOutlook = Nothing
'Set objOutlookMsg = Nothing

'End Function

QTP - Reading Command prompt from QTP

'Add the command prompt as a object in QTP OR.

myname=SysExecute("dir")
MsgBox myname

Function SysExecute(ByVal strCmdtoExecute)
Dim Output ' Variant
SystemUtil.CloseProcessByName("cmd.exe")
Wait 2
SystemUtil.Run "cmd", "/K cd c:\ & cls", "", "", 1
Wait 3
sPrompt = window("CommandWindow").GetVisibleText

if(sPrompt <> " ") then
myarray = split(sPrompt,vbCRLF)
if(ubound(myarray)>0) Then
lastline = ubound(myarray)
sPrompt = myarray(lastline)
else
sPrompt = "c:\>"
end if
else
sPrompt = "c:\>"
end if

with window("CommandWindow")
.activate
.type strCmdtoExecute
.type micreturn
end with
i=1
Do While True
cmdOutput = window("CommandWindow").GetVisibleText
myarray = split(cmdOutput,vbCRLF)
if(ubound(myarray)>0) Then
lastline = ubound(myarray)
sNewPrompt = myarray(lastline)
if(StrComp(sPrompt,sNewPrompt,0) = 0) then
For j = 1 to lastline -1
Output = Output & vbcrlf & myarray(j)
Next
Exit do
end if
else
lastline = ubound(myarray)
end if
if(i>15) then 'Exit condition
if(lastline > 3) then
For j = 2 to lastline -1
Output = Output & vbcrlf & myarray(j)
Next
else
Output = " "
end if
Exit do
end if
i=i+1
Loop

SysExecute = Output
window("CommandWindow").Close
Wait 2
Exit function
End Function

Monday

QTP - Matching pattern in string by regular expression

MsgBox(RegExpTest("ab","abhishek"))

Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches ' Create variable.
Set regEx = New RegExp ' Create a regular expression.
regEx.Pattern = patrn ' Set pattern.
regEx.IgnoreCase = True ' Set case insensitivity.
regEx.Global = True ' Set global applicability.
Set Matches = regEx.Execute(strng) ' Execute search.
For Each Match in Matches ' Iterate Matches collection.
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
RetStr = RetStr & Match.Value & "'." & vbCRLF
Next
RegExpTest = RetStr
End Function
'If want to search multiple lines
'MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4"))

Friday

STAF - Software Test Automation Framework

Installation and setting machine:

STEP;1 : INstall STF in C:\STAF
Step2: create C:\STAF\service folder
Step3: put Stax in the service folder
STEP 4: Install perl and Python
STEP 5:Set classpath add -->C:\STAF\bin\JSTAF.jar;C:\python22\lib;
classpath add -->C:\STAF\bin\JSTAF.jar;C:\python22\lib;C:\perl\lib;
path add -->C:\STAF\bin;C:\Python22;c:\perl\bin;
create a new variable with PYTHONPATH and set the value C:\STAF\bin;
create a new variable STAF_DIR with the value c:\staf;
STEP 6:OPen the staf.cnf file from c:\staf\bin. put line given below
SERVICE STAX LIBRARY JSTAF EXECUTE C:\STAF\services\stax\STAX.jar
SERVICE EVENT LIBRARY JSTAF EXECUTE C:\STAF\services\stax\STAFEvent.jar
Step 7: Set trust level
TRUST LEVEL 5 MACHINE shukr02-RH5
Step 8: comment the line SSL in staf.cnf file

Step9: set the other trust machine.

Step 10: start Staf


Command:
Go to C:\staf folder in command prompt:
1.To Open the commad promt on trusted machine
staf process start process cmd.exe
staf process start process cmd.exe

2. Copy the file from one locatoin to other location:
C:\>STAF local FS COPY FILE "C:\Program Files\file1.txt" TOFILE "C:\Program Files\file2.txt"
STAF local PROCESS START SHELL COMMAND "copy \"C:\Program Files\file1.txt\" \"C:\Program Files\file2.txt\"" WAIT RETURNSTDOUT STDERRTOSTDOUT

3.LIST DIRECTORY ( like ls in Unix)
STAF local FS LIST DIRECTORY "C:\Program Files"
4.More kind of Unix command facility
like more "C:\Program Files\file1.txt"
STAF local PROCESS START SHELL COMMAND "more \"C:\Program Files\file1.txt\"" WAIT RETURNSTDOUT STDERRTOSTDOUT SAMECONSOLE
STAF local FS GET FILE "C:\Program Files\file1.txt"
5.echo this is the string to be parsed > "C:\Program Files\echofile.txt"

if fiile will not there it will craete the file:

this command will replace the content of file and put the string given after echo "this is the string to be parsed "

STAF local PROCESS START SHELL COMMAND "echo this is the string to be parsed > \"C:\Program Filesr\echofile.txt\"" WAIT RETURNSTDOUT STDERRTOSTDOUT

Wednesday

QTP - Open a process on remote machine

strComputer = "alara01-xp"
'strComputer = "."
'strCommand = "notepad.exe"
'strCommand = "C:\Program Files\HP\QuickTest Professional\bin\QTPro.exe"
'strCommand = "C:\Program Files\HP\QuickTest Professional\bin\QTP.exe"
'c:\Program Files\Mercury Interactive\QuickTest Professional\bin
'strCommand = "c:\Program Files\Mercury Interactive\QuickTest Professional\bin\QTPro.exe"
'strCommand = "C:\Program Files\Internet Explorer\IEXPLORE.exe"
'strCommand = "mspaint.exe"
'strCommand = "IEXPLORE.EXE"
strCommand = "cmd.exe"



Const INTERVAL = "n"
Const MINUTES = 1


Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objScheduledJob = objWMIService.Get("Win32_ScheduledJob")
Set objSWbemDateTime = CreateObject("WbemScripting.SWbemDateTime")


objSWbemDateTime.SetVarDate(DateAdd(INTERVAL, MINUTES, Now()))
errReturn = objScheduledJob.Create(strCommand, objSWbemDateTime.Value, False, 0, 0, True, intJobID)


If errReturn = 0 Then
Wscript.Echo "notepad.exe was started with a process ID: " & intJobID
Else
Wscript.Echo "notepad.exe could not be started due to error: " & errReturn
End If

VBS to launch/Invoke QTP

VBS to launch QTP 9.2 and invoke script automatically
'Code found @ http://www.learnqtp.com/forums/vbs-launch-qtp-invoke-script-automatically-t-417.html
Enter the following code in VBScript editor and save teh file(saves as a VBS file) then you can go to the CMD to run the VBS file or use windows scheduler to schedule for a particular time.This is just an example make sure to change the location of the test script.

'**************************************************************************
'The following script opens a test, configures run options and settings,
'runs the test, and then checks the results of the test run.
'**************************************************************************
Dim qtApp 'As QuickTest.Application 'Declare the Application object variable
Dim qtTest 'As QuickTest.Test 'Declare a Test object variable
Dim qtResultsOpt 'As QuickTest.RunResultsOptions ' Declare a Run Results Options object variable
Const ForReading = 1, ForWriting = 2
Dim fso, f, result

Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("C:\Program Files\Mercury Interactive\QuickTest Professional\Tests\Regression_Test_Results.txt", ForWriting, True)

Set qtApp = CreateObject("QuickTest.Application") 'Create the Application object
qtApp.Launch 'Start QuickTest
qtApp.Visible = True 'Make the QuickTest application visible

'Set QuickTest run options
qtApp.Options.Run.ImageCaptureForTestResults = "OnError"
qtApp.Options.Run.RunMode = "Fast"
qtApp.Options.Run.ViewResults = False
qtApp.Open "C:\Program Files\Mercury Interactive\QuickTest Professional\Tests\Regression_Suite_BA_1\CharitableOrg_Owner_NonQual_GuaDeathBen​efit_SurrenderCharges", True ' Open the test in read-only mode

'Set run settings for the test
Set qtTest = qtApp.Test
qtTest.Settings.Run.IterationMode = "rngIterations" 'Run only iterations 2 to 4
qtTest.Settings.Run.StartIteration = 2
qtTest.Settings.Run.EndIteration = 4
qtTest.Settings.Run.OnError = "NextStep" ' Instruct QuickTest to perform next step when error occurs

'Set the results path
Set qtResultsOpt = CreateObject("QuickTest.RunResultsOptions") ' Create the Run Results Options object
qtResultsOpt.ResultsLocation = "C:\Program Files\Mercury Interactive\QuickTest Professional\Tests\Regression_Suite_BA_1\CharitableOrg_Owner_NonQual_GuaDeathBen​efit_SurrenderCharges\Res1" ' Set the results location
qtTest.Run qtResultsOpt 'Run the test
result= qtTest.LastRunResults.Status
f.Write("Test 1: CharitableOrg_Owner_NonQual_GuaDeathBenefit_SurrenderCharges - ")
f.Write(result)
f.WriteBlankLines(1)

Monday

EXPORT QC TESTCASES and BUGS in Excel code

Option Explicit
Dim sUserName,sPassword
sUserName = "YOUR_UID"
sPassword = "YOUR_PWD"
Const xlLeft = -4131
Const xlRight = -4152
Const xlCenter = -4108
Const xlGeneral = 1
Dim QCConnection
'Return the TDConnection object.
Set QCConnection = CreateObject("TDApiOle80.TDConnection")
QCConnection.InitConnectionEx "http://YOUR_URLOFQC:8080/qcbin/"
QCConnection.Login sUserName, sPassword
If (QCConnection.LoggedIn <> True) Then
MsgBox "QC User Authentication Failed"
WScript.Quit
End If
Dim sDomain, sProject
sDomain = "YOUR_Domain"
sProject = "YOUR_Project"
QCConnection.Connect sDomain, sProject
If (QCConnection.Connected <> True) Then
MsgBox "QC Project Failed to Connect to " & sProject
WScript.Quit
End If
Call ExportTestCases()
'Call ExportDefects()
QCConnection.Disconnect
QCConnection.Logout
QCConnection.ReleaseConnection
Function PrintFields(oObject)
Dim FieldsList, Field
Set FieldsList = oObject.Fields
For Each Field In FieldsList
WScript.Echo Field
Next
End Function
Function ExportTestCases()
Dim TestFactory, TestList
Set TestFactory = QCConnection.TestFactory
Set TestList = TestFactory.NewList("") 'Get a list of all tests.
Dim TestCase, Excel, Sheet
Set Excel = CreateObject("Excel.Application") 'Open Excel
Excel.WorkBooks.Add() 'Add a new workbook
'Get the first worksheet.
Set Sheet = Excel.ActiveSheet
Sheet.Name = "Tests"
With Sheet.Range("A1:H1")
.Font.Name = "Arial"
.Font.FontStyle = "Bold"
.Font.Size = 10
.Font.Bold = True
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Interior.ColorIndex = 15 'Light Grey
End With
Sheet.Cells(1, 1) = "Subject (Folder Name)"
Sheet.Cells(1, 2) = "Test Name (Manual Test Plan Name)"
Sheet.Cells(1, 3) = "Description"
'Sheet.Cells(1, 4) = "Designer (Owner)"
'Sheet.Cells(1, 5) = "Status"
Sheet.Cells(1, 6) = "Step Name"
Sheet.Cells(1, 7) = "Step Description(Action)"
Sheet.Cells(1, 8) = "Expected Result"
'Call PrintFields(TestFactory)
Dim Row
Dim countingSubject
Row = 2
'Iterate through all the tests.
For Each TestCase In TestList
Dim DesignStepFactory, DesignStep, DesignStepList
Set DesignStepFactory = TestCase.DesignStepFactory
Set DesignStepList = DesignStepFactory.NewList("")
countingSubject=0
If DesignStepList.Count = 0 Then
'Save a specified set of fields.
Sheet.Cells(Row, 1).Value = TestCase.Field("TS_SUBJECT").Path
Sheet.Cells(Row, 2).Value = TestCase.Field("TS_NAME")
Sheet.Cells(Row, 3).Value = TestCase.Field("TS_DESCRIPTION")
'Sheet.Cells(Row, 4).Value = TestCase.Field("TS_RESPONSIBLE")
'Sheet.Cells(Row, 5).Value = TestCase.Field("TS_STATUS")
Row = Row + 1
Else
For Each DesignStep In DesignStepList
'Save a specified set of fields.
If countingSubject=0 then
Sheet.Cells(Row, 1).Value = TestCase.Field("TS_SUBJECT").Path
Sheet.Cells(Row, 2).Value = TestCase.Field("TS_NAME")
Sheet.Cells(Row, 3).Value = TestCase.Field("TS_DESCRIPTION")
'Sheet.Cells(Row, 4).Value = TestCase.Field("TS_RESPONSIBLE")
'Sheet.Cells(Row, 5).Value = TestCase.Field("TS_STATUS")
'Save the specified design steps.
Sheet.Cells(Row, 6).Value = DesignStep.StepName
Sheet.Cells(Row, 7).Value = DesignStep.StepDescription
Sheet.Cells(Row, 8).Value = DesignStep.StepExpectedResult
else
Sheet.Cells(Row, 6).Value = DesignStep.StepName
Sheet.Cells(Row, 7).Value = DesignStep.StepDescription
Sheet.Cells(Row, 8).Value = DesignStep.StepExpectedResult
end if
countingSubject=countingSubject+1
Row = Row + 1
Next
End If
'for max number of row delet this code if you want full export
If Row>500 Then
Exit For
End If
Next
'Call PrintFields(DesignStepFactory)
'Excel.Columns.AutoFit
'Save the newly created workbook and close Excel.
'Excel.ActiveWorkbook.SaveAs("C:\" & sProject & "_TESTCASE1.xls")
'Excel.Workbooks.Open("C:\Export_TESTCASE1.xlsx")

Dim objRange
Set objRange = Sheet.UsedRange
'Remove tag in the following lines
Excel.Cells.Replace "'tag_html>'"," "
Excel.Cells.Replace "tag_body>"," "
Excel.Cells.Replace "/tag_html>"," "
Excel.Cells.Replace "/tag_body>"," "
Excel.Cells.Replace "tag_br>"," "

Excel.ActiveWorkbook.SaveAs("C:\" & sProject & "_TESTCASE.xlsx")
Excel.Quit
End Function