pairwise(tes*ng:(whatitis,(...

65
#PairOrNot #PairWiseTesting @XBOSoft @philiplew Pairwise Tes*ng: What It Is, When to Use and Not to Use #PairOrNot #PairWiseTes*ng @XBOSo= @philiplew @QAIGlobal

Upload: others

Post on 02-Jun-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Pairwise  Tes*ng:  What  It  Is,  When  to  Use  and  Not  to  Use  

 #PairOrNot  #PairWiseTes*ng  

@XBOSo=  @philiplew  @QAIGlobal  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Meet Your Instructor •  Philip Lew

– Software developer – Software product manager, DW product – CEO, software QA services company

•  Relevant specialties and education – Software Usability / UX design and

evaluation – Software Measurement and Metrics – Cornell University B.S. and M.Eng in

Operations Research 2  ©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Today’s  Discussion  

3  

1.  The  nuts  and  bolts  of  pairwise  tes*ng    2.  How  to  incorporate  into  your  test  design  and  

planning    3.  Introduc*on  to  tools  for  pairwise  tes*ng    

–  ACTS  

4.  When  and  when  not  to  use  pairwise  tes*ng  – Advantages  and  limita*ons  

5.  Going  beyond  pairwise  tes*ng,  taking  it  to  the  next  level  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

WE  LIVE  INTO  OUR  EXPECTATIONS  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   4  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Session Spirit and Expectations •  I can’t read… •  Slides for you as a take-away (many)

– You can write me and I’ll send these to you

•  Interactive – Lots of exercises and chances to learn

5  ©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

HOW  MANY  OF  YOU  USE  A  COMBINATORIAL  TESTING  TECHNIQUE?    YES/NO  

POLL  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   6  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Today’s  Discussion  

7  

1.  The  nuts  and  bolts  of  pairwise  tes*ng    2.  How  to  incorporate  into  your  test  design  and  

planning  –  Some  tools  for  pairwise  tes*ng  

3.  When  and  when  not  to  use  pairwise  tes*ng  –  Advantages  and  limita*ons  

4.  Going  beyond  pairwise  tes*ng,  taking  it  to  the  next  level  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

The  Problem  

•  Many  defects  only  occur  with  one  factor  or  variable.  

•  Or  when  a  combina*on  of  2  or  more  inputs  or  events  occur  that  interact  with  each  other.  

•  Tes*ng  every  combina*on  is  impossible.  • What  common  situa*ons  have  you  run  into  this  problem?  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   8  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Some  Examples  

•  Plaaorm  stacks  •  So=ware  configura*on  op*ons  •  Mobile  plaaorm  •  Any  others?  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   9  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Typical  Problem  •  An  applica*on  with  simple  list  box  with  10  elements  (Let's  say  0,1,2,3,4,5,6,7,8,9)  along  with  a  checkbox,  radio  bugon,  Text  Box  and  OK  Bugon.  The  Constraint  for  the  Text  box  is  it  can  accept  integer  values  only  between  1  and  100.  – List  Box  -­‐  0,1,2,3,4,5,6,7,8,9  – Check  Box  -­‐  Checked  or  Unchecked  – Radio  Bugon  -­‐  ON  or  OFF  – Text  Box  –  1  to  100  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   10  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

How  Many  Test  Cases?  

•  List  Box  =  10  •  Check  Box  =  2  •  Radio  Bugon  =  2  •  Text  Box  =  100  

•  Total  Number  of  Test  Cases  using  Cartesian  Method  :  10*2*2*100  =  4000  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   11  

How can we reduce the # of test cases?

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Using  Equivalence  Par**oning  

•  We  can  consider  the  list  box  values  as  0  and  others    •  Radio  bugon  and  check  box  values  cannot  be  reduced.  Each  one  of  them  will  have  2  combina*ons  (ON  or  OFF).    

•  The  Text  box  values  can  be  reduced  into  three  inputs  (Valid  Integer,  Invalid  Integer,  Alpha-­‐Special  Character).  

•  Calcula*ng  the  number  of  cases  :  2*2*2*3  =  24  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   12  

That’s still a lot L

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Problems  with  Equivalence  Par**oning  

•  For  tes*ng  printers  instead  of  tes*ng  with  every  single  model  of  printer,  we  can  set  all  Hewleg-­‐Packard  inkjet  printers  as  roughly  equivalent  as  a  par**on,  and  all  Canon  inkjets  as  another.  Or  sepasrate  by  printer  type,  laser  versus  inkjet…  

•  This  can  save  us  a  *me  and  energy,  BUT  •  We  must  know  how  to  create  classes  -­‐  what  is  equivalent  to  what?  

•  We  must  understand  the  technology  and  domain  to  be  tested  to  create  valid  par**ons.  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   13  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Pairwise  Tes*ng  –  (All-­‐Pairs  Tes*ng)  

•  The  reasoning:  the  simplest  bugs  in  a  program  are  generally  triggered  by  a  single  input  parameter/variable.    

•  The  next  simplest  category  of  bugs  consists  of  those  dependent  on  interac*ons  between  pairs  of  parameters,  which  can  be  discovered  with  pairwise/all-­‐pairs  tes*ng.    

•  Bugs  involving  interac*ons  between  three  or  more  parameters  are  less  common,  and  also  more  expensive-­‐harder  to  find.  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   14  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Let’s  Use  Pairwise  1.  Order  the  parameters  such  that  one  with  most  number  of  

values  is  the  first  and  the  least  is  placed  as  the  last  variable.  2.  Now,  start  filling  the  table  column  by  column.  Textbox  (3).  3.  The  next  column  under  discussion  would  be  check  box.  

Again,  Check  box  can  take  2  values.  List  box  can  take  2  values.  

4.  Now,  we  need  to  ensure  that  we  cover  all  combina*ons  between  list  box  and  Check  box.  

5.  Now,  we  will  use  the  same  strategy  for  checking  the  Radio  Bugon.  It  can  take  2  values.  

6.  Verify  if  all  the  pair  values  are  covered.  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   15  

Listbox (0, Others) Radio (On, Off) Checkbox (Check, Uncheck) Textbox(valid Int, Invalid int, Alpha)

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Pairwise  Results  

•  Exhaus*ve  Combina*on:  >  4000  Test  Cases.  •  Equivalence  par**oning:  24  Test  Cases.  •  Pair  Wise:  6  Test  Cases.  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   16  

TEXT  BOX   LIST  BOX   CHECK  BOX   RADIO  BUTTON  

VALID  INT   0   CHECK   ON  

VALID  INT   OTHERS   UNCHECK   OFF  

INVALID  INT   0   UNCHECK   ON  

INVALID  INT   OTHERS   CHECK   OFF  

ALPHA   0   CHECK   OFF  

ALPHA   OTHERS   UNCHECK   OFF  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

LET’S  GO  AT  IT  AGAIN!  

Actually,  enumera*ng  all  pairs  is  a  mathema*cal  challenge…  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   17  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Pairwise  TesDng  

Problem:  Test  System  S  Inputs    X  =  1,2    Y  =  Q,R    Z  =  5,6  

   There  are  23  =  8  possible  combina*ons  

System S

X Y Z

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   18  

X   Y   Z  

1   Q   5  

1   R   5  

1   Q   6  

1   R   6  

2   Q   5  

2   R   5  

2   Q   6  

2   R   6  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Pairwise  TesDng  

8 Test Cases You can get rid of Test Case 2 (T2) •  {1, -, 5} is covered in T1 •  {1, R, -} is covered in T4 •  { -, R, 5} is covered in T6

Test  ID   X   Y   Z  

T1   1   Q   5  

T2   1   R   5  

T3   1   Q   6  

T4   1   R   6  

T5   2   Q   5  

T6   2   R   5  

T7   2   Q   6  

T8   2   R   6  

1, R, R, 5

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   19  

Do  This  Now:  •  How  many  more  test  cases  can  

you  get  rid  of?  •  List  the  Test  cases  you  would  

keep.  •  Time  yourself.  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Pairwise  TesDng  Savings  

Test  ID   X   Y   Z  

T1   1   Q   5  

T2   1   R   5  

T3   1   Q   6  

T4   1   R   6  

T5   2   Q   5  

T6   2   R   5  

T7   2   Q   6  

T8   2   R   6  

Test  ID   X   Y   Z  

T1   1   Q   5  

T4   1   R   6  

T6   2   R   5  

T7   2   Q   6  

8 Test Cases Pairwise testing 4 Test Cases

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   20  

Darn, we only save ½ ½ is a lot but what does this tell us?

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

TOOLS  MAKE  THINGS  EASIER  Luckily…  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   21  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

No  Lack  of  Tools  •  ACTS  -­‐  AUTOMATED  COMBINATORIAL  TESTING  FOR  SOFTWARE  (ACTS)  •  Automa*c  Efficient  Test  Generator  or  AETG™  •  Allpairs  -­‐  Free  downloadable  executable  wrigen  in  python.  •  All  Pairs  -­‐  Free.  Command-­‐line  executable  based  on  a  Perl  script.  By  

Sa*sfice.  •  Hexawise  -­‐  Comprehensive  pairwise  and  combinatorial  test  genera*on  

solu*on.  So=ware  as  a  service.  Free  demo  accounts.  •  Jenny  -­‐  Free.  Executable  (C  code).  •  pairwise  -­‐  Free,  open  source  using  Ruby.  •  PICT  (Pairwise  Independent  Combinatorial  Tes*ng)  tool  •  rdExpert  –  commercial  so=ware.  Free  trial  available.  •  SmartTest  Commercial,  executable  so=ware.  •  Testcover  -­‐  Web  based.  Free  trial.  •  VPTag  -­‐  Free  downloadable  executable.  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   22  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew ©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   23  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew ©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   24  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew ©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   25  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

ACTS  –  Results  Output  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   26  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

ACTS  –  Results  Output  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   27  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Pairwise  Tes*ng  

1.  Pairwise  tes*ng  protects  against  pairwise  (2  factor)  bugs.  

2.  Drama*cally  reduces  the  number  tests  to  perform.  3.  Pairwise  bugs  represent  the  majority  of  

combinatory  bugs  4.  Available  tools  means  you  no  longer  need  to  create  

these  tests  by  hand.  

28  ©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   28  

Good Stuff, That’s All I need to know right?

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

WE’RE  DONE  FOR  TODAY  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   29  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

LIMITATIONS  OF  PAIRWISE  TESTING  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   30  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Limita*ons  of  Pairwise  Tes*ng  

1.  Assumes  random  distribu*on  of  tests  with  no  focus  on  important  tests  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   31  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Applying  Simple  Network  Theory  

•  How  many  nodes  do  you  need  to  kill  to  take  down  the  network?  

•  Why  did  you  choose  the  nodes  you  did?  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   32  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Blind  Implementa*on  of    Pairwise  Tes*ng  

•  Represents  a  random  agack  on  the  network  •  Does  not  focus  on  hub  nodes  (important  areas  or  defect-­‐laden)  

•  What  are  your  ‘hub’  nodes  in  your  so=ware?  – Where  is  it  vulnerable  to  failure?  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   33  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Limita*ons  of  Pairwise  Tes*ng  

1.  Assumes  random  distribu*on  of  tests  with  no  focus  on  important  tests  

2.  Some  parameters  are  con*nuous  variables  and  need  to  be  discre*zed  to  dis*nct  values.  

3.  Some  variables  are  dependent  on  others.  4.  How  to  determine  the  correct  result  that  

should  be  expected  for  each  of  the  combina*ons  (000’s)  of  test  inputs?  

34  ©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   34  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Pairwise  Tes*ng  Fails  When  

•  Not  selec*ng  the  right  input.  •  You  don’t  have  a  good  enough  oracle  (you  don’t  know  what  is  the  correct  result).  

•  High  probability  combina*ons  not  covered  enough.  

•  Not  knowing  how  the  variables  interact  (constraints  and  dependencies).  

35  ©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   35  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Where Were We?

________  ________  _________  

36  ©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.  

Problem Pairwise Testing

Combinatorial Testing

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Combinatorial  Tes*ng  •  Pairwise  Tes*ng  is  a  subset  of  Combinatorial  tes*ng    •  Pairwise  (2-­‐way  combina*ons)  tes*ng  is  some*mes  used  to  

obtain  reasonably  good  results  at  low  cost,  but  pairwise  tes*ng  may  miss  10%  to  40%  of  the  bugs.  

•  Not  sufficient  for  mission-­‐cri*cal  so=ware.    •  Empirical  data  gathered  by  NIST  and  others  suggest  that  

so=ware  failures  are  triggered  by  only  a  few  variables  interac*ng  (6  or  fewer).    

•  Combinatorial  tes*ng  beyond  2-­‐way  has  been  limited,  due  to  a  lack  of  good  algorithms  for  higher  interac*on  levels  (4-­‐6)  

•  New  algorithms  have  made  combinatorial  tes*ng  beyond  pairwise  prac*cal.  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   37  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew ©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   38  

https://en.wikipedia.org/wiki/All-pairs_testing

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

What  If?  •  What  if  a  failure  is  triggered  by  a  combina*on  of  3,  4,  or  more  variables?    

•  Pairwise  tests  may  not  detect  these  defects.  •  Is  tes*ng  all  4-­‐way  combina*ons  (T=4)  enough  to  detect  all  errors?  

•  What  degree  of  interac*on  (strength)  ,  i.e.  2,3,4,5..  occurs  in  real  failures?  

•  What  is  my  tolerance  for  risk?  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   39  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

T-­‐Way  Tes*ng  #  Interac*ng  Parameters  Leading  to  Failure  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   40  

What is your risk tolerance? What is it dependent on?

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

“FLY  WITH  US,  WE  FOUND  90%  OF  THE  DEFECTS”.  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   41  

I’ll fly with you!

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

How  much  risk  can  we  tolerate?  

•  At  first  glance?    •  210  =  1,024  possible  combina*ons!  •  To  reduce  that,  we  can  use  T-­‐Way  according  to  our  goals  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   42  

About 90% with 3-Way Interactions

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

APPLYING  COMBINATORIAL  TESTING  TECHNIQUES  

Input  Parameters  (Variables)  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   43  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Word  Processing  Input  Variables  •  User  can  select  10  ways  to  modify  some  highlighted  text:  subscript,  superscript,  underline,  bold,  italic,  strikethrough,  emboss,  shadow,  small  caps,  or  all  caps.    

•  System  must  process  the  input  and  modify  the  text  on  the  screen  correctly.    

•  Most  op*ons  can  be  combined,  such  as  bold  and  small  caps,  but  some  are  incompa*ble,  such  as  subscript  and  superscript.  

•  How  many  combina*ons?    ©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   44  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

APPLYING  COMBINATORIAL  TESTING  TECHNIQUES  

Mobile  Tes*ng  Plaaorm  prolifera*on  AND  OS  op*ons  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   45  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Android  Op*on  Prolifera*on  Parameter   Values   #  Values  

HardKeyboardHidden   No,  Undefined,  Yes   3  

KeyboardHidden   No,  Undefined,  Yes   3  

Keyboard   12Key,  NoKeys,  Querty,  Undefined   4  

Naviga*onHidden   No,  Undefined,  Yes   3  

Naviga*on   Dpad,  NoNav,  Trackball,  Undefined,  Wheel  

5  

Orienta*on   Landscape,  Portrait,  Square,  Undefined   4  

ScreenLayout_Long   Mask,  No,  Undefined,  Yes   4  

ScreenLayout_Size   Large,  Mask,  Normal,  Small,  Undefined   5  

TouchScreen   Finger,  Notouch,  Stylus,  Undefined   4  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   46  

3x3x4x3x5x4x4x5x4=? 172,800

What  Would  You  Reduce?  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

What  Would  You  Reduce?  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   47  

Parameter   Values   #  Values  

HardKeyboardHidden   No,  Undefined,  Yes   3  

KeyboardHidden   No,  Undefined,  Yes   3  

Keyboard   12Key,  NoKeys,  Querty,  Undefined   4  

Naviga*onHidden   No,  Undefined,  Yes   3  

Naviga*on   Dpad,  NoNav,  Trackball,  Undefined,  Wheel  

5  

Orienta*on   Landscape,  Portrait,  Square,  Undefined   4  

ScreenLayout_Long   Mask,  No,  Undefined,  Yes   4  

ScreenLayout_Size   Large,  Mask,  Normal,  Small,  Undefined   5  

TouchScreen   Finger,  Notouch,  Stylus,  Undefined   4  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

How  Can  T-­‐Way  Help?  t   #  Tests   %  of  Total  (172k)   %  Defects  Found  

2   29   .02   76%  

3   137   .08   95%  

4   625   0.4   97%  

5   2532   1.5   99%  

6   9168   5.3   100%  **  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   48  

•  The  savings  as  a  percentage  of  exhaus*ve  tes*ng  depends  on  the  number  of  parameters  and  the  #  of  values  for  the  parameters.  

•  With  larger  systems  the  savings  can  be  enormous.  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Key  Factors  When  Using  T-­‐Way  •  Number  of  parameters  •  Number  of  values  per  parameter  •  T  (also  called  interac*ons,  where  T=2  for  pairwise)  •  Number  of  tests  increases  rapidly  as  the  value  of  t  is  increased  

•  Rate  of  increase  depends  on  the  number  of  values  per  parameter.    –  Binary  variables,  result  in  far  fewer  tests  than  parameters  with  many  values  each.    

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   49  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

APPLYING  COMBINATORIAL  TESTING  TECHNIQUES  

Configura*on  Tes*ng    -­‐    Let’s  go  back  and  look  at  this  again!  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   50  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Configura*on  Tes*ng  -­‐  Plaaorms  How  many  configura*ons  are  there?  •  OS  (Windows,  Apple  OSX,  Linux)  •  Browser  (IE,  Firefox)  •  Protocol  (IPv4,  IPv6)  •  Processor  (Intel,  AMD)  •  Database  (MySQL,  Sybase,  Oracle)  •  What  others  are  you  used  to?  •  How  many  possible  plaaorms?  •  3x2x2x2x3=72    

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   51  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Configura*on  Tes*ng  –  Plaaorms  Pairwise  Configura*ons  (WOW!)  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   52  

Test  ID   OS   Browser   Protocol   CPU   DBMS  1  Win

 MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

1  Win  MySQL  IE  IPv4  Intel  10  

2  Win  Sybase  FFX  IPv6  AMD  10  

3  OSX  MySQL  FFX  IPv4  AMD  8  

4  OSX  Sybase  IE  IPv6  Intel  8  

5  Linux  Oracle  IE  IPv4  AMD  8  

6  Linux  Oracle  FFX  IPv6  Intel  7  

7  Win  MySQL  ~IE  IPv6  ~AMD  1  

8  Win  Sybase  ~FFX  IPv4  ~Intel  1  

9  OSX  Oracle  ~IE  ~IPv4  ~Intel  1  

10  Linux  MySQL  ~FFX  ~IPv6  ~Intel  1  

11  Linux  Sybase  ~IE  ~IPv4  ~AMD  1  

12  Win  Oracle  ~FFX  ~IPv6  ~AMD  1  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Variable  Interac*ons  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   53  

•  Some  combina*ons  don’t  exist  or  invalid  – OSX  and  IE  

•  Can’t  simply  delete  them,  why?  •  Need  to  delete  and  supplement  •  What  other  interac*ons  or  interdependencies  can  you  think  of?  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

USING  TOOLS  Using  ACTS  Demonstra*on  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   54  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Configura*ons  Revisited  

Parameter  (variable)  

Values  

OS   Windows,  OSX,  Linux  Browser   IE,  Firefox  Protocol   IPv4,  IPv6  CPU   Intel,  AMD  DBMS   MySQL,  Sybase,  Oracle  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   55  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Using  ACTS  t   #  tests   %  of  Total   %  defects  found  

2   10   14   76%  

3   18   25   95%  

4   36   50   97%  

5   72   100   99%  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   56  

We could test all these platforms. It’s a lot, but doable

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

ACTS  with  T=3  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   57  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Invalid  Combina*ons  -­‐  Interac*ons  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   58  

Test  ID   OS   Browser   Protocol   CPU   DBMS  

1   Win   IE   IPv4   Intel   MySQL  

2   Win   FFX   IPv6   AMD   Sybase  

3   Win   IE   IPv6   Intel   Oracle  

4   OSX   FFX   IPv4   AMD   MySQL  

5   OSX   IE   IPv4   Intel   Sybase  

6   OSX   FFX   IPv4   Intel   Oracle  

7   Linux   IE   IPv6   AMD   MySQL  

8   Linux   FFX   IPv4   Intel   Sybase  

9   Linux   FFX   IPv4   AMD   Oracle  

10   OSX   FFX   IPv6   AMD   Oracle  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

ACTS  with  T=2  and  Contraints  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   59  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Using  Pairwise  and  T-­‐Way  Together  

•  Using  Pairwise  can  help  us  find  many  …  but  not  all  and  depending  on  our  risk  tolerance,  maybe  not  enough  

•  Using  T-­‐Way  can  help,  but  each  T+1  adds  a  lot  of  effort…  

•  Best  to  use  T-­‐Way  with  modified  set  of  parameters  and  values  according  to  our  experience  and  exper*se  based  on  the  situa*on  and  goals  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   60  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Understand  Pairwise  and  T-­‐Way  in  Perspec*ve  

•  Where  do  you  have  many  combina*ons?  

•  Where  do  you  have  dis*nct  inputs?  Either  naturally  or  ability  to  create  equivalence  classes.  

•  Where  do  you  have  many  parameter  values?  

•  Know  the  expected  results  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   61  

Test  Strategy  

Test  Design  

T-­‐Way  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Combining  Combinatorial  Applica*ons  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   62  

System  Under  Test  

Inputs  (test  cases)  

Configura*ons  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Numerous  Ways/Places  We  can  use  Combinatorial  Tes*ng  

Telecomm  How  many  configura*ons  are  there?  •  Types  of  calls  (local,  LD,  interna*onal)  •  Types  of  payment  (phone  card,  800,  900,  credit  card,  monthly  bill)  

•  Access  (ISDN,  T1,  VOIP,  PBX)  •  Billing  Server  (Windows,  Linux/MySQL,  Oracle)    

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   63  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Reading  Material  1.  All  Pairs  Tes*ng,  Wikipedia,  hgps://en.wikipedia.org/wiki/All-­‐pairs_tes*ng  2.  AUTOMATED  COMBINATORIAL  TESTING  FOR  SOFTWARE  (ACTS),  NIST,  

hgp://csrc.nist.gov/groups/SNS/acts/index.html  3.  Combinatorial  Tes*ng:  Ra*onale  and  Impact,  Rick  Kuhn,  

hgp://csrc.nist.gov/groups/SNS/acts/documents/kuhn-­‐icst-­‐14.pdf  4.  Design  of  Experiments,  Wikipedia,  hgps://en.wikipedia.org/wiki/Design_of_experiments  5.  Efficient  Tes*ng  Using  the  Pairwise  Approach,  Bernie  Berger,  

hgp://www.s*ckyminds.com/ar*cle/efficient-­‐tes*ng-­‐using-­‐pairwise-­‐approach  6.  An  Inves*ga*on  of  the  Applicability  of  Design  of  Experiments  to  So=ware  Tes*ng,  D.  Richard  Kuhn,  M.  Reilly,  

hgp://csrc.nist.gov/staff/Kuhn/kuhn-­‐reilly-­‐02.pdf  7.  Linked:  How  Everything  Is  Connected  to  Everything  Else  and  What  It  Means  for  Business,  Science,  and  Everyday  

Life,  Albert-­‐Laszlo  Barabasi  8.  Pairwise  Tes*ng,  A  Best  Prac*ce  That  Isn’t,  James  Bach,  

hgp://www.tes*ngeduca*on.org/wtst5/PairwisePNSQC2004.pdf  9.  Pairwise  Tes*ng  for  Dummies,  David  Fries,  hgp://blogs.msdn.com/b/davfries/archive/2004/06/17/158900.aspx  10.  Pairwise  Tes*ng  in  the  Real  World,  hgps://msdn.microso=.com/en-­‐us/library/cc150619.aspx  11.  Pairwise  Tes*ng,  Michael  Bolton,  hgp://www.developsense.com/pairwiseTes*ng.html  12.  PRACTICAL  COMBINATORIAL  TESTING,  D.  Richard  Kuhn,  Raghu  N.  Kacker,  Yu  Lei,  Na*onal  Ins*tute  of  Standards  

and  Technology    13.  Tutorial  on  All  Pairs  Tes*ng,  hgp://www.tutorialspoint.com/so=ware_tes*ng_dic*onary/all_pairs_tes*ng.htm  

©  2016  XBOSo=,  Inc.-­‐  All  Rights  Reserved.   64  

#PairOrNot #PairWiseTesting @XBOSoft @philiplew

Thanks  Ques*ons  and  Answers

Philip Lew @philiplew [email protected]

Some resources: http://www.xbosoft.com/knowledge_center/

www.xbosoft.com