0% found this document useful (0 votes)
129 views13 pages

Green Lantern Automation Framework For Testcomplete: Guide

This document describes the Green Lantern Automation Framework for automating tests in TestComplete. The framework involves choosing elements to automate, capturing them in a repository, renaming them with logical English names, categorizing them by type, and writing test scripts using the renamed elements. Test scripts are then written as routines for each element, with data coming from external sheets. This allows the scripts to be reused across different user interfaces that perform the same functions. Sample scripts are provided that demonstrate automating a login function across different sites using this framework.

Uploaded by

Nk Rh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
129 views13 pages

Green Lantern Automation Framework For Testcomplete: Guide

This document describes the Green Lantern Automation Framework for automating tests in TestComplete. The framework involves choosing elements to automate, capturing them in a repository, renaming them with logical English names, categorizing them by type, and writing test scripts using the renamed elements. Test scripts are then written as routines for each element, with data coming from external sheets. This allows the scripts to be reused across different user interfaces that perform the same functions. Sample scripts are provided that demonstrate automating a login function across different sites using this framework.

Uploaded by

Nk Rh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

GreenLanternAutomationFrameworkfor

TestComplete

Note:Stepbysteptutorialisinprogress.Meanwhileclickonthetitlelinkaboveforasample
guide.

1.Introduction
2.1.Concept
2.2.Chooseelementsforautomatingloginfunction
2.3.Capturetheelementstotherepository
2.4.Renamethelogicalnamesoftheelements
2.5.Categorizetheelementspertheirtype
2.6.TestScripts
2.6.1.RoutineforthefieldUserID
2.6.2.RoutineforthefieldPassword
2.6.3.RoutineforthebuttonSignIn
2.6.4.RoutineforthecheckboxStaysignedIn
2.6.5.Routineverifyingthelogin
2.6.6.Routinecallingalltheloginsteps
3.UserInterfaceChange
3.1.GreenlanternStepsforYahooLogin
3.2.Testrunresults(Logfiles)
4.Afewissueswithconventionalautomation
5.Conclusion

1.Introduction
Manycompanieshaveinvestedintestautomationtoolsinhopesthattheautomationtoolwillfreeup
manpowerbytakingoverregressiontesting.TheautomationtoolslookattheskinsandDOMsofthe
applications.Theyareidentifiedbythepropertiesassignedtotheelements.(Acellcouldbeidentifiedby
theRowandColumn,atablecanbeidentifiedbynumber,alinkcanbeidentifiedwithinnerHTML
ortext,andsoon.)

WhentheskinandtheDocumentObjectModelofanapplicationchangesalotorlittle,itbecomes
unavoidabletoupdateandchangetheautomationscriptsalotoralittletoo.AndiftheapplicationUser
Interfacewascompletelychanged(foranyreason)theautomatedscriptswillneedtoberecreatedfrom
scratch.

Inoneofmyrolesasanautomationengineer,Iwasinchargeforcreatingtestscriptsforthreedifferent
interfacesthatusedthesamebackend.Theirfunctionalitywassame,buttheiruserinterfacewas
completelydifferent.IstartedoffaseverybodycreatingscriptsforeachUserInterface.Butitfeltlike
toomuchhardworkbutliketoolittlesmartwork.So,IneededaframeworkwhereIcouldavoidscript
deathbyeightypercentandincreasereusabilitybyeightypercent.Ineededadisruptiveframework.That
iswhenIcameupwithGreenLanternFramework

UsingtherenamingfeatureoftheautomationtoolthatreliesontheDocumentObjectModel,thetest
scriptscouldbecreatedonceandusednomatterhowmuchtheUserInterfacechangedortheeventhe
DocumentObjectModelchanged.ForexampleautomatedtestscriptscreatedforGmailLoginpagecan
beusedforYahooLoginpage,HotmailLoginpageoranyloginpagewithausernameandpassword.

IwilldemonstratecreatingautomatedscriptsusingGreenLanternframeworkwiththetool
TestCompleteandscriptinglanguageVBScript.

2. GreenLanternSteps

Chooseelementsonthepagethataretargetedforautomation.
Capturetheelementsinarepository
RenametheminEnglishastheywouldappearonthepage
Categorizethempertheirtype(ExampleTextField,Checkbox,Radiobutton,etc.)
Writescriptsusingthepseudonymnames
Writearoutineforeachelement
RoutinesfortextfieldsshouldhavedatacomingfromexternalDatasheets
CheckboxesarecheckedONorOFFviaDataSheets
Logmessages,Warning,Errorsshouldbewritteninthescriptroutine

2.1.Concept
Mainelementsinasoftwareapplicationare
Textfields
Checkboxes
Radiobuttons
Links
Menus
Captions
Images
Logos
Everytestusessomeoralloftheelementsinapage.Theseelementsarecapturedandcategorizedand
namedastheydisplay.Everytestusessomeoralloftheelementsinapage.Whentheseelementsare
capturedandcategorizedandnamedthewaytheywoulddisplay,itiseasytoidentifyeveryelement,easy
towriteascript,easytodetectelementrecognitionfailures,etc.

2.2.Chooseelementsforautomatingloginfunction
ElementsessentialforLoggingintoawebpagearetheURL,thefieldsUserNameandPassword,and
buttonSignIn.

Figure1ChooseelementsnecessaryforthetestfromGmailLoginpage

2.3.Capturetheelementstotherepository
CapturetheelementsthefieldsUserNameandPassword,andbuttonSignInfromtheGmailLogin
page.(ExampleFigure2)


Figure2GmailLoginelementsOriginal

2.4.Renamethelogicalnamesoftheelements
Firefox=MF
GmailLogin=Gmail_Login
Username(inGmail)=UserID
Password=Password
SignIn=SignIn
Staysignedin,=StaySignedIn
Cantaccessyouraccount?=ForgotPasword

Figure3GmailLoginelementsrenamedandcategorized

2.5.Categorizetheelementspertheirtype
Tocategorize,chooseelementpanelLoginbox(whichistheparentelementforallthefield,checkbox,
button,linkelements).DragthiselementandadditunderGmailandrenameitasField.Addelements
UserIDandPasswordundertheField.DragpanelLoginboxagaintoGmailandrenameitas
Checkbox.AddelementStaySignedInundertheCheckbox.DragpanelLoginboxagaintoGmailand
renameitasLink.AddelementForgotPasswordundertheLink.DragpanelLoginboxagainto
GmailandrenameitasButton.AddelementSignInundertheButton.Theendresultwithlooklike
Figure3(Collapsedontherightandexpandedontheleft).

2.6.TestScripts
UsingtherenamedAliaseselements,itwillbeeffortlessanduncomplicatedforanewcomeroran
experiencedprogrammertowritescripts.(NoteNamingtheelementsandcategorizingthemcanbe
decideduponstudyingtheDocumentObjectModel,propertiesofelementsandsuch.)

2.6.1.RoutineforthefieldUserID
Step1.StartwithAliases.
Step2.CallthePageorWebsiteyouwishtouseforthetest.InthisinstanceitisGmail_Loginelement.So
addAliases.Gmail.
Step3.Callthetypeofelementyouwanttouseforthetest.InthisinstanceitistheFieldelement.Soadd
Aliases.Gmail.Field.
Step4.Calltheelementyouwanttouseforthetest.InthisinstanceitistheUserIDelement.Soadd
Aliases.Gmail.Field.UserID
Step5.Callthefunctionthestepissupposedtoperformwiththeelement.Atextboxfieldcaneitherenter
textortypeinKeys.Soadd=Aliases.Gmail.Field.UserID.Keys.
Step6.TextorValuestobeusedcouldbestaticordynamic.Ilikedynamic.Iliketodrivemydatafrom
theexternaldatasheet.Thiswayanymemberoftheteamcancomeupwiththedatatheywouldliketo
use,withoutevertouchingthetestscripts.Soadd=
Aliases.Gmail.Field.UserID.Keys(DDT.CurrentDriver.Value("UserID"))

Step7.IliketoperformafewmorestepsbeforeIinputtheindentedUserID.Iliketoremoveany
preexistingtextthatmightbeinthefield.ForthispurposeIcopypastetheabovecodetwiceandreplace
the(DDT.CurrentDriver.Value("UserID"))with(^a)fromthefirstlinetoselectallthe
existingtext.Replacethe(DDT.CurrentDriver.Value("UserID"))with([Del])from
thesecondlinetodeletealltheexistingtext.Socopyandpasteandmodifythelinesto
Aliases.Gmail.Field.UserID.Keys(^a)Aliases.Gmail.
Field.UserID.Keys([Del])
Step8.InsertamessageinthelogtoknowwhichUserIDwasused.SoaddLog.Message(User
ID=+Aliases.Gmail_Login.Field.UserId.Value)
Step9.Nametheroutinetomatchtheelement.TheendresultwouldlooklikeFigure4.

Figure4RoutineforfieldUserID

2.6.2.RoutineforthefieldPassword
Step1.CopypastetheUserIDroutineandreplacethevalueUserIDwithPassword.Theendresult
wouldlooklikeFigure5.

Figure5RoutineforfieldPassword

2.6.3.RoutineforthebuttonSignIn

Step1.CopyandpastetheUserIDroutine.Removethe2ndand3rdand4thlines.
Step2.ReplacethevalueFieldwithButton.
Step3.ReplacethevalueUserIDwithSignIn.
Step4.ReplacethevalueKeys(^a)withClick().
Step5.InsertamessagetothelogtosuggestbuttonSignInwasclickedon..Soadd
Log.Message("ClickedbuttonSignIn")
Step6.Renametheroutinetomatchtheelementnameandtype.TheendresultwouldlooklikeFigure6.

Figure6RoutineforbuttonSignIn

2.6.4.RoutineforthecheckboxStaysignedIn
Step1.CopyandpastetheSignInroutine.Removethe2ndline.
Step2.ReplacethevalueButtonwithCheckbox.
Step3.ReplacethevalueSignInwithStaySignedIn.
Step4.ReplacethevalueClick()withClick(false).
Step5.InsertamessagetothelogtosuggestthecheckboxStaySignedInwascheckedON.Soadd
Log.Message("UncheckcheckboxStaySignedIn")
Step6.Renametheroutinetomatchtheelementnameandtype.TheendresultwouldlooklikeFigure7.

Figure7RoutineforcheckboxStaySignedIn

2.6.5.Routineverifyingthelogin
TheendresultwouldmoreorlesslooklikeFigure8.

Figure8RoutinetoVerifyLogin

2.6.6.Routinecallingalltheloginsteps
TheendresultwouldmoreorlesslooklikeFigure9.

Figure9RoutinetocombineallelementsforloginFunction
2.6.7.MainroutineforvalidatingthefunctionLogin
Manysteps,ideas,routines,conditions,gointoit.TheendresultwouldmoreorlesslooklikeFigure10and
Figure11.


Figure11ScriptforLoginRoutine
2.7.Testrunresults(Logfiles)
TheendresultofatestrunlogwouldmoreorlesslooklikeFigure12andread
GmailLogInwithBrowserMozillaFirefox

URL=www.gmail.com(URLtextcomesfromdatasheet)
UserID=Srilu.Balla(URLtextcomesfromdatasheet)
Password=
(URLtextcomesfromdatasheet)
GmailInvokedviaMozillaFirefox

Figure12GmailloginTestResult
AlotofworkwentintotheLoginscript.(Phew)

3. UserInterfaceChange

NowimaginetheGmailloginUserInterfacechangesfromGmailtoHotmailoryahoo.Allthetime,effort
andideasputintocreatingtheoriginalscripthavetoberedoneinmostconventionalconditions.Butwith
GreenLanternframeworkthescriptissafeaslongasthereisarepositorythatmatchesit.
IfthealiasesDOMsforHotmailandYahooarepreparedsimilartothealiasesDOMforGmail,the
Scriptswillworkwithlittleornomodificationandlogsimilarmessagesandcheckforsimilarfunctionality.

3.1.GreenlanternStepsforYahooLogin

Step1.CreateRepositoryforHotmailLoginPage
Step2.Renametheelementsandcategorizetembytypeandrenamethelogicalnamestomatchthe
aliasesnamesfortheGmailloginpage.ResultwouldlooksimilartoFigure13.
Step3.CopypastetheLoginScriptforGmailOpenablankscriptandnameitYahoo_LoginandCopy
pastetheGmailLoginScript
Step4.ReplaceGmailwithYahoousingfindandreplace(Ctrl+H)
Step5.Verifythereplacedtextandrunthescript.ResultwouldlooksimilartoFigure14.


Figure13Yahoologinscreenrepository

3.2.Testrunresults(Logfiles)
TheendresultofatestrunlogwouldmoreorlesslooklikeFigure14andread
GmailLogInwithBrowserMozillaFirefox
URL=www.mail.yahoo.com(URLtextcomesfromdatasheet)
UserID=srilu_kiku(URLtextcomesfromdatasheet)
Password=
(URLtextcomesfromdatasheet)
YahooLoginsuccessfulorYahooLoginfailed.

Figure14YahoologinTestResult

4. Afewissueswithconventionalautomation

Mostautomationisrecordandplay.Thistechniquewillexecuteafewstepsonanapplication,butwont
logfulllengthmessages,warningsandwontdocomparisons.


Alotoftimegoesintoautomatingregressionsuits.Alotofeffortgoesintoautomation.Alotofideas
gointoautomation.AllofthiseffortgoeswastewithafewtweakstotheUserInterface.

Severaldevelopers(fromallovertheworld)aredevelopingscriptsforautomation.Unlesstherewasa
codingstandarddefined,eachdeveloperwouldpursuetheirownstyleofrepositorynamingandscript
writing.Theautomationsuitswillnotbeconsistent.

Automatedsuitswithvariouscodingstandardsarehardtomergeandmaintain.

Automatedscriptscreatedforoneapplicationcannotbeusedifchangesaremadetotheapplication.
Theywillneedtobeupdatedaswell.

Atesthadfailedduetorecognitionissues,bylookingatthelogicalnamesintherepositoryorthescript
aloneitisnotenoughtoidentifywhichelementneedsupdating.Becausesometimesseveralelements
couldbenamedsameandseveraltimesthenamesgivenonthepagearenotusedforthelogicalname.

5. Conclusion

Ifthisframeworkisunderstoodcorrectly,engineersusingitcancreateautomationscriptswaybeforethe
applicationisdeveloped.Mostroutinescanbeutilizedoverandoverafterchanginafewnamesinthe
routineswhichcanbeaccomplishedviafindandreplace(Ctrl+H).

Severalapplicationswithsimilarfunctionalitycouldusethesameroutinesandscriptsthatwerealready
created.Now,theengineerandthetesterscancomeupwithmorescenarios.

GreenLanternFrameworkiscompatiblewiththetoolTestComplete.AutomationtoolsQuickTest
Professional,RationalFunctionalTester,Seleniumetcalsocanhavereusablescripts.Theapproachto
thesetoolsvariesfromthecurrentapproachbuttheconceptissimilar.

ChangesintheDOMandtheUserInterfaceofanyapplicationisinevitable.Duringsuchsituations
automationscriptdeathisinevitable.Manyautomationtoolshaveafeaturetorenametheelementsbeing
usedfortests.Whentheseelementsarecleaverlyandclearlyrenamedtosuittheelements(alsomakingit
easytorememberduringscriptcreation),scriptdeathcanbeminimizedoraltogetheravoidedand
simultaneouslythereusabilityofthescriptcanbeincreased.

Iwouldlikemylearnedandknowledgeablecolleaguestotestandquestiontheseideas.Ineedtheir
invaluableadvice,guidanceandparticipationtoenhancethisframeworkandtoimplementonother
automationtools.

You might also like