Upload
ca-technologies
View
51
Download
2
Embed Size (px)
Citation preview
World®’16
CAAgileRequirementsDesignerandCoverage101– HandsonLabBenJohnsonWard– SeniorConsultantPre-Sales– CATechnologiesPrashantPandey– SeniorPrincipalConsultant,Pre-Sales– CATechnologiesHuwPrice– VP,ApplicationDelivery&ProductOwner,CAARD– CATechnologiesJamesWalker– PrincipalSoftwareEngineer– CATechnologiesDO5X26L
DEVOPS
2 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
ForInformationalPurposesOnlyTermsofthisPresentation
©2016CA.Allrightsreserved.Alltrademarksreferencedhereinbelongtotheirrespectivecompanies.
Thecontentprovidedinthis CAWorld2016presentationisintendedforinformationalpurposesonlyanddoesnotformanytypeofwarranty. The informationprovidedbyaCApartnerand/orCAcustomerhasnotbeenreviewedforaccuracybyCA.
3 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
AbstractThislabprovidesanin-depthoverviewofCAAgileRequirementsDesignerandthefundamentalconceptsthatunderpinitsapproachtosoftwaredesignandtesting.CAAgileRequirementsDesignerisaflowchart-modellingtoolusedbyBusinessAnalysts,Programmers,TestersandAutomationSpecialiststodefineandautomaticallytestcomplexsystems.Thesessionwillcoverthefundamentalsofflowchartmodelling,andhowaseeminglysimplemodelcanbebuiltuptoaccuratelyreflecteventhemostcomplexsystems.Wewillshow:
§ Howbusinessrules,constraintsanddatacanbeoverlaidontoanapparentlysimpleflowchart,alongwithmorecomplexlogicsuchasloopingandcross-systemdependencies
§ HowfullyexecutabletestsanduserstoriescanbederivedusingCAAgileRequirementsDesigner
§ Howmultiplecoveragetechniquescanbeusedtocreatethesmallestsetoftestsneededtocoveralloftherequirements.
§ Howtestdataandvirtualassetscanbegeneratedatthesametimeasthetestcases
§ Howthebulkofthetestingeffortcanbecondensedintotheeffortofcreatingasingleflowchart.
§ Howtomanagechangingrequirementsanduserneeds,updatingthetestanddevelopmentassetsautomatically
BenJohnsonWardCATechnologiesSeniorConsultant,Presales
4 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Agenda
CREATINGMODELS
BUILDINGMODELS
Q&A
KEYTERMINOLOGY
HOWTOEXAMPLES
SUMMARY
1
2
3
4
5
6
5 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
BeforeWeConsiderCoverage,andCreateTestCases,WeNeedaModeltoCover§ CAAgileRequirementsDesignerisaboutcreatingamodel
fromwhichwecanderivetestcasestomeetvariouscoveragecriteria,butbeforewecanstartexaminingdifferenttypesofcoverage,weneedtoconstructsomemodels
§ We’llwalkthroughallofthebasics,andworkonourmodellingskillsatthesametime
§ Anddon’tworry,we’reessentiallybuildingflowchartstomodellogic,andthenlettingthetooldotherest.
6 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
ProcessBlocks
§ Processblocksrepresent‘doingsomething’i.e.notadecision,butsomethinghappening– forexample‘MakeTea’or‘RejectLoan’– theydon’thavetoberesultsthough,anotherexampleprocesscouldbe‘LookupCandidate’
§ Processblocksmayonlyhaveoneoutput,astheyarenotmakingadecision
§ Processblockscanhaveunlimitedinputsfromotherblocks(twodepictedhere)
§ TestData,Automation,andmanyotherusefulpiecesofsupportingdatacanbeattachedtoaprocessblock,aswe’llseelater.
7 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
DecisionBlocks
§ Decisionblocksrepresentachoiceordecisionmadeintheflowchart,forexample‘Havewater?’or‘Amountofloan?’
§ Baseduponthesedecisions,decisionoutputmayendupindifferentpartsofthediagram,buttheydoesn’thaveto
§ Adecisioncanhaveasmanyoutputsasrequired,andcanhaveasmanyinputsasrequired
§ Alldecisionblockoptionsinthetoolbarcanbeeditedafterthefacttoresembletheothers,theyarejustdefaults
§ TestData,Automation,andmanyotherusefulpiecesofsupportingdatacanbeattachedtoadecisionblock,unlikeprocessblocksmuchofthisisdoneperoutputaswe’llseelater.
8 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
AddingBlocks
§ Tocreatenewblocks,simplydragthemontothecanvas(righthandside)fromthetoolbox
§ Youcanalsoaddnewblocksbyclickingonasymbolontheleft,andclickingsomewhereonthediagramforittoappear
§ Formostsetups,thethreeblocksyouwillbeusingthemostarelistedhereontheright:(Start/End,Process,True/False)
§ Anydecisionblockcanbeeditedtohaveasmanyoutputsasnecessary(thinkYellow,Red,BlueratherthanTrue/False)sodon’tworryaboutthatfornow
9 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
EditingBlocks
§ Toeditanexistingblock,double-clickit(orright-click->Edit)
§ Thenumberoftabscanbeintimidating.Mostofthemareforadvanceuseandyou’llneverhavetoknowwhattheydo
§ Differentblocktypeshavedifferentsetsoftabs(process,decision,subflow,etc.)
10 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex0.IWantaCupofTea
§ AmbiguousinitialrequirementscauseahugeamountofproblemsthroughouttheDevelopmentlifecycle.CAAgileRequirementsDesignergivesusertheabilitytomakeinitialrequirementsclearandun-ambiguous.– Iwantacupoftea.– Isometimeslikemilk.– Isometimeslikesugar.
Aneasyonetostart
11 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex1.GototheShop?
§ Aneasyonetostart,openMakeTeafromtheexamplesfolder
§ RefamiliariseyourselfwithmanipulatingtheUI,doubleclickonblockstoopenthemup,dragtomoveblocksandarrows,dragnewitemsfromthepallettocreatenewblocks
§ Whenready,makethefollowingchange:“WhenIwantmilk,butdonothaveit,Imaygototheshop,theshopmayormaynothavemilk- forwhateverreason,ifIdon’tcomebackwithmilk,Iwillstillnotmaketea,ifIdogetmilkIwillmaketea.”
tothediagram,adjustingthediagramtotakeyourchangesintoaccount
13 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
GeneratingandStoringPaths
§ We’vegotourmodel,ifyoudon’t,youcanopenitfromtheexamplesfolder
§ Nowweneedtoconsiderpotentialtestcasesthroughthediagram,andwhattheyeachcover
§ We’llwalkthroughthegenerationprocess,aswellasthecoveragemetrics,andI’llexplaintheoptimiserbeforeweuseit
§ FollowMe!
14 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Change&ReactingtoChange
§ Sowe’vebuildourmodel… We’rehappywithourtestcases…
§ Butthingsdon’tstaythesameforever
§ Howtoweworkouttheimpactofourchanges?
§ Letsmakeachangeandsee
§ Whatmightbesomeproblemswithcreatinganewoptimalsetoftestcases?Shouldwebesoquicktodismissthosewehave?
15 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex2.SuperCoffeeandSuperHealth
We’regoingtocreateanewflow,baseduponafreedrinksschemeforcustomersofSuperCoffee ifthey’vedoneenoughrunningatSuperHealthHere’showtheschemeworks:1. IfIhaverunover10milesintheweek,Iearnafreedrink.2. IfIhaverun>0milesintheweek,andIamaGoldmemberofSuperCoffee,Iearnafreedrink.3. IfIhaverun5-10milesintheweek,andIamaHealthPlus memberofSuperHealth
Iearnafreedrink,unlessitisaweekend.Ofcoursebyrunning5-10milesIalsoqualifyforNo.2potentially.
4. Ihaverun0miles,Igetnothing.5. Youcanonlyqualifyforonefreedrink,ifyouearnoneforanyreason,youcannever
invalidateit.
Howmanypossiblepathsdoyouget?
16 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex1.SuperCoffeeandSuperHealth– TickTock…20minutes…
20 15 10
10 5 0
17 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex2.SuperCoffeeandSuperHealth
Getanythinglikethis?
Ifnot,whynot?Comparewithyourneighbours!
18 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
HowDoWeScaleThis?
§ Toomuchlogicononepagecanbehardtounderstandormanage
§ WeneeddifferentSMEstobeabletomaintaindifferentpartsofthesystemseparately
§ SowedothiswithSubflows,essentially,flowswithinflows
§ Letstakealookatsomefirst,thenwe’llconstructsome!
19 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Subflows
Whatarethey?§ Subflowsareusedtocomponentiselargeflows,andtoreusethose
componentsacrossasystem§ Anyflowcanbecalledasasubflow reference,eitherfromthe
repositoryorfromfile§ Thesameflowmaybereferencedinmorethanoneparent§ Youmaynothavecircularreferences§ Subflowsmaythemselvesincludefurthersubflows§ Asubflow isnodifferentthananormalflowotherthanthefactitis
usedelsewhere,itcancontinuetobeusedstandalone
20 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Subflows
Whatarethey?§ Youcancreateamapofalloftheflowsinasystem§ Aflowmusthavesomestoredpathsinordertobeused
properlyasasubflow§ Theoptimiserwillshowyouinapathwhereyouwent
withinanyparticularsubflow asapartofthelargerflowitisconsidering
§ Thereisnohardlimittothedepthyoucangoto§ Let’shavealook….
21 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex12.Subflows
§ Openup‘songstreaming’again§ CreatetwonewflowsSF1,SF2innewtabs§ CopytheentireflowofsongstreamingintoSF1§ CutalltheblockstodowithdecidingifthereisafastenoughconnectionintoSF2§ InsideSF2createtwoendblocks‘Attemptmade’,‘noconnection’Linkuptheflow
appropriately.(makesuretohitvalidate)§ Storeallpossiblepathsandsavethisflowtothedesktop.§ InsideSF1,bringasubflow decisionblockontothecanvas,referencefromfile,
findandpickSF2,linkuptheflowsappropriately,thenstoreallpossiblepaths….noticesomethingweird?
§ (SaveSF1now)
22 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex12.Subflows
There’slesspathsthanwehadforallpossiblebefore!Howisthatpossible?§ Gobackintopathexplorer->cog(path
constructionsettings)you’llnoticethedecisiontableintegrationtypeissetto‘default’,ifyouadjustthisto‘allrowcombinations’andhitapply,youwillbebacktothesamenumberofpathswehadbeforewecomponentisedthisflow
§ Ifyouhithelpinthisdialogue,youwillgetadetailedexplanationastowhateachoftheseoptionsmeans
23 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
ImpactII
§ We’veseenhowthetoolreactswithinaparticularflow,butwhataboutacrossflows?
§ Thetoolwillgiveyoudiagram/analysisofimpactacrossthesystem
§ Ifyoumakeachangetoasubflow,it’sparentscanchoosetoinheritsaidchangeorignoreit
§ TheDiagramforlargesystemscanprovequiteuseful….ShouldIchangethat… Oh… Maybenot!
24 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex13.IWonderWhatWillHappenWhen…?
§ RightclickanyblockoredgewithinSF2,hit‘showimpact.’§ Youwillgetalistofwherethatblock/edgeisusedinallofyouropen
masterflows(inthiscaseSF1)– thisisinterestinginit’sownright,butforamorevisualrepresentationhit‘ExportalltoDiagrammer.’
§ Hereyouwillgetavisualrepresentationofhowyoursubflows hangtogether,whichinourexampleisofcoursenotespeciallycomplicated–butonceyouhavemanysubflows beingreferencedinmanyplaces(thinkoneflowforvalidatingpasswordsinmanyplaces)thiswillstarttobecomeinvaluable.
§ Ifyouhoveroveranyparticularpathshowninaflow,itwillshowyouA)whichpathsitcontainsindescendantflows,andwhichpathsitisapartofinancestorflows,i.e.whathappensifIbreakthis,acrossasystem.
25 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex14.IChangedOne!
§ WithSF1andSF2bothopenintabs,gointoSF2,andmakesomechangetothediagramaswehavebeendoingallyesterday.
§ Reactyourstoredpaths,thenhitsave.§ TabbackintoSF1,youwillnoticea
notificationcomeupinthebottomrighthandcornerofthescreen,thisistoletyouknowthatoneoftheflowsyouarereferencinghasanewerversionavailableifyouwantit(youcanalwayskeeptheoldone,itisstoredlocallywithinSF1too).
§ Clicktodismissit,thendoubleclicktoopenthenotificationstab– Hereyouhavetheoptionto‘reloaddirectsubflows’thiswillrefreshalloutofdatechildren– dothisnow.
§ NowreactyourpathstoSF1,allwhichgothroughthesubflow willreportthatthey’vebeenaffected.
26 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex6.Let’sMakeaChange
§ Openuptheflow‘SongStreaming’§ Cleardownthetestcasesinthestoredpathtype‘testcases’§ Storetheoptimal‘allpairs’pathsforthisflow§ Makesurethe“Trytofindpathsinpreviousversion”isUnchecked§ Now,implementthechange“WhenIamnotconnectedto3g,orthe3gisnotfast
enough,Ishouldcheck(beforefailingasbefore)ifIamconnectedto2g,IfIam,Ishouldwaitforthebuffer–else,errorasbefore”
§ Gobacktoviewyourstoredpaths,examinewhatthepathimpactanalysersays,deletetheeffectedpaths
§ Nowgoandlookatthecoverage,you’llnoticeit’sdropped!§ GeneratebothA)thenewoptimalsetofpathsandB)justtheadditionalpaths
requiredtofinishthecoverage
27 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex7.Let’sSetUpaLoan
§ Soletsmakesomething(mildly)morerealistic§ Setupaflowwherewearegoingtobegeneratingmanydifferenttypesofloan.§ Weneedadecisiontodecidetheproductcode:CT50,CT33,CT48,CT49,wemust
alsodecidetheamount (fornow,wewillhavetheoptions<1,000,1,000-10,000,10,000-100,000,>100,000)
§ Wewillalsoneedadecisiontosettheterm oftheloan,(1yr,3yr,5yr)§ Wewillneedadecisiontosettheinterestrate(<1%,1-5%,>5%)§ Allofthedecisionsuptonowjustflowintothenext,butfromhere,weneeda
truefalsedecision‘backdate’, ifitistrue,wemusthaveadecisiontochooseabackdateTime (1days,2-359days,360days)elsedonot
§ Nowbothpathsgointoa‘calculateresult’block
28 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Constraints
§ Constraintsallowyoutolayer‘rules’ontopofthediagraminordertoachievespecificfunctionalitywithoutanunreasonablylargeflow
§ Imagineadecisionnearthetopofalargediagram,whichcanbetrueorfalse,butmuchlaterinthediagramwemakethesamedecision–iftheyhavetolineuphowwouldwedothiswithoutconstraints?Wouldwedoublethesizeofthediagram?
§ Cananyonethinkofwhythesemaybenecessary§ Letshavealookatthemforreal…§ Ingeneral,youshouldonlyuseconstraintswhenthesamelogic
cannot(easily)beachievedbyflowlogicalone,andthereisusuallyawaytodothat.
29 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex11.BuildaUsefulConstraint
§ Openour‘loan’flow,createaconstraintsuchthatwhenevertheproductisCT50,thebackdatemustbe360
§ Ifyougeneratepathsnow,youwillnoticetherewillbeless
§ Youcanoptionallyhavethepathexplorerignoreconstraints
§ Feelfreetobuildupmorecomplicatedconstraintsinthe‘pathhints’dialogue
30 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
WhatAboutLoops?
§ Loopinglogicisbothessential
§ AndcreatesuniqueissuesforanyMBTapproach
§ LetslookathowCAAgileRequirementDesignerdealswithloops,thenconsidersomeforourselves
31 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
WhatAboutLoops?
§ Letscreatealoopwithin‘SongStreaming’Whenthestreamfails,we’llnowbegivenanoptiontoretry,whichwillloopbacktothetopofthenetworkselection
§ LetsturnupthelooplimitsandseehowmanypathswegetforAllpossible,aswellassomeoftheoptimisations?
§ Noticeanything?
32 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
WhatAboutTestData?
§ We’vebuiltandshownmodelscreatingandmaintainingoftenhundredsorthousandsoftestcases
§ Ifwehavetocreatethedatacriteriaforeachonemanuallyitcouldtakeusaverylongtimeandnegatemanyofthetoolsbenefits
§ Couldweinstead,derivethedatacriteria,fromourpaththroughtheflow?
§ Thiscouldallowustonotonlyderivethedatacriteriaforeachtestcase,butalsoallowthetooltoautomaticallymaintainsaidcriteriaasthemodelchanges
§ Letstakealookathowthisworks!
33 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
LetsWorkOutSomeData
§ Letsgoandaddvariablereferencestoaflow
§ Wewillexaminethegeneratedcriteria
§ Wewillsimulateachange
34 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Ex5.Let’sSetUpSomeData
§ Openup‘Maketea’,ateachdecisionpoint,addthenecessarydataassignmentsforeachoutput!
§ Now,generateandstoresomepaths.§ Gotothetestdatatableandexamineallofthedatathatresults.§ Nowthisisallboring,hardcoded(toanextent)data,butwe’ll
fixthatlater.§ Playaround,addmorevariablestosomeofthedecisionoutputs,
changetheirvalues,andhavealookattheeffectinthetable.§ Now,changethediagraminsomeway,andreactaswedidbefore,
nowconsideryournewdata– neat,right?
35 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Copies,Duplicates&Clones
§ InCAAgileRequirementsDesigner,thereare3waysofcopyingablock.Theyhavedifferentlevelsofinheritanceassociatedwiththem.
§ ACloneviarightclick-cloneblock)isadirectcopyofablockthatcontinuouslyupdatesbasedonwhatthemasterblocksstateis(theblockitwascopiedfrom).Youmaynoteditthisblockotherthantobreakthe‘link’toit’smaster.
§ ADuplicate(viarightclick-duplicateblock)isacopyofablockwhichoptionallyupdatesaftereverychangefromit’smastertoreflectit’smasterscurrentstate–youdonothavetoacceptchangesfromthemaster,andyoumayedittheblockonit’sown.
§ ACopy(viacopy-paste)copiesexactlyhowthatblockwaswhenyoudidthecopy,butretainsnolink,andwillnotupdatebasedonit’smaster,youmayeditthisblocklikeanyother.Ifyou’repastingtheblockitwillappend[n]toensurethenameisunique.
36 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Clones
§ ACloneviarightclick-cloneblock)isadirectcopyofablockthatcontinuouslyupdatesbasedonwhatthemasterblocksstateis(theblockitwascopiedfrom).
§ Youmaynoteditthisblockotherthantobreakthe‘link’toit’smaster
§ Youmaybreakthelinkbyeditingtheitemandhittingthe‘Unclone block’button
§ Cloneswillautomaticallyupdateastheirmasterblockdoes
37 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Duplicates
§ ADuplicateisacopyofit’smaster,andwilloptionallyupdatewhenit’smasterisupdated.
§ Duplicatesarecreatedbyrightclick– ‘duplicateblock’
§ Youmayeditthisblockbetweenupdates,butanyupdateswillbeoverwrittenifyouchoosetoupdate
§ Youmaybreakthelinkbyeditingtheitemandhittingthe‘Reverseduplication’button
38 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Copies
§ Acopyfrom(copy-paste)takesallofthepropertiesofits master,butretainsnolinkafterwards
§ Anychangestothemasterwillnotbeinherited
§ Pastedblockswillbeautomaticallyrenamedtoretainnameuniqueness
§ Youcancopy-pasteeitherwithrightclick– copy,rightclick– pasteORbyusingthekeyboardshortcut‘cntrl-c,cntrl-v’weareallfamiliarwith
§ Youcancopy/pastemanyblocks/itemsatoncesimplybydragselectingthemthencopy/pasting
39 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Copies,Duplicates&Clones– WhentoUseEach
§ Whichtypeofcopyyouwanttousedependsentirelyonhowmuchinheritanceyouwant.
§ Ifyou’recertainyouwanttwoblockstoalwaysbethesame(samedecisionintwoplaces,forexample),youshoulduseclones.
§ Ifyouwanttwoblockstobelinked,butoccasionallywillwanttoimplementdifferences(samedecisionwithdifferentoptionsavailableforexample),youshoulduseduplicates.
§ Ifyoujustwantacopyoftheblock,withnolinking,orjustwanttomoveablockbetweenflows,thenyoushoulduseacopy.
40 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
Summary
§ Wehavelearnedhowtobuildmodelsandgeneratetestcasesfromthem§ Wehavelearnedhowtounderstandandtargetvarious
coveragemeasures§ Wehavelearnedhowtoanalyseanddealwithchange§ Wehavelearnedhowtodealwithcomplicatedlogicwithconstraints,
subflows andloops§ Wehavelearnedhowtocalculatethedatacriteriaforourtests§ Wehavelearnedhowthiscanalsobeusedtoproducematching
automationscripts
42 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
RecommendedSessions
SESSION# TITLE DATE/TIME
DO5T05TTechTalk:GoingFullCircle- LinkingCodetoTeststoRequirementsandBackAroundAgain
11/16/2016at12:45pm
DO5X27S What'sNewinCAAgileRequirementsDesigner? 11/17/2016at12:45pm
DO5X40S CaseStudy:WhyRabobankWasInspired 11/17/2016at3:45pm
43 ©2016CA.ALLRIGHTSRESERVED.@CAWORLD#CAWORLD
MustSeeDemos
UseModelBasedTesting
CAARDDevOpsTheatre5
DevOps5Theatre
AchieveMaxTestCoverage
CAARDDevOpsTheatre5
ImproveDataCompliance
CATestDataManagerDevOpsTheatre5
DeliverTestDataFaster
CATestDataManagerDevOpsTheatre5