SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   1	
  
11/13/14	
  
Are	
  Your	
  Con*nuous	
  Tests	
  	
  
Too	
  Fragile	
  for	
  Agile	
  
Arthur	
  Hicken	
  
Paraso&	
  Evangelist	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   2	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   2	
  
Agenda	
  
§  Challenges	
  of	
  Con1nuous	
  Agile	
  
§  Tes1ng	
  defined	
  
§  Tes1ng	
  is	
  hard	
  (no	
  one	
  wants	
  to	
  do	
  it)	
  
§  Best	
  prac1ces	
  
§  A	
  modest	
  proposal:	
  Spring	
  cleaning	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   3	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   3	
  
The	
  role	
  of	
  QA	
  in	
  Agile	
  
§  QA	
  is	
  part	
  of	
  development,	
  not	
  an	
  
a&erthought	
  
§  Review	
  developer	
  tes1ng	
  efforts	
  
§  Addi1onal	
  tes1ng	
  of	
  requirements	
  
§  Itera1ve	
  during	
  development	
  
§  Fast	
  discovery	
  and	
  repor1ng	
  of	
  defects	
  
§  Inves1gate	
  root	
  cause	
  of	
  defects	
  
§  Influence	
  development	
  policy	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   4	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   4	
  
Challenges	
  of	
  Agile	
  
§  Need	
  to	
  be	
  fast	
  
§  Need	
  to	
  be	
  flexible	
  
§  Tes1ng	
  can	
  be	
  overlooked	
  if	
  not	
  baked	
  in	
  
§  Architectural	
  compromises	
  from	
  schedule	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   5	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   5	
  
Challenges	
  of	
  Con1nuous	
  
§  Tests	
  must	
  produce	
  binary	
  decision	
  go/no-­‐go	
  
§  Reuse	
  unit	
  test	
  and	
  func1onal	
  tests	
  from	
  dev	
  
to	
  QA	
  
§  High	
  level	
  of	
  automa1on	
  
§  Requires	
  disciplined	
  mature	
  process	
  
§  Tes1ng	
  must	
  automa&cally	
  answer	
  
§  Is	
  it	
  stable	
  
§  Will	
  it	
  do	
  what	
  it’s	
  supposed	
  to	
  do	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   6	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   6	
  
Importance	
  of	
  Tes1ng	
  
§  How	
  do	
  you	
  know	
  when	
  you're	
  done?	
  	
  
§  How	
  do	
  you	
  know	
  if	
  a	
  fix	
  for	
  a	
  minor	
  bug	
  
broke	
  a	
  major	
  func1on	
  of	
  the	
  system?	
  	
  
§  How	
  can	
  the	
  system	
  evolve	
  into	
  something	
  
more	
  than	
  is	
  currently	
  envisioned?	
  	
  
§  Tes1ng,	
  both	
  unit	
  and	
  func1onal,	
  needs	
  to	
  be	
  
an	
  integrated	
  part	
  of	
  the	
  development	
  
process.	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   7	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   7	
  
Tes1ng	
  delivers	
  
A	
  maintained	
  suite	
  of	
  unit	
  tests:	
  
§  Represents	
  the	
  most	
  prac1cal	
  design	
  possible	
  
§  Provides	
  the	
  best	
  form	
  of	
  documenta1on	
  for	
  
classes	
  
§  Determines	
  when	
  a	
  class	
  is	
  "done"	
  
§  Gives	
  a	
  developer	
  confidence	
  in	
  the	
  code	
  
§  Is	
  a	
  basis	
  for	
  refactoring	
  quickly	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   8	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   8	
  
Why	
  Tes1ng	
  is	
  O&en	
  Ignored	
  
§  Perceived	
  as	
  “burdensome”	
  
§  Too	
  much	
  effort	
  
§  Too	
  much	
  1me	
  
§  We’re	
  on	
  a	
  schedule	
  –	
  no	
  1me	
  to	
  test.	
  
§  Why	
  is	
  there	
  always	
  1me	
  to	
  do	
  it	
  over,	
  but	
  never	
  to	
  do	
  it	
  right?	
  
§  Developer	
  Ego	
  
§  “I	
  don’t	
  need	
  to	
  test	
  my	
  code	
  –	
  I	
  don’t	
  make	
  mistakes.”	
  
§  Tes1ng	
  means	
  I	
  have	
  to	
  admit	
  that	
  I	
  might	
  have	
  made	
  a	
  mistake.	
  
§  I	
  don’t	
  like	
  to	
  test	
  –	
  it’s	
  beneath	
  me.	
  
§  Tes1ng	
  isn’t	
  fun	
  –	
  I	
  just	
  want	
  to	
  code!	
  
§  That’s	
  for	
  the	
  QA	
  dept.	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   9	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   9	
  
Defini1ons	
  
§  Unit	
  
§  Func1onal	
  
§  Regression	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   10	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   10	
  
Unit	
  Tes1ng	
  
Unit	
  tests	
  that	
  validates	
  your	
  method	
  behaves	
  a	
  
certain	
  way	
  given	
  a	
  specific	
  parameters	
  
§  Regressions	
  tes1ng	
  
§  Validate	
  behavior	
  of	
  exis1ng	
  code	
  hasn’t	
  changed	
  
§  Scheduled	
  and	
  run	
  automa1cally	
  
§  Test	
  Driven	
  Development	
  
§  Validate	
  behavior	
  of	
  new	
  code	
  to	
  be	
  wrijen	
  
§  Created	
  before	
  developing,	
  turned	
  into	
  regression	
  tests	
  
a&er	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   11	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   11	
  
Func1onal	
  Tes1ng	
  
§  Incarna1ons	
  of	
  func1onal	
  tests	
  
§  Unit	
  tests	
  (Junit,	
  CppUnit,	
  Nunit,	
  etc)	
  
§  Integra1on	
  tests	
  
§  Scripted	
  tests	
  
§  Manual	
  tests	
  
§  Ways	
  to	
  create	
  func1onal	
  tests	
  
§  Manually	
  wrijen	
  
§  Machine	
  generated	
  from	
  applica1on	
  tracing	
  
§  Machine	
  generated	
  from	
  capturing	
  traffic	
  
§  Machine	
  generated	
  from	
  recording	
  clicks	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   12	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   12	
  
Regression	
  Tes1ng	
  
§  Contributors	
  to	
  the	
  regression	
  test	
  suite	
  
§  Func1onal	
  unit	
  tests	
  that	
  pass	
  
§  Machine	
  generated	
  unit	
  tests	
  for	
  current	
  behavior	
  
§  Unit	
  test	
  wrijen	
  by	
  developers	
  and	
  testers	
  
§  Tests	
  wrijen	
  to	
  validate	
  bug	
  fixes	
  
§  Regression	
  test	
  failures	
  
§  Unwanted	
  change	
  in	
  behavior	
  –	
  fix	
  the	
  code	
  
§  Inten1onal	
  change	
  in	
  specifica1on	
  –	
  update	
  test	
  
controls	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   13	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   13	
  
What’s	
  the	
  Difference?	
  
Unit	
  Tests	
  
•  The	
  code	
  is	
  doing	
  things	
  right	
  
•  Wrijen	
  from	
  programmers	
  perspec1ve	
  
•  Confirm	
  code	
  gives	
  proper	
  output	
  based	
  on	
  specific	
  input	
  
Func1onal	
  Tests	
  
•  The	
  code	
  is	
  doing	
  the	
  right	
  thing	
  
•  Wrijen	
  from	
  users	
  perspec1ve	
  
•  Confirm	
  the	
  system	
  does	
  what	
  the	
  user	
  expects	
  it	
  to	
  do	
  
Regression	
  Tests	
  
•  It	
  s1ll	
  works	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   14	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   14	
  
Why	
  do	
  Unit	
  Tes1ng	
  
So&ware	
  bugs	
  are	
  inserted	
  during	
  coding	
  phase,	
  but	
  o&en	
  aren’t	
  found	
  un1l	
  
func1onal	
  tes1ng,	
  or	
  worse	
  they	
  are	
  found	
  by	
  customers.	
  	
  The	
  longer	
  a	
  
bug	
  stays	
  in	
  the	
  system,	
  the	
  more	
  expensive	
  it	
  is	
  to	
  fix	
  it.	
  
	
  
Unit	
  tes1ng	
  is	
  a	
  strategy	
  that	
  allows	
  you	
  to	
  find	
  out	
  if	
  your	
  system	
  is	
  behaving	
  
the	
  way	
  you	
  expect	
  early	
  in	
  the	
  SDLC.	
  
	
  
Unit	
  tes1ng	
  allows	
  for	
  easy	
  regression	
  tes1ng,	
  so	
  you	
  can	
  find	
  out	
  quickly	
  
whether	
  you	
  have	
  introduced	
  some	
  unexpected	
  behavior	
  into	
  the	
  system.	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   15	
  
The	
  Cost	
  of	
  Defects	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   16	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   16	
  
Best	
  Prac1ces	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   17	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   17	
  
What’s	
  Important	
  
§  Unit	
  tests	
  require	
  a	
  LOT	
  of	
  care	
  
§  Unit	
  tes1ng	
  is	
  a	
  con1nuous	
  opera1on	
  
§  Test	
  suite	
  maintenance	
  is	
  a	
  commitment	
  
§  Control	
  data	
  (asser1ons)	
  in	
  the	
  code	
  	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   18	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   18	
  
Test	
  incorpora1on	
  
§  Take	
  exis1ng	
  unit	
  tests	
  and	
  schedule	
  them	
  
into	
  build	
  process	
  
§  Run	
  and	
  fix	
  tests	
  as	
  part	
  of	
  build	
  process	
  
§  Ideal	
  goal:	
  0	
  failures	
  and	
  100%	
  code	
  coverage	
  
§  Realis1c	
  goal:	
  10%	
  test	
  failures	
  and	
  80%	
  code	
  
coverage	
  
§  If	
  the	
  unit	
  test	
  suite	
  is	
  noisy,	
  don’t	
  qualify	
  the	
  
build	
  based	
  on	
  asser1on	
  failures	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   19	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   19	
  
Unit	
  Test	
  Crea1on	
  
§  Maintainability	
  
§  Proper	
  asser1ons	
  
§  Nightly	
  runs	
  
§  Tests	
  should	
  be:	
  
§  Automa1c	
  (no	
  human	
  input	
  or	
  review)	
  
§  Repeatable	
  (no	
  strange	
  dependencies)	
  
	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   20	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   20	
  
Legacy	
  Test	
  Suites	
  
§  Leverage	
  your	
  exis1ng	
  suite	
  
§  Clean	
  up	
  incrementally	
  
§  Set	
  policy	
  based	
  on	
  current	
  results	
  
§  Tighten	
  policy	
  when	
  in	
  compliance	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   21	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   21	
  
Maintaining	
  and	
  Crea1ng	
  UT	
  
§  Maintaining	
  is	
  more	
  of	
  a	
  problem	
  than	
  
crea1ng.	
  	
  
§  Don’t	
  create	
  a	
  test	
  if	
  you	
  can’t	
  or	
  don’t	
  plan	
  to	
  
maintain	
  it.	
  
§  Crea1ng	
  as	
  you	
  go	
  creates	
  a	
  bejer	
  test	
  suite	
  
§  Tests	
  not	
  run	
  regularly	
  become	
  irrelevant	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   22	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   22	
  
Write	
  tests	
  with	
  the	
  code	
  
§  Create	
  the	
  test	
  when	
  you’re	
  wri1ng	
  the	
  code	
  
§  Have	
  a	
  test	
  for	
  every	
  task	
  you	
  complete	
  
§  Increases	
  understanding	
  
§  Improve	
  asser1ons	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   23	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   23	
  
Connect	
  Unit	
  Tests	
  
§  Associate	
  tests	
  with	
  Code	
  and	
  Requirements	
  
§  Naming	
  Conven1ons	
  should	
  have	
  meaning	
  
§  Use	
  code	
  comment	
  tags	
  @task	
  @pr	
  @fr	
  
§  Use	
  check-­‐in	
  comments	
  @task	
  @pr	
  @fr	
  
§  Improve	
  change-­‐based	
  tes1ng	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   24	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   24	
  
Specific	
  Genera1on	
  
§  Don’t	
  be	
  lured	
  by	
  100%	
  coverage	
  
§  Auto	
  asser1ons	
  are	
  not	
  meaningful	
  unless	
  
validated	
  
§  Review	
  the	
  tests	
  as	
  you	
  work	
  on	
  the	
  code	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   25	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   25	
  
Code	
  Review	
  Test	
  
§  Code	
  for	
  unit	
  tests	
  should	
  be	
  reviewed	
  
§  Consider	
  doing	
  test-­‐design	
  review	
  
§  Ensures	
  you’re	
  tes1ng	
  what	
  you	
  think	
  you	
  are	
  
§  Helps	
  reduce	
  noise	
  
§  Helps	
  improve	
  understanding	
  
§  Review	
  the	
  code	
  and	
  the	
  test	
  code	
  together	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   26	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   26	
  
Tes1ng	
  Excep1on	
  Handling	
  
§  Frequently	
  Skipped	
  
§  Prevents	
  crashes	
  
§  Prevents	
  death	
  spiral	
  
§  Rule	
  of	
  thirds	
  
§  1/3	
  basic	
  func1onality	
  
§  1/3	
  advanced	
  features	
  /	
  infrequent	
  serngs	
  
§  1/3	
  error	
  handling	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   27	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   27	
  
All	
  About	
  Asser1ons	
  
§  Verifies	
  that	
  the	
  code	
  behaves	
  as	
  intended	
  
§  True/false	
  
§  Null	
  or	
  not	
  null	
  
§  Specific	
  values	
  
§  Complex	
  condi1ons	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   28	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   28	
  
Why	
  Assert?	
  
§  Excuses:	
  
§  My	
  code	
  already	
  has	
  console	
  output	
  
§  I	
  can	
  check	
  it	
  visually/manually	
  
§  Binary	
  output	
  (pass/fail)	
  
§  Part	
  of	
  overall	
  test	
  suite	
  
§  No	
  human	
  interven1on	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   29	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   29	
  
Asser1on	
  failures	
  
Introduced	
  coding	
  error	
  
• Fix	
  the	
  new	
  code	
  
Func1onality	
  changed	
  
• Update	
  the	
  asser1on 	
  	
  
Improper	
  asser1on	
  
• Comment	
  it	
  out	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   30	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   30	
  
Asser1on	
  Policy	
  
§  Assign	
  failures	
  as	
  tasks	
  
§  Author	
  of	
  the	
  test	
  or	
  of	
  the	
  changed	
  code	
  
§  Try	
  to	
  reach	
  developer	
  that	
  has	
  the	
  highest	
  
chance	
  to	
  understand	
  the	
  change	
  
§  Developer	
  assesses	
  failure:	
  
§  Bug	
  (fix)	
  
§  Changed	
  func1onality	
  (update	
  asser1on)	
  
§  Bad	
  asser1on	
  (improve	
  or	
  remove)	
  -­‐	
  don’t	
  delete;	
  
instead,	
  comment	
  out	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   31	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   31	
  
What	
  to	
  assert	
  
§  Ease	
  of	
  crea1ng	
  asser1ons	
  leads	
  to	
  poor	
  
choices	
  
§  Anything	
  CAN	
  be	
  checked	
  –	
  but	
  should	
  it	
  be?	
  
§  Asser1ons	
  should	
  be	
  connected	
  to	
  what	
  
you’re	
  trying	
  to	
  test	
  
§  Asser1ons	
  should	
  be	
  logically	
  invariant	
  
§  Check	
  values	
  by	
  range,	
  not	
  equivalence	
  
§  “What	
  do	
  I	
  expect	
  here	
  logically?”	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   32	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   32	
  
Asser1on	
  Example:	
  Java	
  
public	
  Integer	
  getNumber()	
  {	
  
Scanner	
  input	
  =	
  new	
  Scanner(	
  System.in	
  );	
  	
  	
  
System.out.print(	
  "Enter	
  a	
  number	
  between	
  0	
  and	
  10:	
  "	
  );	
  	
  	
  
int	
  number	
  =	
  input.nextInt();	
  	
  	
  
//	
  assert	
  that	
  the	
  absolute	
  value	
  is	
  >=	
  0	
  	
  	
  
assert	
  (	
  number	
  >=	
  0	
  &&	
  number	
  <=	
  10	
  )	
  :	
  "bad	
  number:	
  "	
  +	
  number;	
  	
  	
  
return	
  number	
  
}	
  
	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   33	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   33	
  
How	
  to	
  recognize	
  bad	
  asser1ons	
  
§  How	
  o&en	
  do	
  you	
  WANT	
  to	
  manually	
  verify	
  an	
  
asser1on?	
  
§  Daily	
  or	
  near-­‐daily	
  checking	
  indicates	
  poor	
  
asser1on.	
  
§  Troublesome	
  possibili1es:	
  
§  Date	
  
§  User	
  or	
  machine	
  name	
  
§  OS	
  	
  
§  Filesystem	
  names	
  and	
  paths	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   34	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   34	
  
Missing	
  Asser1ons	
  
§  Error	
  was	
  found	
  a&er	
  code	
  changed	
  
§  Test	
  suite	
  never	
  caught	
  the	
  error	
  
§  Update	
  unit-­‐test	
  with	
  new	
  asser1on	
  
§  Write	
  new	
  unit	
  tests	
  as	
  necessary	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   35	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   35	
  
Cleaning	
  It	
  Up	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   36	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   36	
  
The	
  Challenge:	
  Management’s	
  Perspec1ve	
  
§  Need	
  tests	
  to	
  reduce	
  risks	
  
§  Tes1ng	
  takes	
  1me	
  from	
  
features/fixes	
  
§  Not	
  enough	
  1me	
  
§  Not	
  enough	
  people	
  
§  Tests	
  and	
  reports	
  lack	
  context	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   37	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   37	
  
The	
  Challenge:	
  Development’s	
  Perspec1ve	
  
§  Hundreds	
  of	
  failing	
  or	
  
broken	
  tests	
  
§  Test	
  requirements	
  unclear	
  
§  Exis1ng	
  tests	
  are	
  dubious	
  
§  Deadline	
  pressure	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   38	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   38	
  
Spring	
  Cleaning	
  Solu1on	
  
§  Throw	
  out	
  the	
  useless,	
  old	
  junk	
  
§  Iden1fy	
  	
  and	
  eliminate	
  “noisy”	
  tests	
  
§  Organize	
  the	
  remaining	
  chores	
  
§  Priori1ze	
  unit	
  test	
  tasks	
  
§  Keep	
  it	
  clean	
  
§  Establish	
  and	
  follow	
  a	
  rou1ne	
  test	
  maintenance	
  plan	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   39	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   39	
  
Throw	
  out	
  the	
  Junk:	
  Iden1fying	
  Noisy	
  Tests	
  
§  Tests	
  that	
  are	
  fragile	
  
§  Pass/Fail/Incomplete	
  results	
  frequently	
  change	
  
§  Frequent	
  changes	
  are	
  required	
  to	
  keep	
  up-­‐to-­‐date	
  
§  Tests	
  that	
  are	
  outdated	
  
§  More	
  than	
  “n”	
  releases	
  have	
  occurred	
  despite	
  this	
  test	
  failure	
  
§  The	
  test	
  applies	
  to	
  legacy	
  code	
  that	
  is	
  frozen	
  
§  The	
  test	
  has	
  not	
  been	
  executed	
  for	
  “x”	
  period	
  of	
  1me	
  
§  Tests	
  that	
  are	
  unclear	
  
§  It	
  takes	
  more	
  than	
  5	
  minutes	
  to	
  understand	
  why	
  the	
  test	
  exists	
  
§  The	
  failure	
  message	
  is	
  incorrect/unhelpful/irrelevant	
  
§  There	
  is	
  no	
  associated	
  requirement	
  or	
  defect	
  
§  Be	
  merciless!	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   40	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   40	
  
Organize	
  Chores:	
  Priori1ze	
  Tasks	
  with	
  Policy	
  
§  All	
  tasks	
  are	
  created	
  equal	
  
§  Some	
  tasks	
  are	
  more	
  equal	
  than	
  others	
  
§  Policies	
  establish	
  priori1za1on	
  and	
  assignment	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   41	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   41	
  
Keep	
  it	
  Clean:	
  Establish	
  a	
  Rou1ne	
  Process	
  
§  Management	
  and	
  Development	
  need	
  to	
  co-­‐define	
  a	
  Policy	
  
§  Clear	
  tes1ng	
  goals	
  that	
  1e	
  tests	
  to	
  business	
  needs	
  
§  Clear	
  delinea1on	
  of	
  responsibility	
  
§  Test	
  crea1on	
  and	
  dele1on	
  
§  Test	
  failure	
  resolu1on	
  
§  Naming	
  conven1ons	
  
§  Peer	
  review	
  
§  Clear	
  and	
  frequent	
  communica1on	
  
§  Understand	
  the	
  technical	
  and	
  business	
  impact	
  
§  Enhance	
  traceability	
  to	
  project	
  requirements	
  
§  Ask	
  ques1ons	
  
§  Focus	
  on	
  safety/quality,	
  not	
  coverage	
  
§  Keep	
  the	
  number	
  of	
  tests	
  minimal	
  
§  Run	
  all	
  tests	
  on	
  a	
  regularly	
  scheduled,	
  frequent	
  basis	
  
§  Clean	
  as	
  you	
  go	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   42	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   42	
  
Spring	
  Cleaning	
  Recap	
  
§  Find	
  and	
  delete	
  “noisy”	
  tests	
  
§  Use	
  policies	
  to	
  priori1ze,	
  assign,	
  and	
  plan	
  
§  Co-­‐design	
  and	
  follow	
  a	
  process	
  to	
  keep	
  it	
  clean	
  
Paraso&	
  Proprietary	
  and	
  Confiden1al	
   43	
  Paraso&	
  Proprietary	
  and	
  Confiden1al	
   43	
  
§  Web	
  
§  hjp://www.paraso&.com/jsp/resources	
  
§  Blog	
  
§  hjp://alm.paraso&.com	
  
§ Social	
  
§ Facebook:	
  hjps://www.facebook.com/paraso&corpora1on	
  
§ Twijer:	
  @Paraso&	
  @MustRead4Dev	
  @CodeCurmudgeon	
  
§ LinkedIn:	
  hjp://www.linkedin.com/company/paraso&	
  
§  Google+:	
  +Paraso&	
  +ArthurHickenCodeCurmudgeon	
  
§  Google+	
  Community:	
  Development	
  Tes1ng	
  Because	
  its	
  Bejer	
  

Contenu connexe

Tendances

От хаоса к автоматизации тестирования на примере Backend
От хаоса к автоматизации тестирования на примере BackendОт хаоса к автоматизации тестирования на примере Backend
От хаоса к автоматизации тестирования на примере BackendCOMAQA.BY
 
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Agile India
 
Small is Beautiful- Fully Automate your Test Case Design
Small is Beautiful- Fully Automate your Test Case DesignSmall is Beautiful- Fully Automate your Test Case Design
Small is Beautiful- Fully Automate your Test Case DesignGeorgina Tilby
 
Continuous Delivery for Agile Teams
Continuous Delivery for Agile TeamsContinuous Delivery for Agile Teams
Continuous Delivery for Agile TeamsMike Bowler
 
Adding value in an agile context
Adding value in an agile contextAdding value in an agile context
Adding value in an agile contextHouseofTest
 
Backward thinking design qa system for quality goals
Backward thinking   design qa system for quality goalsBackward thinking   design qa system for quality goals
Backward thinking design qa system for quality goalsgaoliang641
 
Agile doesnt improve quality :-(. How do we release world class product?
Agile doesnt improve quality :-(. How do we release world class product?Agile doesnt improve quality :-(. How do we release world class product?
Agile doesnt improve quality :-(. How do we release world class product?jp_prabhakar
 
Agile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
Agile vs. DevOps for Continuous Testing: How to Optimize Your PipelineAgile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
Agile vs. DevOps for Continuous Testing: How to Optimize Your PipelinePerfecto by Perforce
 
Agile Test Automation: Truth, Oxymoron or Lie?
Agile Test Automation: Truth, Oxymoron or Lie?Agile Test Automation: Truth, Oxymoron or Lie?
Agile Test Automation: Truth, Oxymoron or Lie?Original Software
 
Moving to Continuous Delivery Without Breaking Your Code
Moving to Continuous Delivery Without Breaking Your CodeMoving to Continuous Delivery Without Breaking Your Code
Moving to Continuous Delivery Without Breaking Your CodeXebiaLabs
 
QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...
QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...
QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...QASymphony
 
Continuous Testing - The New Normal
Continuous Testing - The New NormalContinuous Testing - The New Normal
Continuous Testing - The New NormalTechWell
 
Improving the Quality of Incoming Code
Improving the Quality of Incoming CodeImproving the Quality of Incoming Code
Improving the Quality of Incoming CodeNaresh Jain
 
ReportPortal.io - Open Source experience. Showcase, benefits
ReportPortal.io - Open Source experience. Showcase, benefits ReportPortal.io - Open Source experience. Showcase, benefits
ReportPortal.io - Open Source experience. Showcase, benefits COMAQA.BY
 
Agile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterAgile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterDeclan Whelan
 
Test Metrics in Agile: A Powerful Tool to Demonstrate Value
Test Metrics in Agile: A Powerful Tool to Demonstrate ValueTest Metrics in Agile: A Powerful Tool to Demonstrate Value
Test Metrics in Agile: A Powerful Tool to Demonstrate ValueTechWell
 
Dietmar Strasser - Traditional QA meets Agile Development
Dietmar Strasser -  Traditional QA meets Agile DevelopmentDietmar Strasser -  Traditional QA meets Agile Development
Dietmar Strasser - Traditional QA meets Agile DevelopmentTEST Huddle
 

Tendances (20)

От хаоса к автоматизации тестирования на примере Backend
От хаоса к автоматизации тестирования на примере BackendОт хаоса к автоматизации тестирования на примере Backend
От хаоса к автоматизации тестирования на примере Backend
 
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
Acceptance Testing for Continuous Delivery by Dave Farley at #AgileIndia2019
 
Small is Beautiful- Fully Automate your Test Case Design
Small is Beautiful- Fully Automate your Test Case DesignSmall is Beautiful- Fully Automate your Test Case Design
Small is Beautiful- Fully Automate your Test Case Design
 
Continuous Delivery for Agile Teams
Continuous Delivery for Agile TeamsContinuous Delivery for Agile Teams
Continuous Delivery for Agile Teams
 
Manual estimation approach for Pre-sale phase of a project
Manual estimation approach for Pre-sale phase of a projectManual estimation approach for Pre-sale phase of a project
Manual estimation approach for Pre-sale phase of a project
 
Adding value in an agile context
Adding value in an agile contextAdding value in an agile context
Adding value in an agile context
 
Backward thinking design qa system for quality goals
Backward thinking   design qa system for quality goalsBackward thinking   design qa system for quality goals
Backward thinking design qa system for quality goals
 
Agile doesnt improve quality :-(. How do we release world class product?
Agile doesnt improve quality :-(. How do we release world class product?Agile doesnt improve quality :-(. How do we release world class product?
Agile doesnt improve quality :-(. How do we release world class product?
 
Agile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
Agile vs. DevOps for Continuous Testing: How to Optimize Your PipelineAgile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
Agile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
 
Agile Test Automation: Truth, Oxymoron or Lie?
Agile Test Automation: Truth, Oxymoron or Lie?Agile Test Automation: Truth, Oxymoron or Lie?
Agile Test Automation: Truth, Oxymoron or Lie?
 
Moving to Continuous Delivery Without Breaking Your Code
Moving to Continuous Delivery Without Breaking Your CodeMoving to Continuous Delivery Without Breaking Your Code
Moving to Continuous Delivery Without Breaking Your Code
 
Test Automation Pyramid
Test Automation PyramidTest Automation Pyramid
Test Automation Pyramid
 
QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...
QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...
QASymphony and TestPlant: Bringing Together Best-in-Class Test Management and...
 
Continuous Testing - The New Normal
Continuous Testing - The New NormalContinuous Testing - The New Normal
Continuous Testing - The New Normal
 
The Test Pyramid
The Test PyramidThe Test Pyramid
The Test Pyramid
 
Improving the Quality of Incoming Code
Improving the Quality of Incoming CodeImproving the Quality of Incoming Code
Improving the Quality of Incoming Code
 
ReportPortal.io - Open Source experience. Showcase, benefits
ReportPortal.io - Open Source experience. Showcase, benefits ReportPortal.io - Open Source experience. Showcase, benefits
ReportPortal.io - Open Source experience. Showcase, benefits
 
Agile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterAgile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile Tester
 
Test Metrics in Agile: A Powerful Tool to Demonstrate Value
Test Metrics in Agile: A Powerful Tool to Demonstrate ValueTest Metrics in Agile: A Powerful Tool to Demonstrate Value
Test Metrics in Agile: A Powerful Tool to Demonstrate Value
 
Dietmar Strasser - Traditional QA meets Agile Development
Dietmar Strasser -  Traditional QA meets Agile DevelopmentDietmar Strasser -  Traditional QA meets Agile Development
Dietmar Strasser - Traditional QA meets Agile Development
 

En vedette

Yuvagarjan - Chandra Babu Naidu Speech Presentation - CAG Event, New Delhi
Yuvagarjan - Chandra Babu Naidu Speech Presentation - CAG Event, New DelhiYuvagarjan - Chandra Babu Naidu Speech Presentation - CAG Event, New Delhi
Yuvagarjan - Chandra Babu Naidu Speech Presentation - CAG Event, New DelhiTelugu Desam Official Party
 
Transforming the Boardrooms "Boardroom Effectiveness "
Transforming the Boardrooms "Boardroom Effectiveness"Transforming the Boardrooms "Boardroom Effectiveness"
Transforming the Boardrooms "Boardroom Effectiveness "SAROJ BEHERA
 

En vedette (6)

leo12017
leo12017leo12017
leo12017
 
Dossier partenaire des rénovateurs COP22 COP21
Dossier partenaire  des rénovateurs COP22 COP21Dossier partenaire  des rénovateurs COP22 COP21
Dossier partenaire des rénovateurs COP22 COP21
 
Resume
ResumeResume
Resume
 
Yuvagarjan - Chandra Babu Naidu Speech Presentation - CAG Event, New Delhi
Yuvagarjan - Chandra Babu Naidu Speech Presentation - CAG Event, New DelhiYuvagarjan - Chandra Babu Naidu Speech Presentation - CAG Event, New Delhi
Yuvagarjan - Chandra Babu Naidu Speech Presentation - CAG Event, New Delhi
 
Hailesellasie L Kaitano's CV (1)
Hailesellasie L Kaitano's CV (1)Hailesellasie L Kaitano's CV (1)
Hailesellasie L Kaitano's CV (1)
 
Transforming the Boardrooms "Boardroom Effectiveness "
Transforming the Boardrooms "Boardroom Effectiveness"Transforming the Boardrooms "Boardroom Effectiveness"
Transforming the Boardrooms "Boardroom Effectiveness "
 

Similaire à Are Your Continuous Tests Too Fragile for Agile?

A Comparison of Three Bug-Finding Techniques and Their Relative Effectiveness
A Comparison of Three Bug-Finding Techniques and Their Relative EffectivenessA Comparison of Three Bug-Finding Techniques and Their Relative Effectiveness
A Comparison of Three Bug-Finding Techniques and Their Relative EffectivenessParasoft
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven DevelopmentZendCon
 
An exploratory study of the state of practice of performance testing in Java-...
An exploratory study of the state of practice of performance testing in Java-...An exploratory study of the state of practice of performance testing in Java-...
An exploratory study of the state of practice of performance testing in Java-...corpaulbezemer
 
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f..." Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f...Lohika_Odessa_TechTalks
 
Just Java2007 - Daniel Wildt - Tools For Java Test Automation
Just Java2007 - Daniel Wildt - Tools For Java Test AutomationJust Java2007 - Daniel Wildt - Tools For Java Test Automation
Just Java2007 - Daniel Wildt - Tools For Java Test AutomationDaniel Wildt
 
SoftwareAssemblyLineOverview
SoftwareAssemblyLineOverviewSoftwareAssemblyLineOverview
SoftwareAssemblyLineOverviewGary Howard
 
Are Your Continuous Tests Too Fragile for Agile?
Are Your Continuous Tests Too Fragile for Agile?Are Your Continuous Tests Too Fragile for Agile?
Are Your Continuous Tests Too Fragile for Agile?Parasoft
 
Evolving from Automated to Continous Testing for Agile and DevOps
Evolving from Automated to Continous Testing for Agile and DevOpsEvolving from Automated to Continous Testing for Agile and DevOps
Evolving from Automated to Continous Testing for Agile and DevOpsParasoft
 
Software Engineering (Testing Overview)
Software Engineering (Testing Overview)Software Engineering (Testing Overview)
Software Engineering (Testing Overview)ShudipPal
 
Agile Software Testing the Agilogy Way
Agile Software Testing the Agilogy WayAgile Software Testing the Agilogy Way
Agile Software Testing the Agilogy WayJordi Pradel
 
Testing concepts [3] - Software Testing Techniques (CIS640)
Testing concepts [3] - Software Testing Techniques (CIS640)Testing concepts [3] - Software Testing Techniques (CIS640)
Testing concepts [3] - Software Testing Techniques (CIS640)Venkatesh Prasad Ranganath
 
Architecture of automated test cases for legacy applications
Architecture of automated test cases for legacy applicationsArchitecture of automated test cases for legacy applications
Architecture of automated test cases for legacy applicationsMikhail Vasylchenko
 
Linking Testing Requirements to Test Cases to Save Time
Linking Testing Requirements to Test Cases to Save TimeLinking Testing Requirements to Test Cases to Save Time
Linking Testing Requirements to Test Cases to Save TimePerforce
 
Linking Requirements to Test Cases to Save Time & Frustration
Linking Requirements to Test Cases to Save Time & Frustration Linking Requirements to Test Cases to Save Time & Frustration
Linking Requirements to Test Cases to Save Time & Frustration Perforce
 
Agile Acceptance testing with Fitnesse
Agile Acceptance testing with FitnesseAgile Acceptance testing with Fitnesse
Agile Acceptance testing with FitnesseClareMcLennan
 

Similaire à Are Your Continuous Tests Too Fragile for Agile? (20)

A Comparison of Three Bug-Finding Techniques and Their Relative Effectiveness
A Comparison of Three Bug-Finding Techniques and Their Relative EffectivenessA Comparison of Three Bug-Finding Techniques and Their Relative Effectiveness
A Comparison of Three Bug-Finding Techniques and Their Relative Effectiveness
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
An exploratory study of the state of practice of performance testing in Java-...
An exploratory study of the state of practice of performance testing in Java-...An exploratory study of the state of practice of performance testing in Java-...
An exploratory study of the state of practice of performance testing in Java-...
 
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f..." Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
" Performance testing for Automation QA - why and how " by Andrey Kovalenko f...
 
Just Java2007 - Daniel Wildt - Tools For Java Test Automation
Just Java2007 - Daniel Wildt - Tools For Java Test AutomationJust Java2007 - Daniel Wildt - Tools For Java Test Automation
Just Java2007 - Daniel Wildt - Tools For Java Test Automation
 
SoftwareAssemblyLineOverview
SoftwareAssemblyLineOverviewSoftwareAssemblyLineOverview
SoftwareAssemblyLineOverview
 
Test
TestTest
Test
 
Are Your Continuous Tests Too Fragile for Agile?
Are Your Continuous Tests Too Fragile for Agile?Are Your Continuous Tests Too Fragile for Agile?
Are Your Continuous Tests Too Fragile for Agile?
 
Evolving from Automated to Continous Testing for Agile and DevOps
Evolving from Automated to Continous Testing for Agile and DevOpsEvolving from Automated to Continous Testing for Agile and DevOps
Evolving from Automated to Continous Testing for Agile and DevOps
 
Software Engineering (Testing Overview)
Software Engineering (Testing Overview)Software Engineering (Testing Overview)
Software Engineering (Testing Overview)
 
Agile Software Testing the Agilogy Way
Agile Software Testing the Agilogy WayAgile Software Testing the Agilogy Way
Agile Software Testing the Agilogy Way
 
Lec25
Lec25Lec25
Lec25
 
Testing concepts [3] - Software Testing Techniques (CIS640)
Testing concepts [3] - Software Testing Techniques (CIS640)Testing concepts [3] - Software Testing Techniques (CIS640)
Testing concepts [3] - Software Testing Techniques (CIS640)
 
Architecture of automated test cases for legacy applications
Architecture of automated test cases for legacy applicationsArchitecture of automated test cases for legacy applications
Architecture of automated test cases for legacy applications
 
test
testtest
test
 
test
testtest
test
 
Linking Testing Requirements to Test Cases to Save Time
Linking Testing Requirements to Test Cases to Save TimeLinking Testing Requirements to Test Cases to Save Time
Linking Testing Requirements to Test Cases to Save Time
 
Linking Requirements to Test Cases to Save Time & Frustration
Linking Requirements to Test Cases to Save Time & Frustration Linking Requirements to Test Cases to Save Time & Frustration
Linking Requirements to Test Cases to Save Time & Frustration
 
Agile Acceptance testing with Fitnesse
Agile Acceptance testing with FitnesseAgile Acceptance testing with Fitnesse
Agile Acceptance testing with Fitnesse
 
Course Slides.pdf
Course Slides.pdfCourse Slides.pdf
Course Slides.pdf
 

Plus de Erika Barron

Parasoft PIE infographic
Parasoft PIE infographicParasoft PIE infographic
Parasoft PIE infographicErika Barron
 
Parasoft Case Study: Wipro
Parasoft Case Study: WiproParasoft Case Study: Wipro
Parasoft Case Study: WiproErika Barron
 
Real World Static Analysis Boot Camp
Real World Static Analysis Boot CampReal World Static Analysis Boot Camp
Real World Static Analysis Boot CampErika Barron
 
Service Virtualization: Delivering Complex Test Environments on Demand
Service Virtualization: Delivering Complex Test Environments on DemandService Virtualization: Delivering Complex Test Environments on Demand
Service Virtualization: Delivering Complex Test Environments on DemandErika Barron
 
How the Cloud Shifts the Burden of Security to Development
How the Cloud Shifts the Burden of Security to DevelopmentHow the Cloud Shifts the Burden of Security to Development
How the Cloud Shifts the Burden of Security to DevelopmentErika Barron
 
Static Analysis and the FDA Guidance for Medical Device Software
Static Analysis and the FDA Guidance for Medical Device SoftwareStatic Analysis and the FDA Guidance for Medical Device Software
Static Analysis and the FDA Guidance for Medical Device SoftwareErika Barron
 
Creating Complete Test Environments in the Cloud
Creating Complete Test Environments in the CloudCreating Complete Test Environments in the Cloud
Creating Complete Test Environments in the CloudErika Barron
 
How To Avoid Continuously Delivering Faulty Software
How To Avoid Continuously Delivering Faulty SoftwareHow To Avoid Continuously Delivering Faulty Software
How To Avoid Continuously Delivering Faulty SoftwareErika Barron
 
12 Days of Coding Errors
12 Days of Coding Errors12 Days of Coding Errors
12 Days of Coding ErrorsErika Barron
 
APIs Gone Wild - Star West 2013
APIs Gone Wild - Star West 2013APIs Gone Wild - Star West 2013
APIs Gone Wild - Star West 2013Erika Barron
 
Cloud migration slides
Cloud migration slidesCloud migration slides
Cloud migration slidesErika Barron
 
Complex End-to-End Testing
Complex End-to-End TestingComplex End-to-End Testing
Complex End-to-End TestingErika Barron
 
How the Grinch Stole Software Testing
How the Grinch Stole Software TestingHow the Grinch Stole Software Testing
How the Grinch Stole Software TestingErika Barron
 
Service Virtualization
Service VirtualizationService Virtualization
Service VirtualizationErika Barron
 
Beyond Static Analysis: Integrating .NET Static Analysis with Unit Testing a...
Beyond Static Analysis: Integrating .NET  Static Analysis with Unit Testing a...Beyond Static Analysis: Integrating .NET  Static Analysis with Unit Testing a...
Beyond Static Analysis: Integrating .NET Static Analysis with Unit Testing a...Erika Barron
 
Beyond Static Analysis: Integrating Java Static Analysis with Unit Testing an...
Beyond Static Analysis: Integrating Java Static Analysis with Unit Testing an...Beyond Static Analysis: Integrating Java Static Analysis with Unit Testing an...
Beyond Static Analysis: Integrating Java Static Analysis with Unit Testing an...Erika Barron
 
Software Development Graveyard
Software Development GraveyardSoftware Development Graveyard
Software Development GraveyardErika Barron
 
The Development Graveyard: How Software Projects Die
The Development Graveyard: How Software Projects DieThe Development Graveyard: How Software Projects Die
The Development Graveyard: How Software Projects DieErika Barron
 
Beyond Static Analysis: Integrating C and C++ Static Analysis with Unit Testi...
Beyond Static Analysis: Integrating C and C++ Static Analysis with Unit Testi...Beyond Static Analysis: Integrating C and C++ Static Analysis with Unit Testi...
Beyond Static Analysis: Integrating C and C++ Static Analysis with Unit Testi...Erika Barron
 

Plus de Erika Barron (20)

Parasoft PIE infographic
Parasoft PIE infographicParasoft PIE infographic
Parasoft PIE infographic
 
Parasoft Case Study: Wipro
Parasoft Case Study: WiproParasoft Case Study: Wipro
Parasoft Case Study: Wipro
 
Real World Static Analysis Boot Camp
Real World Static Analysis Boot CampReal World Static Analysis Boot Camp
Real World Static Analysis Boot Camp
 
Service Virtualization: Delivering Complex Test Environments on Demand
Service Virtualization: Delivering Complex Test Environments on DemandService Virtualization: Delivering Complex Test Environments on Demand
Service Virtualization: Delivering Complex Test Environments on Demand
 
How the Cloud Shifts the Burden of Security to Development
How the Cloud Shifts the Burden of Security to DevelopmentHow the Cloud Shifts the Burden of Security to Development
How the Cloud Shifts the Burden of Security to Development
 
Static Analysis and the FDA Guidance for Medical Device Software
Static Analysis and the FDA Guidance for Medical Device SoftwareStatic Analysis and the FDA Guidance for Medical Device Software
Static Analysis and the FDA Guidance for Medical Device Software
 
Creating Complete Test Environments in the Cloud
Creating Complete Test Environments in the CloudCreating Complete Test Environments in the Cloud
Creating Complete Test Environments in the Cloud
 
How To Avoid Continuously Delivering Faulty Software
How To Avoid Continuously Delivering Faulty SoftwareHow To Avoid Continuously Delivering Faulty Software
How To Avoid Continuously Delivering Faulty Software
 
12 Days of Coding Errors
12 Days of Coding Errors12 Days of Coding Errors
12 Days of Coding Errors
 
APIs Gone Wild - Star West 2013
APIs Gone Wild - Star West 2013APIs Gone Wild - Star West 2013
APIs Gone Wild - Star West 2013
 
Cloud migration slides
Cloud migration slidesCloud migration slides
Cloud migration slides
 
Complex End-to-End Testing
Complex End-to-End TestingComplex End-to-End Testing
Complex End-to-End Testing
 
How the Grinch Stole Software Testing
How the Grinch Stole Software TestingHow the Grinch Stole Software Testing
How the Grinch Stole Software Testing
 
Service Virtualization
Service VirtualizationService Virtualization
Service Virtualization
 
Beyond Static Analysis: Integrating .NET Static Analysis with Unit Testing a...
Beyond Static Analysis: Integrating .NET  Static Analysis with Unit Testing a...Beyond Static Analysis: Integrating .NET  Static Analysis with Unit Testing a...
Beyond Static Analysis: Integrating .NET Static Analysis with Unit Testing a...
 
Java Defects
Java DefectsJava Defects
Java Defects
 
Beyond Static Analysis: Integrating Java Static Analysis with Unit Testing an...
Beyond Static Analysis: Integrating Java Static Analysis with Unit Testing an...Beyond Static Analysis: Integrating Java Static Analysis with Unit Testing an...
Beyond Static Analysis: Integrating Java Static Analysis with Unit Testing an...
 
Software Development Graveyard
Software Development GraveyardSoftware Development Graveyard
Software Development Graveyard
 
The Development Graveyard: How Software Projects Die
The Development Graveyard: How Software Projects DieThe Development Graveyard: How Software Projects Die
The Development Graveyard: How Software Projects Die
 
Beyond Static Analysis: Integrating C and C++ Static Analysis with Unit Testi...
Beyond Static Analysis: Integrating C and C++ Static Analysis with Unit Testi...Beyond Static Analysis: Integrating C and C++ Static Analysis with Unit Testi...
Beyond Static Analysis: Integrating C and C++ Static Analysis with Unit Testi...
 

Dernier

%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 

Dernier (20)

%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 

Are Your Continuous Tests Too Fragile for Agile?

  • 1. Paraso&  Proprietary  and  Confiden1al   1   11/13/14   Are  Your  Con*nuous  Tests     Too  Fragile  for  Agile   Arthur  Hicken   Paraso&  Evangelist  
  • 2. Paraso&  Proprietary  and  Confiden1al   2  Paraso&  Proprietary  and  Confiden1al   2   Agenda   §  Challenges  of  Con1nuous  Agile   §  Tes1ng  defined   §  Tes1ng  is  hard  (no  one  wants  to  do  it)   §  Best  prac1ces   §  A  modest  proposal:  Spring  cleaning  
  • 3. Paraso&  Proprietary  and  Confiden1al   3  Paraso&  Proprietary  and  Confiden1al   3   The  role  of  QA  in  Agile   §  QA  is  part  of  development,  not  an   a&erthought   §  Review  developer  tes1ng  efforts   §  Addi1onal  tes1ng  of  requirements   §  Itera1ve  during  development   §  Fast  discovery  and  repor1ng  of  defects   §  Inves1gate  root  cause  of  defects   §  Influence  development  policy  
  • 4. Paraso&  Proprietary  and  Confiden1al   4  Paraso&  Proprietary  and  Confiden1al   4   Challenges  of  Agile   §  Need  to  be  fast   §  Need  to  be  flexible   §  Tes1ng  can  be  overlooked  if  not  baked  in   §  Architectural  compromises  from  schedule  
  • 5. Paraso&  Proprietary  and  Confiden1al   5  Paraso&  Proprietary  and  Confiden1al   5   Challenges  of  Con1nuous   §  Tests  must  produce  binary  decision  go/no-­‐go   §  Reuse  unit  test  and  func1onal  tests  from  dev   to  QA   §  High  level  of  automa1on   §  Requires  disciplined  mature  process   §  Tes1ng  must  automa&cally  answer   §  Is  it  stable   §  Will  it  do  what  it’s  supposed  to  do  
  • 6. Paraso&  Proprietary  and  Confiden1al   6  Paraso&  Proprietary  and  Confiden1al   6   Importance  of  Tes1ng   §  How  do  you  know  when  you're  done?     §  How  do  you  know  if  a  fix  for  a  minor  bug   broke  a  major  func1on  of  the  system?     §  How  can  the  system  evolve  into  something   more  than  is  currently  envisioned?     §  Tes1ng,  both  unit  and  func1onal,  needs  to  be   an  integrated  part  of  the  development   process.  
  • 7. Paraso&  Proprietary  and  Confiden1al   7  Paraso&  Proprietary  and  Confiden1al   7   Tes1ng  delivers   A  maintained  suite  of  unit  tests:   §  Represents  the  most  prac1cal  design  possible   §  Provides  the  best  form  of  documenta1on  for   classes   §  Determines  when  a  class  is  "done"   §  Gives  a  developer  confidence  in  the  code   §  Is  a  basis  for  refactoring  quickly  
  • 8. Paraso&  Proprietary  and  Confiden1al   8  Paraso&  Proprietary  and  Confiden1al   8   Why  Tes1ng  is  O&en  Ignored   §  Perceived  as  “burdensome”   §  Too  much  effort   §  Too  much  1me   §  We’re  on  a  schedule  –  no  1me  to  test.   §  Why  is  there  always  1me  to  do  it  over,  but  never  to  do  it  right?   §  Developer  Ego   §  “I  don’t  need  to  test  my  code  –  I  don’t  make  mistakes.”   §  Tes1ng  means  I  have  to  admit  that  I  might  have  made  a  mistake.   §  I  don’t  like  to  test  –  it’s  beneath  me.   §  Tes1ng  isn’t  fun  –  I  just  want  to  code!   §  That’s  for  the  QA  dept.  
  • 9. Paraso&  Proprietary  and  Confiden1al   9  Paraso&  Proprietary  and  Confiden1al   9   Defini1ons   §  Unit   §  Func1onal   §  Regression  
  • 10. Paraso&  Proprietary  and  Confiden1al   10  Paraso&  Proprietary  and  Confiden1al   10   Unit  Tes1ng   Unit  tests  that  validates  your  method  behaves  a   certain  way  given  a  specific  parameters   §  Regressions  tes1ng   §  Validate  behavior  of  exis1ng  code  hasn’t  changed   §  Scheduled  and  run  automa1cally   §  Test  Driven  Development   §  Validate  behavior  of  new  code  to  be  wrijen   §  Created  before  developing,  turned  into  regression  tests   a&er  
  • 11. Paraso&  Proprietary  and  Confiden1al   11  Paraso&  Proprietary  and  Confiden1al   11   Func1onal  Tes1ng   §  Incarna1ons  of  func1onal  tests   §  Unit  tests  (Junit,  CppUnit,  Nunit,  etc)   §  Integra1on  tests   §  Scripted  tests   §  Manual  tests   §  Ways  to  create  func1onal  tests   §  Manually  wrijen   §  Machine  generated  from  applica1on  tracing   §  Machine  generated  from  capturing  traffic   §  Machine  generated  from  recording  clicks  
  • 12. Paraso&  Proprietary  and  Confiden1al   12  Paraso&  Proprietary  and  Confiden1al   12   Regression  Tes1ng   §  Contributors  to  the  regression  test  suite   §  Func1onal  unit  tests  that  pass   §  Machine  generated  unit  tests  for  current  behavior   §  Unit  test  wrijen  by  developers  and  testers   §  Tests  wrijen  to  validate  bug  fixes   §  Regression  test  failures   §  Unwanted  change  in  behavior  –  fix  the  code   §  Inten1onal  change  in  specifica1on  –  update  test   controls  
  • 13. Paraso&  Proprietary  and  Confiden1al   13  Paraso&  Proprietary  and  Confiden1al   13   What’s  the  Difference?   Unit  Tests   •  The  code  is  doing  things  right   •  Wrijen  from  programmers  perspec1ve   •  Confirm  code  gives  proper  output  based  on  specific  input   Func1onal  Tests   •  The  code  is  doing  the  right  thing   •  Wrijen  from  users  perspec1ve   •  Confirm  the  system  does  what  the  user  expects  it  to  do   Regression  Tests   •  It  s1ll  works  
  • 14. Paraso&  Proprietary  and  Confiden1al   14  Paraso&  Proprietary  and  Confiden1al   14   Why  do  Unit  Tes1ng   So&ware  bugs  are  inserted  during  coding  phase,  but  o&en  aren’t  found  un1l   func1onal  tes1ng,  or  worse  they  are  found  by  customers.    The  longer  a   bug  stays  in  the  system,  the  more  expensive  it  is  to  fix  it.     Unit  tes1ng  is  a  strategy  that  allows  you  to  find  out  if  your  system  is  behaving   the  way  you  expect  early  in  the  SDLC.     Unit  tes1ng  allows  for  easy  regression  tes1ng,  so  you  can  find  out  quickly   whether  you  have  introduced  some  unexpected  behavior  into  the  system.  
  • 15. Paraso&  Proprietary  and  Confiden1al   15   The  Cost  of  Defects  
  • 16. Paraso&  Proprietary  and  Confiden1al   16  Paraso&  Proprietary  and  Confiden1al   16   Best  Prac1ces  
  • 17. Paraso&  Proprietary  and  Confiden1al   17  Paraso&  Proprietary  and  Confiden1al   17   What’s  Important   §  Unit  tests  require  a  LOT  of  care   §  Unit  tes1ng  is  a  con1nuous  opera1on   §  Test  suite  maintenance  is  a  commitment   §  Control  data  (asser1ons)  in  the  code    
  • 18. Paraso&  Proprietary  and  Confiden1al   18  Paraso&  Proprietary  and  Confiden1al   18   Test  incorpora1on   §  Take  exis1ng  unit  tests  and  schedule  them   into  build  process   §  Run  and  fix  tests  as  part  of  build  process   §  Ideal  goal:  0  failures  and  100%  code  coverage   §  Realis1c  goal:  10%  test  failures  and  80%  code   coverage   §  If  the  unit  test  suite  is  noisy,  don’t  qualify  the   build  based  on  asser1on  failures  
  • 19. Paraso&  Proprietary  and  Confiden1al   19  Paraso&  Proprietary  and  Confiden1al   19   Unit  Test  Crea1on   §  Maintainability   §  Proper  asser1ons   §  Nightly  runs   §  Tests  should  be:   §  Automa1c  (no  human  input  or  review)   §  Repeatable  (no  strange  dependencies)    
  • 20. Paraso&  Proprietary  and  Confiden1al   20  Paraso&  Proprietary  and  Confiden1al   20   Legacy  Test  Suites   §  Leverage  your  exis1ng  suite   §  Clean  up  incrementally   §  Set  policy  based  on  current  results   §  Tighten  policy  when  in  compliance  
  • 21. Paraso&  Proprietary  and  Confiden1al   21  Paraso&  Proprietary  and  Confiden1al   21   Maintaining  and  Crea1ng  UT   §  Maintaining  is  more  of  a  problem  than   crea1ng.     §  Don’t  create  a  test  if  you  can’t  or  don’t  plan  to   maintain  it.   §  Crea1ng  as  you  go  creates  a  bejer  test  suite   §  Tests  not  run  regularly  become  irrelevant  
  • 22. Paraso&  Proprietary  and  Confiden1al   22  Paraso&  Proprietary  and  Confiden1al   22   Write  tests  with  the  code   §  Create  the  test  when  you’re  wri1ng  the  code   §  Have  a  test  for  every  task  you  complete   §  Increases  understanding   §  Improve  asser1ons  
  • 23. Paraso&  Proprietary  and  Confiden1al   23  Paraso&  Proprietary  and  Confiden1al   23   Connect  Unit  Tests   §  Associate  tests  with  Code  and  Requirements   §  Naming  Conven1ons  should  have  meaning   §  Use  code  comment  tags  @task  @pr  @fr   §  Use  check-­‐in  comments  @task  @pr  @fr   §  Improve  change-­‐based  tes1ng  
  • 24. Paraso&  Proprietary  and  Confiden1al   24  Paraso&  Proprietary  and  Confiden1al   24   Specific  Genera1on   §  Don’t  be  lured  by  100%  coverage   §  Auto  asser1ons  are  not  meaningful  unless   validated   §  Review  the  tests  as  you  work  on  the  code  
  • 25. Paraso&  Proprietary  and  Confiden1al   25  Paraso&  Proprietary  and  Confiden1al   25   Code  Review  Test   §  Code  for  unit  tests  should  be  reviewed   §  Consider  doing  test-­‐design  review   §  Ensures  you’re  tes1ng  what  you  think  you  are   §  Helps  reduce  noise   §  Helps  improve  understanding   §  Review  the  code  and  the  test  code  together  
  • 26. Paraso&  Proprietary  and  Confiden1al   26  Paraso&  Proprietary  and  Confiden1al   26   Tes1ng  Excep1on  Handling   §  Frequently  Skipped   §  Prevents  crashes   §  Prevents  death  spiral   §  Rule  of  thirds   §  1/3  basic  func1onality   §  1/3  advanced  features  /  infrequent  serngs   §  1/3  error  handling  
  • 27. Paraso&  Proprietary  and  Confiden1al   27  Paraso&  Proprietary  and  Confiden1al   27   All  About  Asser1ons   §  Verifies  that  the  code  behaves  as  intended   §  True/false   §  Null  or  not  null   §  Specific  values   §  Complex  condi1ons  
  • 28. Paraso&  Proprietary  and  Confiden1al   28  Paraso&  Proprietary  and  Confiden1al   28   Why  Assert?   §  Excuses:   §  My  code  already  has  console  output   §  I  can  check  it  visually/manually   §  Binary  output  (pass/fail)   §  Part  of  overall  test  suite   §  No  human  interven1on  
  • 29. Paraso&  Proprietary  and  Confiden1al   29  Paraso&  Proprietary  and  Confiden1al   29   Asser1on  failures   Introduced  coding  error   • Fix  the  new  code   Func1onality  changed   • Update  the  asser1on     Improper  asser1on   • Comment  it  out  
  • 30. Paraso&  Proprietary  and  Confiden1al   30  Paraso&  Proprietary  and  Confiden1al   30   Asser1on  Policy   §  Assign  failures  as  tasks   §  Author  of  the  test  or  of  the  changed  code   §  Try  to  reach  developer  that  has  the  highest   chance  to  understand  the  change   §  Developer  assesses  failure:   §  Bug  (fix)   §  Changed  func1onality  (update  asser1on)   §  Bad  asser1on  (improve  or  remove)  -­‐  don’t  delete;   instead,  comment  out  
  • 31. Paraso&  Proprietary  and  Confiden1al   31  Paraso&  Proprietary  and  Confiden1al   31   What  to  assert   §  Ease  of  crea1ng  asser1ons  leads  to  poor   choices   §  Anything  CAN  be  checked  –  but  should  it  be?   §  Asser1ons  should  be  connected  to  what   you’re  trying  to  test   §  Asser1ons  should  be  logically  invariant   §  Check  values  by  range,  not  equivalence   §  “What  do  I  expect  here  logically?”  
  • 32. Paraso&  Proprietary  and  Confiden1al   32  Paraso&  Proprietary  and  Confiden1al   32   Asser1on  Example:  Java   public  Integer  getNumber()  {   Scanner  input  =  new  Scanner(  System.in  );       System.out.print(  "Enter  a  number  between  0  and  10:  "  );       int  number  =  input.nextInt();       //  assert  that  the  absolute  value  is  >=  0       assert  (  number  >=  0  &&  number  <=  10  )  :  "bad  number:  "  +  number;       return  number   }    
  • 33. Paraso&  Proprietary  and  Confiden1al   33  Paraso&  Proprietary  and  Confiden1al   33   How  to  recognize  bad  asser1ons   §  How  o&en  do  you  WANT  to  manually  verify  an   asser1on?   §  Daily  or  near-­‐daily  checking  indicates  poor   asser1on.   §  Troublesome  possibili1es:   §  Date   §  User  or  machine  name   §  OS     §  Filesystem  names  and  paths  
  • 34. Paraso&  Proprietary  and  Confiden1al   34  Paraso&  Proprietary  and  Confiden1al   34   Missing  Asser1ons   §  Error  was  found  a&er  code  changed   §  Test  suite  never  caught  the  error   §  Update  unit-­‐test  with  new  asser1on   §  Write  new  unit  tests  as  necessary  
  • 35. Paraso&  Proprietary  and  Confiden1al   35  Paraso&  Proprietary  and  Confiden1al   35   Cleaning  It  Up  
  • 36. Paraso&  Proprietary  and  Confiden1al   36  Paraso&  Proprietary  and  Confiden1al   36   The  Challenge:  Management’s  Perspec1ve   §  Need  tests  to  reduce  risks   §  Tes1ng  takes  1me  from   features/fixes   §  Not  enough  1me   §  Not  enough  people   §  Tests  and  reports  lack  context  
  • 37. Paraso&  Proprietary  and  Confiden1al   37  Paraso&  Proprietary  and  Confiden1al   37   The  Challenge:  Development’s  Perspec1ve   §  Hundreds  of  failing  or   broken  tests   §  Test  requirements  unclear   §  Exis1ng  tests  are  dubious   §  Deadline  pressure  
  • 38. Paraso&  Proprietary  and  Confiden1al   38  Paraso&  Proprietary  and  Confiden1al   38   Spring  Cleaning  Solu1on   §  Throw  out  the  useless,  old  junk   §  Iden1fy    and  eliminate  “noisy”  tests   §  Organize  the  remaining  chores   §  Priori1ze  unit  test  tasks   §  Keep  it  clean   §  Establish  and  follow  a  rou1ne  test  maintenance  plan  
  • 39. Paraso&  Proprietary  and  Confiden1al   39  Paraso&  Proprietary  and  Confiden1al   39   Throw  out  the  Junk:  Iden1fying  Noisy  Tests   §  Tests  that  are  fragile   §  Pass/Fail/Incomplete  results  frequently  change   §  Frequent  changes  are  required  to  keep  up-­‐to-­‐date   §  Tests  that  are  outdated   §  More  than  “n”  releases  have  occurred  despite  this  test  failure   §  The  test  applies  to  legacy  code  that  is  frozen   §  The  test  has  not  been  executed  for  “x”  period  of  1me   §  Tests  that  are  unclear   §  It  takes  more  than  5  minutes  to  understand  why  the  test  exists   §  The  failure  message  is  incorrect/unhelpful/irrelevant   §  There  is  no  associated  requirement  or  defect   §  Be  merciless!  
  • 40. Paraso&  Proprietary  and  Confiden1al   40  Paraso&  Proprietary  and  Confiden1al   40   Organize  Chores:  Priori1ze  Tasks  with  Policy   §  All  tasks  are  created  equal   §  Some  tasks  are  more  equal  than  others   §  Policies  establish  priori1za1on  and  assignment  
  • 41. Paraso&  Proprietary  and  Confiden1al   41  Paraso&  Proprietary  and  Confiden1al   41   Keep  it  Clean:  Establish  a  Rou1ne  Process   §  Management  and  Development  need  to  co-­‐define  a  Policy   §  Clear  tes1ng  goals  that  1e  tests  to  business  needs   §  Clear  delinea1on  of  responsibility   §  Test  crea1on  and  dele1on   §  Test  failure  resolu1on   §  Naming  conven1ons   §  Peer  review   §  Clear  and  frequent  communica1on   §  Understand  the  technical  and  business  impact   §  Enhance  traceability  to  project  requirements   §  Ask  ques1ons   §  Focus  on  safety/quality,  not  coverage   §  Keep  the  number  of  tests  minimal   §  Run  all  tests  on  a  regularly  scheduled,  frequent  basis   §  Clean  as  you  go  
  • 42. Paraso&  Proprietary  and  Confiden1al   42  Paraso&  Proprietary  and  Confiden1al   42   Spring  Cleaning  Recap   §  Find  and  delete  “noisy”  tests   §  Use  policies  to  priori1ze,  assign,  and  plan   §  Co-­‐design  and  follow  a  process  to  keep  it  clean  
  • 43. Paraso&  Proprietary  and  Confiden1al   43  Paraso&  Proprietary  and  Confiden1al   43   §  Web   §  hjp://www.paraso&.com/jsp/resources   §  Blog   §  hjp://alm.paraso&.com   § Social   § Facebook:  hjps://www.facebook.com/paraso&corpora1on   § Twijer:  @Paraso&  @MustRead4Dev  @CodeCurmudgeon   § LinkedIn:  hjp://www.linkedin.com/company/paraso&   §  Google+:  +Paraso&  +ArthurHickenCodeCurmudgeon   §  Google+  Community:  Development  Tes1ng  Because  its  Bejer