Test Acceleration

  • 949 views
Uploaded on

Provide set of techniques to accelerate testing that I (and friends)have used in real projects

Provide set of techniques to accelerate testing that I (and friends)have used in real projects

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Kevin,

    Excellent presentation. You packed a great deal of useful information into those slides. Thanks for posting it.

    - Justin
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
949
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
8
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. TTTTTTTTeeeeeeeesssssssstttttttt AAAAAAAAcccccccccccccccceeeeeeeelllllllleeeeeeeerrrrrrrraaaaaaaattttttttiiiiiiiioooooooonnnnnnnn AApprriill 2222,, 22001100 OOttttaawwaa SSooffttwwaarree QQuuaalliittyy AAssssoocciiaattiioonn KKeevviinn BBuurrrr 661133--225533--44225577 osqa.org
  • 2. WWhhoo aamm II??  OOvveerr ttwweennttyy yyeeaarrss ooff ssooffttwwaarree ddeevveellooppmmeenntt eexxppeerriieennccee,, tteenn yyeeaarrss ooff mmaannaaggeemmeenntt eexxppeerriieennccee iinn NNoorrtteell  PPeerrffoorrmmaannccee EEnnggiinneeeerriinngg -- OOAAMM ((OOppeerraattiioonnss,, AAddmmiinniissttrraattiioonn aanndd MMaaiinntteennaannccee)) NNeettwwoorrkk EEnnggiinneeeerriinngg SSoolluuttiioonnss && SSeerrvviicceess,,  MMaannaaggeerr:: SSccaallaabbiilliittyy,, SSyysstteemm IInntteeggrraattiioonn,, TToooollss,, aanndd DDeessiiggnn SSuuppppoorrtt -- OOAAMM FFrraammeewwoorrkk  PPrroodduucctt//DDeessiiggnn MMaannaaggeerr:: AApppplliiccaattiioonn MMggmmtt -- OOAAMM AApppplliiccaattiioonn PPllaattffoorrmm  MMaannaaggeerr:: VVeerriiffiiccaattiioonn aanndd IInnffrraassttrruuccttuurree -- RRoouuttiinngg SSooffttwwaarree FFrraammeewwoorrkk  MMaannaaggeerr:: TTeesstt AAcccceelleerraattiioonn -- SSooffttwwaarree EEnnggiinneeeerriinngg AAnnaallyyssiiss LLaabb  TTeeaamm LLeeaaddeerr:: OOAAMM DDeevveellooppmmeenntt -- NNeettwwoorrkk SSeerrvviicceess FFrraammeewwoorrkk  SSyysstteemm VVeerriiffiiccaattiioonn -- DDeessiiggnn DDeevveellooppmmeenntt MMaannaaggeemmeenntt EEnnvviirroonnmmeenntt  PPrrooggrraammmmeerr//AAnnaallyysstt -- CCAADD//CCAAMM FFrraammeewwoorrkk  CCuurrrreennttllyy iinn tthhee TTeecchhnnoollooggyy IInnnnoovvaattiioonn MMaannaaggeemmeenntt PPrrooggrraamm aatt CCaarrlleettoonn UUnniivveerrssiittyy
  • 3. ……aanndd WWhhoo aarree YYoouu??  AAtttteennddeedd//vviieewweedd ttaallkk llaasstt yyeeaarr  IInnvvoollvveedd iinn IInntteeggrraattiioonn aanndd uupp--wwaarrddss??  MMaannuuaall TTeessttiinngg??  AAuuttoommaatteedd TTeessttiinngg??  PPrroocceessss IImmpprroovveemmeenntt??  DDeessiiggnn && DDeevveellooppmmeenntt??  MMaannaaggeemmeenntt,, hhiigghh--lleevveell ttyyppeess??  IImmpplleemmeennttaattiioonn,, llooww--lleevveell ttyyppeess??  ……ssoorrrryy.. TTaallkk ttoo mmee llaatteerr
  • 4. PPrroobblleemmss  TToooo mmaannyy tteessttccaasseess ttoo wwrriittee  TTaakkee ttoooo lloonngg ttoo rruunn aanndd vveerriiffyy  FFoorr nneeww bbuuiillddss,, wwhhiicchh vveerriiffiiccaattiioonn tteessttss nneeeedd ttoo bbee rreerruunn  NNoo oobbjjeeccttiivvee mmeeaassuurree ooff hhooww wweellll tthhee pprroodduucctt wwaass tteesstteedd..  CCaannnnoott ddeeppeenndd oonn hheellpp ffrroomm ddeevveellooppeerrss  TToo mmuucchh ttoo mmaaiinnttaaiinn
  • 5. PPuurrppoossee PPrroovviiddee sseett ooff tteecchhnniiqquueess ttoo aacccceelleerraattee tteessttiinngg tthhaatt **II** ((aanndd ffrriieennddss)) hhaavvee uusseedd iinn rreeaall pprroojjeeccttss AAggeennddaa  GGeett mmoorree ttiimmee ttoo TTeesstt  TTeesstt FFaasstteerr  DDoo LLeessss TTeessttiinngg  PPuulllliinngg iitt ooffff
  • 6. How do you make tteessttiinngg ffaasstteerr?? Req’’s Arch.. HLD Desiign Codiing Uniit Test IIntegratiion System Test Accept..
  • 7. SSttaarrtt TTeessttiinngg SSoooonneerr Req’’s Arch.. HLD Desiign Codiing Uniit Test TTeesstt DDrriivveenn DDeevveellooppmmeenntt IIntegratiion System Test Acceptance
  • 8. TTeesstt DDrriivveenn DDeessiiggnn  GGeett TTeesstteerrss iinnvvoollvveedd iinn RReeqquuiirreemmeenntt ggaatthheerriinngg  PPrreeppaarree TTeessttiinngg IInnffrraassttrruuccttuurree//AArrcchhiitteeccttuurree aalloonngg wwiitthh DDeessiiggnn IInnffrraassttrruuccttuurree  GGeenneerraattee TTeessttccaasseess aass eeaarrllyy aass ppoossssiibbllee  AAcccceeppttaannccee tteessttccaasseess dduurriinngg RReeqquuiirreemmeenntt ccaappttuurree  ……  UUnniitt LLeevveell TTeessttccaasseess dduurriinngg ccooddiinngg ((ii..ee.. tteesstt ddrriivveenn ddeevveellooppmmeenntt))  SSttaarrtt tteessttiinngg aass eeaarrllyy aass ppoossssiibbllee  VVeerriiffyy RReeqquuiirreemmeennttss bbeeffoorree DDeessiiggnn ((IInnssppeeccttiioonnss,, PPrroottoottyyppiinngg aanndd SSiimmuullaattiioonn -- EExxeeccuuttaabbllee RReeqquuiirreemmeennttss))  VVeerriiffyy DDeessiiggnn bbeeffoorree CCooddiinngg ((aass aabboovvee……))
  • 9. WW -- MMooddeell Herzlich, P. “The Politics of Testing”. Proceedings of 1st EuroSTAR conference, London, Oct. 25-28, 1993.
  • 10. Example: Agile aanndd UUssaabbiilliittyy © Lynn Miller, ALIAS Wavefront. http://wiki.fluidproject.org/download/attachments/1704207/Autodesk_WUD2006_UCDandAgile_lmiller.pdf?version=1
  • 11. Testing still ttaakkeess ttoooo lloonngg Test Fiind bug Fiix bug Test Fiind bug Fiix bug Test ...
  • 12. MMaakkee TTeessttiinngg FFaasstteerr Test Fiiind more Bugs iiin Less Tiiime Fiind bug Fiix bug Test Fiiind///Fiiix Errors Fastter Fewer New Bugs Find bug Fix bug Test ...
  • 13. PPrroovveenn PPrraaccttiicceess ((sshhooppppiinngg lliisstt))  RReedduuccee TTeessttiinngg TTiimmee  LLeessss tteessttccaasseess ttoo wwrriittee,, aauuttoommaattee,, rruunn,, vveerriiffyy aanndd mmaaiinnttaaiinn ((TTeessttccaassee ggeenneerraattiioonn))  FFaasstteerr eexxeeccuuttiioonn//vvaalliiddaattiioonn ((TTeessttccaassee aauuttoommaattiioonn))  OOnnllyy rree--tteesstt tthhee ppaarrttss ooff tthhee ccooddee tthhaatt cchhaannggeedd ((CChhuurrnn))  KKnnooww wwhheenn ttoo ssttoopp ((SSooffttwwaarree RReelliiaabbiilliittyy EEnnggiinneeeerriinngg,, RRiisskk DDrriivveenn))  FFiinndd bbuuggss ffaasstteerr  BBeetttteerr rreeqquuiirreemmeenntt ccoovveerraaggee ((TTeessttccaassee ggeenneerraattiioonn))  MMaakkee ssuurree bbuuggss ddoonn’’tt sslliipp bbyy ((CCooddee CCoovveerraaggee)) -- HHooww mmuucchh tteessttiinngg iiss eennoouugghh??  OOnnllyy tteesstt tthhee ccooddee wwiitthh tthhee iimmppoorrttaanntt bbuuggss ((RRiisskk AAnnaallyyssiiss))  OOnnllyy tteesstt tthhee bbuuggss tthhee ccuussttoommeerr wwiillll ffiinndd ((OOppeerraattiioonnaall PPrrooffiillee))  DDeessiiggnn ffoorr TTeessttaabbiilliittyy  EErrrroorr SSiimmuullaattiioonn  CCoonnttiinnuuoouuss IInntteeggrraattiioonn // NNiigghhttllyy LLooaaddbbuuiillddss –– aauuttoommaatteedd SSaanniittyy  BBuuiilltt iinn SSeellff TTeesstt  FFiixx bbuuggss ffaasstteerr aanndd ccrreeaattee ffeewweerr nneeww bbuuggss  UUnnddeerrssttaanndd hhooww tthhee ccooddee wwoorrkkss ((RReevveerrssee EEnnggiinneeeerriinngg))  TTeesstt FFuunnccttiioonnaalliittyy aass ssoooonn aass iitt bbeeccoommeess aavvaaiillaabbllee  IImmpprroovvee MMaaiinnttaaiinnaabbiilliittyy  RRaappiidd RRoooott CCaauussee AAnnaallyyssiiss
  • 14. TToo BBee DDiissccuusssseedd  RReedduuccee TTeessttiinngg TTiimmee  LLeessss tteessttccaasseess ttoo wwrriittee,, aauuttoommaattee,, rruunn,, vveerriiffyy aanndd mmaaiinnttaaiinn ((TTeessttccaassee ggeenneerraattiioonn))  FFaasstteerr eexxeeccuuttiioonn//vvaalliiddaattiioonn ((TTeessttccaassee aauuttoommaattiioonn))  OOnnllyy rree--tteesstt tthhee ppaarrttss ooff tthhee ccooddee tthhaatt cchhaannggeedd ((CChhuurrnn))  KKnnooww wwhheenn ttoo ssttoopp ((SSooffttwwaarree RReelliiaabbiilliittyy EEnnggiinneeeerriinngg,, RRiisskk DDrriivveenn))  FFiinndd bbuuggss ffaasstteerr  BBeetttteerr rreeqquuiirreemmeenntt ccoovveerraaggee ((TTeessttccaassee ggeenneerraattiioonn))  MMaakkee ssuurree bbuuggss ddoonn’’tt sslliipp bbyy ((CCooddee CCoovveerraaggee)) -- HHooww mmuucchh tteessttiinngg iiss eennoouugghh??  OOnnllyy tteesstt tthhee ccooddee wwiitthh tthhee iimmppoorrttaanntt bbuuggss ((RRiisskk AAnnaallyyssiiss))  OOnnllyy tteesstt tthhee bbuuggss tthhee ccuussttoommeerr wwiillll ffiinndd ((OOppeerraattiioonnaall PPrrooffiillee))  DDeessiiggnn ffoorr TTeessttaabbiilliittyy  EErrrroorr SSiimmuullaattiioonn  CCoonnttiinnuuoouuss IInntteeggrraattiioonn // NNiigghhttllyy LLooaaddbbuuiillddss –– aauuttoommaatteedd SSaanniittyy  BBuuiilltt iinn SSeellff TTeesstt  FFiixx bbuuggss ffaasstteerr aanndd ccrreeaattee ffeewweerr nneeww bbuuggss  UUnnddeerrssttaanndd hhooww tthhee ccooddee wwoorrkkss ((RReevveerrssee EEnnggiinneeeerriinngg))  TTeesstt FFuunnccttiioonnaalliittyy aass ssoooonn aass iitt bbeeccoommeess aavvaaiillaabbllee ((IItteerraattee))  IImmpprroovvee MMaaiinnttaaiinnaabbiilliittyy  RRaappiidd RRoooott CCaauussee AAnnaallyyssiiss
  • 15. RReeaall LLiiffee EExxaammppllee:: UUnniitt LLeevveell TTeessttiinngg System under Test:  Unit testing of Controllers and Device Drivers on Real-time Embedded System  First iteration was manual  Everything after the second was automated  Effort is measured in test vectors: a single test input 3000 2500 2000 1500 1000 500 0 1 2 3 4 5 6 Iteration  Iteration 1 represents the number of manual test vectors that can be run in 2 weeks..  By iteration 6 productivity essentially increased 2.5 times !  Over 5,000 more test vectors were run than possible manually!  This is equivalent to 10 weeks extra testing for free.  The tester also able took a 2 week vacation and worked on other assignments, which would have been impossible originally Test Vectors New Regression
  • 16. Automated TTeesstt EExxeeccuuttiioonn Approach Pros Cons  Requires experienced programmer to maintain/create parser  Keyword “scripts” have to be maintained  Simple keywords capture actions  Requires testers to have least coding experience Keyword Driven  Requires better coding skills  Test scenarios may be complex in order to take advantage of common test driver  Uses parameters or data files to drive testcases  Fastest to create testcases  Less code, less maintenance Data Driven  Requires good programmers to support re-useable code.  Uses shared libraries for common functions  Faster to create, easier to maintain & more robust  Supports mix of coding skills Shared code  Needs more planning  Maintenance is a problem  Leads to code duplication  Slowest to create (unless copying)  More robust  Intermediate coding skills Structured Code  Breaks easily  Hopeless to maintain  Fast and easy to create  Requires little to no coding experience Record and Playback
  • 17. Data DDrriivveenn AAuuttoommaattiioonn  aakkaa TTaabbllee ddrriivveenn  EEaacchh tteesstt ccaassee iiss 11 lliinnee iinn ttaabbllee  TTeesstt ddrriivveerr aauuttoommaatteess aa uussee-- ccaassee  UUssee tteesstt aattttrriibbuutteess aanndd eexxppeecctteedd rreessuullttss ttoo ccrreeaattee aa ddaattaa ttaabbllee ffoorr tteesstt ddrriivveerr  BBeehhaavviioorr iiss ddaattaa mmooddeelleedd.. TTeesstt ddrriivveerr mmaayy ddrriivvee SSUUTT ddiirreeccttllyy oorr ccrreeaattee aa tteesstt ssccrriipptt ffoorr eeaacchh tteesstt ccaassee  TTeesstt ddrriivveerr mmaayy iinntteerraacctt wwiitthh mmuullttiippllee aauuttoommaattiioonn ttoooollss bbeehhiinndd tthhee sscceenneess..  TTeesstt ddrriivveerr ccaann bbee aass ccoommpplleexx oorr ssiimmppllee.. Create and Set timer T2 T2 active Cancel T2 T2 inactive T2 inactive Error is issued T2 active Reset T2 Error is issued TTeesstt AAttttrriibbuuttee PPoossssiibbllee vvaalluueess TTeesstt vvaalluueess 00,,11,,22,,33,,2200,,4400,,6611,, 110000,,990000 00,,11,,22,,……,, MMAAXX__VVAALLUUEE VVaalluuee GGrraannuullaarriittyy 11,,22,,33,,44 11,,22,,33,,44 oonnee sshhoott ttiimmeerr,, ppeerriiooddiicc ttiimmeerr oonnee sshhoott ttiimmeerr,, ppeerriiooddiicc ttiimmeerr TTyyppee CCrreeaattee bbrraanncchh aaccttiivvee,, iinnaaccttiivvee aaccttiivvee,, iinnaaccttiivvee CCaanncceell bbrraanncchh aaccttiivvee,, iinnaaccttiivvee aaccttiivvee,, iinnaaccttiivvee
  • 18. Keyword DDrriivveenn AAuuttoommaattiioonn WWiinnddooww AAccttiioonn OObbjjeecctt VVaalluuee MMaaiinn CClliicckk NNeexxttBBuuttttoonn MMaaiinn CClliicckk MMeennuuBBaarr FFiillee MMaaiinn CClliicckk MMeennuuBBaarr PPrriinntt…… PPrriinntt EEnntteerrVVaalluuee NNuummbbeerrCCooppiieess 22 PPrriinntt SSeelleecctt PPrriinntteerrNNaammee AAddoobbee PPDDFF PPrriinntt CClliicckk OOKKBBuuttttoonn  aakkaa TTaabbllee DDrriivveenn  SSiinnggllee tteesstt ddrriivveerr ffoorr wwhhoollee SSyysstteemm uunnddeerr TTeesstt  11 tteesstt ccaassee ppeerr ttaabbllee,, 11 aaccttiioonn ppeerr lliinnee  ee..gg.. WWiinnddooww,, AAccttiioonn,, OObbjjeecctt,, VVaalluuee  CCaann aallssoo vvaalliiddaattee ddaattaa  DDeeppeennddiinngg oonn yyoouurr tteesstt ppllaann ““ssttyyllee”” tthhiiss ccaann bbeeccoommee eexxeeccuuttaabbllee ddooccuummeennttaattiioonn  TTeesstt iinnssttrruuccttiioonnss aarree tthhee aauuttoommaattiioonn  IIff yyoouu eexxppaanndd ccoonncceepptt ttoo ssiimmpplliiffiieedd ssccrriippttiinngg llaanngguuaaggeess  ee..gg.. CClliicckk ((““MMaaiinn””,, ““NNeexxttBBuuttttoonn””))  TThhiiss iiss tthhee mmoosstt ppooppuullaarr ddaattaa ddrriivveenn tteessttiinngg aapppprrooaacchh bbyy ffaarr..  BBuutt nnoott aass ffaasstt ttoo ccrreeaattee aass pprreevviioouuss EE..gg.. SSAAFFSSDDEEVV,, SSTTAAFF,, && BBeehhaavviioouurr--BBaasseedd
  • 19. RReeaall LLiiffee EExxaammppllee:: AApppplliiccaattiioonn LLeevveell TTeessttiinngg  Translated SMTP email to x400 format  Very mature system  Work was done by 1st year co-op  Testing took 1 week  Uncovered 8 failures (bugs) 100.00 90.00 80.00 70.00 60.00 50.00 40.00 30.00 20.00 10.00 System under Test:  36 Fields  29 Trillion Exhaustive Testcases  72 “defaults” Testcases 75% branch coverage  47 Pair-wise Testcases 93% branch coverage E-mail Coverage Results Testsuite Coverage (%) 0.00 1 2 3 4 5 6 7 8 9 Block Branch
  • 20. RReeaall LLiiffee EExxaammppllee:: AApppplliiccaattiioonn LLeevveell TTeessttiinngg E-mail Coverage Results Testsuite Coverage (%) 100.00 90.00 80.00 70.00 60.00 50.00 40.00 30.00 20.00 10.00 0.00 1 2 3 4 5 6 7 8 9 Block Branch Benefits:  Fewer testcases: less time to test and verify results  High level of code coverage  Incorporates boundary testing  Both success and failure testcases generated  Ease of adapting testcase suite to changing requirements  We were given the wrong requirements initially and slowly discovered the correct ones
  • 21. Automated TTeesstt CCrreeaattiioonn  UUssee mmooddeell ooff ssyysstteemm ttoo aauuttoommaattiiccaallllyy ggeenneerraattee aauuttoommaatteedd tteesstt ccooddee  TTyyppeess:: SSttaattee ddiiaaggrraammss ((iinncclluuddiinngg UUMMLL,, SSDDLL,, eettcc..)),, SSeettss,, GGrraammmmaarrss,, CCoommbbiinnaattiioonnss Create and Set timer T2 T2 active Cancel T2 T2 inactive T2 inactive Error is issued T2 active Reset T2 Error is issued  TToooollss ttoo vvaalliiddaattee mmooddeell,, ffiinndd mmiinniimmuumm tteesstt ppaatthhss,, eettcc..  BBeesstt ooff aallll:: mmaannaaggee tthhee mmooddeell aanndd nnoott tthhee tteesstt ccooddee
  • 22. PPaaiirr--wwiissee tteesstt ggeenneerraattiioonn  PPrroodduucceess aa vveerryy ssmmaallll ((bbuutt ttwwiisstteedd)) sseett ooff tteesstt ccaasseess  EEaassiillyy ffeeeeddss ddiirreeccttllyy iinnttoo ddaattaa ddrriivveenn tteesstt ddrriivveerr  UUssee aa ttooooll tthhaatt uusseess rruulleess ((pprreeddiiccaatteess)) ttoo pprreevveenntt iimmppoossssiibbllee ccoommbbiinnaattiioonnss ooff iinnppuuttss  MMooddeelliinngg aarroouunndd tthheemm iiss ttoooo hhaarrdd
  • 23. TTeessttiinngg TTeessttiinngg ((FFeeeeddbbaacckk LLoooopp))  HHooww ddoo yyoouu kknnooww yyoouu hhaavvee tteesstteedd eevveerryytthhiinngg??  UUnnddooccuummeenntteedd rreeqquuiirreemmeennttss aanndd ffeeaattuurreess  UUnnddooccuummeenntteedd ddeeppeennddeenncciieess  UUssiinngg oouutt ooff ddaattee ddooccuummeennttaattiioonn  MMiissssiinngg ccooddee  HHooww ddoo yyoouu kknnooww yyoouu aarree nnoott wwaassttiinngg ttiimmee tteessttiinngg ssoommee ffuunnccttiioonnaalliittyy ttoooo mmuucchh??  MMeeaassuurree wwhhaatt ccooddee wwaass nnoott eexxeeccuutteedd ((ccooddee ccoovveerraaggee))  WWhhaatteevveerr ffuunnccttiioonnaalliittyy tthhaatt ccooddee wwaass wwrriitttteenn ttoo iimmpplleemmeenntt iiss mmiissssiinngg ffrroomm tthhee tteessttssuuiittee  DDooeess nnoott tteellll yyoouu aannyytthhiinngg aabboouutt tthhee ccooddee tthhaatt wwaass eexxeeccuutteedd
  • 24. Error vvss.. BBrraanncchh CCoovveerraaggee 0.450 0.500 0.550 0.600 0.650 0.700 0.750 0.800 0.850 Branch Coverage 1 0.9 0.8 Fault Coverage 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 WWiitthhoouutt mmeeaassuurriinngg ccoovveerraaggee,, tteessttss oofftteenn oonnllyy eexxeerrcciissee 7700%% ooff tthhee ccooddee,, hhoowweevveerr bbuuggss oofftteenn hhiiddee iinn tthhee hhaarrdd ttoo tteesstt ccooddee,, aass iinn tthhiiss eexxaammppllee.. Ref: “The Relationship Between Test Coverage and Reliability” by Yeshwant Malaiya, Naixin Li, Jim Bieman, Rick Karich, Bob Skibbe, Proc. 5th ISSRE, Nov. 1994
  • 25. CCoovveerraaggee RReessuullttss -- PPrroocceedduurree TTeesstt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Testcase 100.00 90.00 80.00 70.00 60.00 50.00 40.00 30.00 20.00 10.00 0.00 Branch Coverage Total Coverage 96.08 Redundantt code coverage miightt be wastted ttesttiing ttiime Branch Coverage (%) Duplicate Coverage
  • 26. Sanity SSuubbssyysstteemm CCoovveerraaggee CCooddee CCoovveerraaggee -- nnoott jjuusstt ffoorr UUnniitt TTeesstt V.56 V.87 Area Procedures Hits Percent Hit Procedures Hits Percent Hit 7 0 0 7 0 0 0 0 0 88 13 15 810 33 4 895 36 4 102 26 25 114 38 33 5545 893 16 7454 1117 15 1736 304 18 2302 325 14 570 24 4 606 65 11 407 2 0 424 32 8 13 0 0 321 67 21 46 0 0 46 0 0 TOTAL 9324 1282 14 12257 1693 14 Area Subsystems Hits Percent Hit Subsystems Hits Percent Hit 1 0 0 1 0 0 1 0 0 1 1 100 1 1 100 1 1 100 1 1 100 1 1 100 24 18 75 25 24 96 4 4 100 4 4 100 2 1 50 1 1 100 3 1 33 3 1 33 1 0 0 1 1 100 1 0 0 1 0 0 TOTAL 39 26 67 39 34 87
  • 27. TTeesstt LLeessss  RRaarreellyy aabbllee ttoo tteesstt eevveerryytthhiinngg  SSoommee ppaarrttss ooff tthhee ccooddee tteenndd ttoo hhaavvee mmoorree bbuuggss tthhaann ootthheerr ppllaacceess  NNeeww oorr cchhaannggeedd ccooddee  CCoommpplleexx ccooddee  FFuunnccttiioonnaalliittyy mmoosstt uusseedd bbyy ccuussttoommeerrss..  EEttcc..  UUssee rriisskk mmeettrriiccss ttoo ffooccuuss tteessttiinngg oonn tthhee ppaarrttss ooff tthhee ccooddee mmoosstt lliikkeellyy ttoo hhaavvee bbuuggss ccuussttoommeerrss wwiillll ffiinndd..
  • 28. Correlating Complexity wwiitthh PPrroobblleemmss 100 97.0% Predicted Model Cumulative Problem Count % 0 25 50 75 100 80 60 40 20 0  6644%% ooff pprroobblleemmss ffoouunndd iinn ttoopp 2255%% ccoommpplleexx ccooddee  33%% ooff pprroobblleemmss ffoouunndd iinn bboottttoomm 2255%% ccoommpplleexx ccooddee  FFooccuuss tteessttiinngg oonn hhiigghhllyy ccoommpplleexx ccooddee aanndd aavvooiidd ssppeennddiinngg ttiimmee oonn lleeaasstt ccoommpplleexx.. Module Count % 64.40 Actual
  • 29. OOppeerraattiioonnaall PPrrooffiilleess  UUsseerrss ddoo nnoott uussee aallll tthhee ccooddee  TTeesstt tthhee ccooddee tthhaatt iiss uusseedd tthhee mmoosstt  TTeesstt tthhee ccooddee tthhaatt ccaannnnoott ffaaiill  FFiixxiinngg bbuuggss tthhaatt ddoo nnoott nneeeedd ttoo bbee ffiixxeedd iinnccrreeaasseess tthhee cchhaanncceess ooff iimmppoorrttaanntt ccooddee bbrreeaakkiinngg  RRaattee tteessttccaasseess bbyy iimmppaacctt iiff tthheeyy ffaaiill,, aanndd ccuutt bbaacckk ttoo mmaannaaggeemmeenntt''ss ddeessiirreedd rriisskk lleevveell..  MMaannyy eexxaammpplleess ooff ccooddee bbrreeaakkiinngg uunnddeerr ssttrreessss  BBuutt oovveerr eennggiinneeeerriinngg mmeeaannss nnoott ccooddiinngg ootthheerr tthhiinnggss  MMeeaassuurree wwhhaatt uusseerrss aarree rreeaallllyy ddooiinngg
  • 30. OOnnee BBuubbbbllee aatt aa TTiimmee Model Code Code Coverage Auto TCs Redefine Model Run Tests Churn Complexity Requirements
  • 31. Baby steps aanndd CCoonnttiinnuuoouuss IImmpprroovveemmeenntt  SSeelleecctt aa ggooaall aanndd ppllaann hhooww ttoo ggeett tthheerree  DDeecciiddee hhooww ttoo mmeeaassuurree ssuucccceessss aanndd mmeeaassuurree wwhheerree yyoouu ccuurrrreennttllyy aarree  DDoonn’’tt ttrryy ttoo ddoo ttoooo mmuucchh  SSeellll ssoolluuttiioonnss bbaasseedd oonn nneeeeddss  WWoorrkk wwiitthh tthhee wwiilllliinngg aanndd nneeeeddyy ffiirrsstt  KKeeeepp ffooccuusseedd oonn ggooaallss aanndd pprroobblleemmss  AAlliiggnn tthhee bbeehhaavviioouurr ooff MMaannaaggeerrss aanndd PPrraaccttiioonneerrss  MMeeaassuurree aanndd eevvaalluuaattee pprrooggrreessss
  • 32. CCoonncclluussiioonn  GGeett mmoorree ttiimmee ttoo TTeesstt  TTeesstt FFaasstteerr  DDoo LLeessss TTeessttiinngg  PPuulllliinngg iitt ooffff
  • 33. TThhaannkk--yyoouu!!  QQuueessttiioonnss?? osqa.org
  • 34. osqa.org
  • 35. More RReeaall LLiiffee EExxaammpplleess::  SSOOAA SSyysstteemm PPeerrffoorrmmaannccee TTeessttiinngg  110000 tteessttccaasseess,, 11 hhoouurr ppeerr tteessttccaassee,, oonn 22 tteessttbbeeddss,, iinn 11 wweeeekk bbyy 11 tteesstteerr  UUpp ttoo 110000 ssiimmuullaatteedd uusseerrss wwiitthh mmuullttiippllee rroolleess,, mmuullttiippllee eevveenntt ppaatttteerrnnss,, eettcc..  TTeesstteerr wwaass aallssoo wwrriittiinngg aa tteesstt ttooooll aatt tthhee ssaammee ttiimmee..  WWeebb AApppplliiccaattiioonn SSyysstteemm TTeessttiinngg  7700 tteessttccaasseess ccrreeaatteedd aanndd eexxeeccuutteedd iinn 11 wweeeekk..  RReedduucceedd 770000 tteesstt ccaasseess ttoo 113300 IInntteeggrraattiioonn TTeessttccaasseess  AAuuttoommaatteedd IInnssttaallllaattiioonn tteessttiinngg ttoo tteesstt eevveerryy ppoossssiibbllee ccoonnffiigguurraattiioonn ffoorr rroouuttiinngg ffrraammeewwoorrkk..  EEttcc..
  • 36. PPaaiirr--wwiissee TTeesstt CCaasseess:: 1133 FFiieellddss,, 33 IInnppuuttss,, 1155 TTeesstt ccaasseess TEST Field1 Field2 Field3 Field4 Field5 Field6 Field7 Field8 Field9 Field10 Field11 Field12 Field13 Case1 1 1 1 1 1 1 1 1 1 1 1 1 1 Case2 1 2 2 2 2 2 2 2 2 2 1 1 1 Case3 1 3 3 3 3 3 3 3 3 3 1 1 1 Case4 2 1 1 2 2 2 3 3 3 1 2 2 1 Case5 2 2 2 3 3 3 1 1 1 2 2 2 1 Case6 2 3 3 1 1 1 2 2 2 3 2 2 1 Case7 3 1 1 3 3 3 2 2 2 1 3 3 1 Case8 3 2 2 1 1 1 3 3 3 2 3 3 1 Case9 3 3 3 2 2 2 1 1 1 3 3 3 1 Case10 1 2 3 1 2 3 1 2 3 1 2 3 2 Case11 2 3 1 2 3 1 2 3 1 2 3 1 2 Case12 3 1 2 3 1 2 3 1 2 3 1 2 2 Case13 1 3 2 1 3 2 1 3 2 1 3 2 3 Case14 2 1 3 2 1 3 2 1 3 2 1 3 3 Case15 3 2 1 3 2 1 3 2 1 3 2 1 3 Maximum possible combinations = 1,594,323
  • 37. Automated TTeesstt VVaalliiddaattiioonn ((aakkaa OOrraaccllee))  HHaarrdd ccooddeedd  EExxpplliicciitt ““AAsssseerrttss”” oorr ccooddeedd iinntteerraaccttiioonn wwiitthh SSUUTT ((ee..gg.. tthhrroouugghh AAPPII))  CCrreeaatteedd bbyy mmooddeell!!  SUT does not follow test case’s logic  Generate verification code as well as execution code  CCaappttuurree RReeppllaayy  CCoommppaarree tteesstt rreessuullttss ttoo rreessuullttss ffrroomm aa pprreevviioouuss vveerrssiioonn  Previous version becomes the “Oracle”  Previous version could also be a model (e.g. prototype)  FFiilltteerr oouutt oorr cclleeaann uupp tthhee cchhaannggeeaabbllee bbiittss  BBiittmmaappss bbaadd,, tteexxtt aanndd nnuummbbeerrss ggoooodd
  • 38. DDeeffiinniittiioonnss Error { int y=0; if (a==b) {y=c}; z=z/y; } Fault Failure Debugablliity Testabiilliity
  • 39. Design ffoorr TTeessttaabbiilliittyy FFoorr aa ffaaiilluurree ttoo ttaakkee ppllaaccee rreeqquuiirreess:: EExxeeccuuttiioonn:: AAnn iinnppuutt mmuusstt ccaauussee aa ffaauulltt ttoo bbee eexxeeccuutteedd IInnffeeccttiioonn:: AAss aa ccoonnsseeqquueennccee ooff EExxeeccuuttiioonn,, tthhee iinntteerrnnaall ddaattaa ssttaattee mmuusstt bbeeccoommee iinnccoorrrreecctt PPrrooppaaggaattiioonn:: AAss aa ccoonnsseeqquueennccee ooff IInnffeeccttiioonn,, tthhee ddaattaa ssttaattee eerrrroorr mmuusstt bbeeccoommee ddeetteeccttaabbllee iinn aann oouuttppuutt.. DDFFTT mmaakkeess iitt eeaassiieerr ffoorr tthheessee ccoonnddiittiioonnss ttoo bbee mmeett..
  • 40. Design ffoorr TTeessttaabbiilliittyy  MMaakkee tthhee bbuuggss eeaassiieerr ttoo eexxeerrcciissee  BBuuiilltt iinn UUnniitt TTeesstt  EErrrroorr//OOuuttppuutt SSiimmuullaattiioonn  RRuulleess ooff TThhuummbb  MMaakkee bbuuggss eeaassiieerr ttoo sseeee  AAsssseerrttiioonnss  TTrraaccee  NNeeeeddss ttoo bbee ““DDeessiiggnneedd”” iinn,, bbuutt mmaakkeess iitt eeaassiieerr ffoorr ddeevveellooppeerrss ttoo ffiinndd,, ffiixx,, aanndd cchhaannggee ccooddee aass wweellll..
  • 41. SSooffttwwaarree RReeccoonnnnaaiissssaannccee With onlliine hellp calllled Wiithout onlliine hellp calllled
  • 42. Where to look for ffuunnccttiioonnaalliittyy ffiirrsstt
  • 43. RReeffeerreenncceess  BBuurrrr,, KKeevviinn && YYoouunngg,, WWiilllliiaamm,, 11999988,, CCoommbbiinnaattoorriiaall tteesstt tteecchhnniiqquueess:: TTaabbllee--bbaasseedd aauuttoommaattiioonn,, tteesstt ggeenneerraattiioonn aanndd ccooddee ccoovveerraaggee ,, PPrroocceeeeddiinnggss ooff tthhee IInnttll.. CCoonnff.. oonn SSooffttwwaarree TTeessttiinngg AAnnaallyyssiiss aanndd RReevviieeww,, SSaann DDiieeggoo,, CCAA.. OOccttoobbeerr 11999988,, hhttttpp::////aaeettggwweebb..aarrggrreeeennhhoouussee..ccoomm//aaeettgg__nnoorrtteell..ppddff  BBuurrrr,, KKeevviinn.. 11999988,, TTeesstt AAcccceelleerraattiioonn,, IIEEEEEE OOttttaawwaa,, JJuunnee 11999988  CChhrriissttiiee,, JJaammeess.. 22000088,, TThhee SSeedduuccttiivvee aanndd DDaannggeerroouuss VV--MMooddeell pp7733 TTeessttiinngg EExxppeerriieennccee AApprriill 22000088,, wwwwww..tteessttiinnggeexxppeerriieennccee..ccoomm  hhttttpp::////wwwwww..ppaaiirrwwiissee..oorrgg//  Malaiya, Y., Li, N., Bieman, J., Karich, R., & Skibbe, B., 1994, The Relationship Between Test Coverage and Reliability, Proc. 5th ISSRE, Nov. 1994