Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Efficient mutation analysis of relational datab...

Efficient mutation analysis of relational database structure using mutant schemata and parallelisation

Interested in learning more about this topic? Visit this web site to read the paper: https://www.gregorykapfhammer.com/research/papers/Wright2013/

Gregory Kapfhammer

March 18, 2013
Tweet

More Decks by Gregory Kapfhammer

Other Decks in Research

Transcript

  1. Efficient Mutation Analysis of Relational Database Structure Using Mutant Schemata

    and Parallelisation Chris J. Wright Gregory M. Kapfhammer Phil McMinn Mutation 2013
  2. Chris J. Wright - [email protected] 1 CREATE TABLE T (

    2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); Database Schema
  3. Chris J. Wright - [email protected] 1 CREATE TABLE T (

    2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); Database Schema Tables
  4. Chris J. Wright - [email protected] 1 CREATE TABLE T (

    2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); Database Schema Columns
  5. Chris J. Wright - [email protected] 1 CREATE TABLE T (

    2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); Database Schema Constraints
  6. Chris J. Wright - [email protected] 1 CREATE TABLE T (

    2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); Database Schema How do we know this is correct?
  7. Chris J. Wright - [email protected] DBMS Application Web Server Third

    Party Database Schema Why Test Database Structure?
  8. Chris J. Wright - [email protected] DBMS Application Web Server Third

    Party Database Schema ✗ Why Test Database Structure?
  9. Chris J. Wright - [email protected] DBMS Application Web Server Third

    Party Database Schema ✗ ✗ Why Test Database Structure?
  10. Chris J. Wright - [email protected] DBMS Application Web Server Third

    Party Database Schema ✗ ✗ ✗ Why Test Database Structure?
  11. Chris J. Wright - [email protected] DBMS Application Web Server Third

    Party Database Schema ✗ ✗ ✗ ✗ Why Test Database Structure?
  12. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); Database Insert Statements
  13. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); Database Insert Statements
  14. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); Database Insert Statements
  15. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ Database Insert Statements
  16. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ Database Insert Statements
  17. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); Database Insert Statements
  18. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ Database Insert Statements
  19. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ Database Insert Statements
  20. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); Database Insert Statements
  21. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); ✓ Database Insert Statements
  22. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); ✓ Database Insert Statements
  23. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); ✓ Database Insert Statements INSERT INTO S(X, Y, Z) VALUES('a', 'b', 'a');
  24. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); ✓ Database Insert Statements INSERT INTO S(X, Y, Z) VALUES('a', 'b', 'a'); ✗
  25. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); ✓ Database Insert Statements INSERT INTO S(X, Y, Z) VALUES('a', 'b', 'a'); ✗
  26. Chris J. Wright - [email protected] Mutating the Structure 1 CREATE

    TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, ) 9 REFERENCES T (A, B) 10 ); Y Z
  27. Chris J. Wright - [email protected] Mutating the Structure 1 CREATE

    TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, ) 9 REFERENCES T (A, B) 10 ); Y Z
  28. Chris J. Wright - [email protected] Mutating the Structure 1 CREATE

    TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, ) 9 REFERENCES T (A, B) 10 ); Y Z
  29. Chris J. Wright - [email protected] Mutating the Structure 1 CREATE

    TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, ) 9 REFERENCES T (A, B) 10 ); Y Z
  30. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 );
  31. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 );
  32. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); Database (mutated)
  33. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); Database (mutated) Insert Statements
  34. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); Database (mutated) Insert Statements
  35. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ Database (mutated) Insert Statements
  36. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ Database (mutated) Insert Statements
  37. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); Database (mutated) Insert Statements
  38. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ Database (mutated) Insert Statements
  39. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ Database (mutated) Insert Statements
  40. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); Database (mutated) Insert Statements
  41. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); ✓ Database (mutated) Insert Statements
  42. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); ✓ Database (mutated) Insert Statements
  43. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); ✓ Database (mutated) Insert Statements INSERT INTO S(X, Y, Z) VALUES('a', 'b', 'a');
  44. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); ✓ Database (mutated) Insert Statements INSERT INTO S(X, Y, Z) VALUES('a', 'b', 'a'); ✓
  45. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); ✓ Database (mutated) Insert Statements INSERT INTO S(X, Y, Z) VALUES('a', 'b', 'a'); ✓
  46. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); ✓ Database (mutated) Insert Statements INSERT INTO S(X, Y, Z) VALUES('a', 'b', 'a'); ✓ Results are different
  47. Chris J. Wright - [email protected] Mutation Analysis 1 CREATE TABLE

    T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✓ INSERT INTO T(A, B, C) VALUES('a', 'a', 'a'); ✗ INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'b'); ✓ Database (mutated) Insert Statements INSERT INTO S(X, Y, Z) VALUES('a', 'b', 'a'); ✓ Mutant is killed
  48. Chris J. Wright - [email protected] 1 CREATE TABLE T (

    2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); The Problem? 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 );
  49. Chris J. Wright - [email protected] 1 CREATE TABLE T (

    2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); The Problem? 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 );
  50. Chris J. Wright - [email protected] 1 CREATE TABLE T (

    2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); The Problem? Many mutants to analyse
  51. Chris J. Wright - [email protected] 1 CREATE TABLE T (

    2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); The Problem? A time consuming process
  52. Chris J. Wright - [email protected] The Solution? Parallelisation Mutant Schemata

    Combine mutants into a ‘meta-mutant’ Analyse multiple mutants simultaneously
  53. Chris J. Wright - [email protected] Mutation Analysis Approaches Mutant Representation

    Parallelisation Strategy Schemata Normal “Original” Full “Full Schemata”
  54. Chris J. Wright - [email protected] Original Approach Create structure in

    database Execute insert statements Drop structure from database
  55. Chris J. Wright - [email protected] Original Approach Create structure in

    database Execute insert statements Drop structure from database
  56. Chris J. Wright - [email protected] Mutant Schemata Approach Create structure

    in database Execute insert statements Drop structure from database
  57. Chris J. Wright - [email protected] Mutant Schemata Approach Create structure

    in database Execute insert statements Drop structure from database
  58. Chris J. Wright - [email protected] Mutant Schemata Approach Create structure

    in database Execute insert statements Drop structure from database Reduce time creating/ dropping database
  59. Chris J. Wright - [email protected] Full Schemata Approach 1 CREATE

    TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 );
  60. Chris J. Wright - [email protected] Full Schemata Approach 1 CREATE

    TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES T (A, B) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 );
  61. Chris J. Wright - [email protected] Full Schemata Approach 1 CREATE

    TABLE mutant_1_T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE mutant_1_S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES mutant_1_T (A, B) 10 ); 1 CREATE TABLE mutant_2_T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 4 ); 5 6 CREATE TABLE mutant_2_S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES mutant_2_T (A, B) 10 );
  62. Chris J. Wright - [email protected] Full Schemata Approach 1 CREATE

    TABLE mutant_1_T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE mutant_1_S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES mutant_1_T (A, B) 10 ); 11 12 CREATE TABLE mutant_2_T ( 13 A CHAR, B CHAR, C CHAR, 14 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 15 ); 16 17 CREATE TABLE mutant_2_S ( 18 X CHAR, Y CHAR, Z CHAR, 19 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 20 REFERENCES mutant_2_T (A, B) 21 );
  63. Chris J. Wright - [email protected] Full Schemata Approach 1 CREATE

    TABLE mutant_1_T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE mutant_1_S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES mutant_1_T (A, B) 10 ); 11 12 CREATE TABLE mutant_2_T ( 13 A CHAR, B CHAR, C CHAR, 14 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 15 ); 16 17 CREATE TABLE mutant_2_S ( 18 X CHAR, Y CHAR, Z CHAR, 19 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 20 REFERENCES mutant_2_T (A, B) 21 );
  64. Chris J. Wright - [email protected] Full Schemata Approach 1 CREATE

    TABLE mutant_1_T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE mutant_1_S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES mutant_1_T (A, B) 10 ); 11 12 CREATE TABLE mutant_2_T ( 13 A CHAR, B CHAR, C CHAR, 14 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 15 ); 16 17 CREATE TABLE mutant_2_S ( 18 X CHAR, Y CHAR, Z CHAR, 19 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 20 REFERENCES mutant_2_T (A, B) 21 ); Database (mutated) Insert Statements
  65. Chris J. Wright - [email protected] Full Schemata Approach 1 CREATE

    TABLE mutant_1_T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE mutant_1_S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES mutant_1_T (A, B) 10 ); 11 12 CREATE TABLE mutant_2_T ( 13 A CHAR, B CHAR, C CHAR, 14 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 15 ); 16 17 CREATE TABLE mutant_2_S ( 18 X CHAR, Y CHAR, Z CHAR, 19 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 20 REFERENCES mutant_2_T (A, B) 21 ); Database (mutated) INSERT INTO S(X, Y, Z) VALUES('a', 'a', 'a'); Insert Statements
  66. Chris J. Wright - [email protected] Full Schemata Approach 1 CREATE

    TABLE mutant_1_T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE mutant_1_S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES mutant_1_T (A, B) 10 ); 11 12 CREATE TABLE mutant_2_T ( 13 A CHAR, B CHAR, C CHAR, 14 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 15 ); 16 17 CREATE TABLE mutant_2_S ( 18 X CHAR, Y CHAR, Z CHAR, 19 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 20 REFERENCES mutant_2_T (A, B) 21 ); Database (mutated) INSERT INTO mutant_1_S(X, Y, Z) VALUES('a', 'a', 'a'); Insert Statements
  67. Chris J. Wright - [email protected] Full Schemata Approach 1 CREATE

    TABLE mutant_1_T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE mutant_1_S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES mutant_1_T (A, B) 10 ); 11 12 CREATE TABLE mutant_2_T ( 13 A CHAR, B CHAR, C CHAR, 14 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 15 ); 16 17 CREATE TABLE mutant_2_S ( 18 X CHAR, Y CHAR, Z CHAR, 19 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 20 REFERENCES mutant_2_T (A, B) 21 ); Database (mutated) INSERT INTO mutant_1_S(X, Y, Z) VALUES('a', 'a', 'a'); ✓ Insert Statements
  68. Chris J. Wright - [email protected] Full Schemata Approach 1 CREATE

    TABLE mutant_1_T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE mutant_1_S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES mutant_1_T (A, B) 10 ); 11 12 CREATE TABLE mutant_2_T ( 13 A CHAR, B CHAR, C CHAR, 14 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 15 ); 16 17 CREATE TABLE mutant_2_S ( 18 X CHAR, Y CHAR, Z CHAR, 19 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 20 REFERENCES mutant_2_T (A, B) 21 ); Database (mutated) INSERT INTO mutant_1_S(X, Y, Z) VALUES('a', 'a', 'a'); ✓ Insert Statements
  69. Chris J. Wright - [email protected] Mutation Analysis Approaches Mutant Representation

    Parallelisation Strategy Schemata Normal “Original” Full “Full Schemata”
  70. Chris J. Wright - [email protected] Mutation Analysis Approaches Mutant Representation

    Parallelisation Strategy Schemata Normal “Original” Full “Full Schemata” Minimal “Minimal Schemata”
  71. Chris J. Wright - [email protected] Full Schemata Approach 1 CREATE

    TABLE mutant_1_T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE mutant_1_S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES mutant_1_T (A, B) 10 ); 11 12 CREATE TABLE mutant_2_T ( 13 A CHAR, B CHAR, C CHAR, 14 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 15 ); 16 17 CREATE TABLE mutant_2_S ( 18 X CHAR, Y CHAR, Z CHAR, 19 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 20 REFERENCES mutant_2_T (A, B) 21 );
  72. Chris J. Wright - [email protected] Full Schemata Approach 1 CREATE

    TABLE mutant_1_T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE mutant_1_S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 9 REFERENCES mutant_1_T (A, B) 10 ); 11 12 CREATE TABLE mutant_2_T ( 13 A CHAR, B CHAR, C CHAR, 14 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 15 ); 16 17 CREATE TABLE mutant_2_S ( 18 X CHAR, Y CHAR, Z CHAR, 19 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 20 REFERENCES mutant_2_T (A, B) 21 ); Mutated Tables
  73. Chris J. Wright - [email protected] Minimal Schemata Approach 1 CREATE

    TABLE mutant_1_S ( 2 X CHAR, Y CHAR, Z CHAR, 3 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 4 REFERENCES mutant_1_T (A, B) 5 ); 6 7 CREATE TABLE mutant_2_T ( 8 A CHAR, B CHAR, C CHAR, 9 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 10 ); Mutated Tables
  74. Chris J. Wright - [email protected] Minimal Schemata Approach 1 CREATE

    TABLE mutant_1_S ( 2 X CHAR, Y CHAR, Z CHAR, 3 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 4 REFERENCES mutant_1_T (A, B) 5 ); 6 7 CREATE TABLE mutant_2_T ( 8 A CHAR, B CHAR, C CHAR, 9 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 10 );
  75. Chris J. Wright - [email protected] Minimal Schemata Approach 1 CREATE

    TABLE mutant_1_S ( 2 X CHAR, Y CHAR, Z CHAR, 3 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 4 REFERENCES mutant_1_T (A, B) 5 ); 6 7 CREATE TABLE mutant_2_T ( 8 A CHAR, B CHAR, C CHAR, 9 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 10 );
  76. Chris J. Wright - [email protected] Minimal Schemata Approach 1 CREATE

    TABLE mutant_1_S ( 2 X CHAR, Y CHAR, Z CHAR, 3 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 4 REFERENCES mutant_1_T (A, B) 5 ); 6 7 CREATE TABLE mutant_2_T ( 8 A CHAR, B CHAR, C CHAR, 9 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 10 );
  77. Chris J. Wright - [email protected] Minimal Schemata Approach 1 CREATE

    TABLE mutant_1_S ( 2 X CHAR, Y CHAR, Z CHAR, 3 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 4 REFERENCES mutant_1_T (A, B) 5 ); 6 7 CREATE TABLE mutant_2_T ( 8 A CHAR, B CHAR, C CHAR, 9 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 10 ); 1 CREATE TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 );
  78. Chris J. Wright - [email protected] Minimal Schemata Approach 1 CREATE

    TABLE T ( 2 A CHAR, B CHAR, C CHAR, 3 CONSTRAINT UniqueOnColsAandB UNIQUE (A, B) 4 ); 5 6 CREATE TABLE S ( 7 X CHAR, Y CHAR, Z CHAR, 8 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Y) 9 REFERENCES T (A, B) 10 ); 11 12 CREATE TABLE mutant_1_S ( 13 X CHAR, Y CHAR, Z CHAR, 14 CONSTRAINT RefToColsAandB FOREIGN KEY (X, Z) 15 REFERENCES T (A, B) 16 ); 17 18 CREATE TABLE mutant_2_T ( 19 A CHAR, B CHAR, C CHAR, 20 CONSTRAINT UniqueOnColsAandB UNIQUE (A, C) 21 );
  79. Chris J. Wright - [email protected] Create tables once... ...only mutated

    tables... Minimal Schemata Approach ...reduce queries executed
  80. Chris J. Wright - [email protected] Create tables once... ...only mutated

    tables... Minimal Schemata Approach ...reduce queries executed Plus one copy for foreign keys
  81. Chris J. Wright - [email protected] Mutation Analysis Approaches Mutant Representation

    Parallelisation Strategy Schemata Normal “Original” Full “Full Schemata” Minimal “Minimal Schemata”
  82. Chris J. Wright - [email protected] Mutation Analysis Approaches Mutant Representation

    Parallelisation Strategy Schemata Normal “Original” Full “Full Schemata” Minimal “Minimal Schemata” Up front “Up-Front Schemata”
  83. Chris J. Wright - [email protected] Mutation Analysis Approaches Mutant Representation

    Parallelisation Strategy Schemata Normal “Original” Full “Full Schemata” Minimal “Minimal Schemata” Up front “Up-Front Schemata” Just in time “Just-in-Time Schemata”
  84. Chris J. Wright - [email protected] Parallelisation ‘Up-Front Schemata’ ‘Just-in-Time Schemata’

    Make the ‘Original’ approach parallel Make the ‘Full Schemata’ approach parallel
  85. Chris J. Wright - [email protected] Original Approach Create structure in

    database Execute insert statements Drop structure from database
  86. Chris J. Wright - [email protected] ‘Just-in-Time’ Approach Create structure in

    database Execute insert statements Drop structure from database Parallel
  87. Chris J. Wright - [email protected] ‘Just-in-Time’ Approach Create structure in

    database Execute insert statements Drop structure from database Parallel
  88. Chris J. Wright - [email protected] Mutant Schemata Approach Create structure

    in database Execute insert statements Drop structure from database
  89. Chris J. Wright - [email protected] ‘Up-Front’ Approach Create structure in

    database Execute insert statements Drop structure from database Parallel
  90. Chris J. Wright - [email protected] Empirical Study Evaluation Metric Mutation

    Time Approaches 5 Case Studies 6 DBMSs 2 Repetitions 30
  91. Chris J. Wright - [email protected] Empirical Study Evaluation Metric Mutation

    Time Approaches 5 Case Studies 6 DBMSs 2 Repetitions 30
  92. Chris J. Wright - [email protected] Empirical Study Evaluation Metric Mutation

    Time Approaches 5 Case Studies 6 DBMSs 2 Repetitions 30
  93. Chris J. Wright - [email protected] Empirical Study Evaluation Metric Mutation

    Time Approaches 5 Case Studies 6 DBMSs 2 Repetitions 30
  94. Chris J. Wright - [email protected] Empirical Study Evaluation Metric Mutation

    Time Approaches 5 Case Studies 6 DBMSs 2 Repetitions 30
  95. Chris J. Wright - [email protected] Empirical Study: Approaches Mutant Representation

    Parallelisation Strategy Schemata Normal “Original” Full “Full Schemata” Minimal “Minimal Schemata” Up front “Up-Front Schemata” Just in time “Just-in-Time Schemata”
  96. Chris J. Wright - [email protected] Empirical Study: Case Studies Case

    Study Tables Columns Primary Keys Foreign Keys Unique Constraints Cloc 2 10 0 0 0 JWhoisServer 6 49 6 0 0 NistDML182 2 32 1 1 0 NistDML183 2 6 0 1 1 RiskIt 13 56 11 10 0 UnixUsage 8 32 7 7 0
  97. Chris J. Wright - [email protected] Empirical Study: Case Studies Case

    Study Tables Columns Primary Keys Foreign Keys Unique Constraints Cloc 2 10 0 0 0 JWhoisServer 6 49 6 0 0 NistDML182 2 32 1 1 0 NistDML183 2 6 0 1 1 RiskIt 13 56 11 10 0 UnixUsage 8 32 7 7 0
  98. Chris J. Wright - [email protected] Empirical Study: Case Studies Case

    Study Tables Columns Primary Keys Foreign Keys Unique Constraints Cloc 2 10 0 0 0 JWhoisServer 6 49 6 0 0 NistDML182 2 32 1 1 0 NistDML183 2 6 0 1 1 RiskIt 13 56 11 10 0 UnixUsage 8 32 7 7 0
  99. Chris J. Wright - [email protected] Empirical Study: Case Studies Case

    Study Tables Columns Primary Keys Foreign Keys Unique Constraints Cloc 2 10 0 0 0 JWhoisServer 6 49 6 0 0 NistDML182 2 32 1 1 0 NistDML183 2 6 0 1 1 RiskIt 13 56 11 10 0 UnixUsage 8 32 7 7 0
  100. Chris J. Wright - [email protected] Empirical Study: Case Studies Case

    Study Tables Columns Primary Keys Foreign Keys Unique Constraints Cloc 2 10 0 0 0 JWhoisServer 6 49 6 0 0 NistDML182 2 32 1 1 0 NistDML183 2 6 0 1 1 RiskIt 13 56 11 10 0 UnixUsage 8 32 7 7 0
  101. Chris J. Wright - [email protected] Empirical Study: Case Studies Case

    Study Tables Columns Primary Keys Foreign Keys Unique Constraints Cloc 2 10 0 0 0 JWhoisServer 6 49 6 0 0 NistDML182 2 32 1 1 0 NistDML183 2 6 0 1 1 RiskIt 13 56 11 10 0 UnixUsage 8 32 7 7 0
  102. Chris J. Wright - [email protected] Empirical Study: Case Studies Case

    Study Tables Columns Primary Keys Foreign Keys Unique Constraints Cloc 2 10 0 0 0 JWhoisServer 6 49 6 0 0 NistDML182 2 32 1 1 0 NistDML183 2 6 0 1 1 RiskIt 13 56 11 10 0 UnixUsage 8 32 7 7 0
  103. Chris J. Wright - [email protected] Empirical Study: Case Studies Case

    Study Total Constraints Total Mutants Cloc 0 30 JWhoisServer 50 184 NistDML182 2 66 NistDML183 2 18 RiskIt 36 160 UnixUsage 23 69
  104. Chris J. Wright - [email protected] Empirical Study: DBMSs SQLite PostgreSQL

    Client-Server Model Local Client Model Simultaneous Read/Write
  105. Chris J. Wright - [email protected] Empirical Study: DBMSs SQLite PostgreSQL

    Client-Server Model Local Client Model Simultaneous Read/Write Locking on Write
  106. Chris J. Wright - [email protected] Empirical Study: DBMSs SQLite PostgreSQL

    Client-Server Model Local Client Model Simultaneous Read/Write Locking on Write Prevents Parallel Approaches
  107. Chris J. Wright - [email protected] Results • Median of repetitions

    • Lower-is-better metric • Split by... ...case study
  108. Chris J. Wright - [email protected] Results • Median of repetitions

    • Lower-is-better metric • Split by... ...case study ...DBMS
  109. Chris J. Wright - [email protected] Results • Median of repetitions

    • Lower-is-better metric • Split by... ...case study ...DBMS • Full details in paper (including statistics)
  110. Chris J. Wright - [email protected] 0 1000 2000 3000 Original

    Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Postgres – Cloc Original Full Minimal Up-Front Just-in-Time
  111. Chris J. Wright - [email protected] 0 1000 2000 3000 Original

    Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Postgres – Cloc ~3.27s Original Full Minimal Up-Front Just-in-Time
  112. Chris J. Wright - [email protected] 0 1000 2000 3000 Original

    Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Postgres – Cloc ~3.27s ~2.08s Original Full Minimal Up-Front Just-in-Time
  113. Chris J. Wright - [email protected] 0 50000 100000 150000 200000

    250000 Original Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Postgres – RiskIt Original Full Minimal Up-Front Just-in-Time
  114. Chris J. Wright - [email protected] 0 50000 100000 150000 200000

    250000 Original Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Postgres – RiskIt ~238s Original Full Minimal Up-Front Just-in-Time
  115. Chris J. Wright - [email protected] 0 50000 100000 150000 200000

    250000 Original Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Postgres – RiskIt ~238s ~225s Original Full Minimal Up-Front Just-in-Time
  116. Chris J. Wright - [email protected] 0 50000 100000 150000 200000

    250000 Original Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata Up−Front Schemata Just−in−Time Schemata Postgres – RiskIt ~238s ~225s ~23s Original Full Minimal Up-Front Just-in-Time
  117. Chris J. Wright - [email protected] Results – Postgres ‘Minimal Schemata’

    ‘Full Schemata’ Improvement decreases with larger schemas
  118. Chris J. Wright - [email protected] Results – Postgres ‘Minimal Schemata’

    ‘Full Schemata’ Improvement decreases with larger schemas Consistently faster, scales very well
  119. Chris J. Wright - [email protected] Results – Postgres ‘Just-in-Time Schemata’

    ‘Minimal Schemata’ ‘Full Schemata’ Improvement decreases with larger schemas Consistently faster, scales very well
  120. Chris J. Wright - [email protected] Results – Postgres ‘Just-in-Time Schemata’

    Consistently faster, scales very well ‘Minimal Schemata’ ‘Full Schemata’ Improvement decreases with larger schemas Consistently faster, scales very well
  121. Chris J. Wright - [email protected] Results – Postgres ‘Up-Front Schemata’

    ‘Just-in-Time Schemata’ Consistently faster, scales very well ‘Minimal Schemata’ ‘Full Schemata’ Improvement decreases with larger schemas Consistently faster, scales very well
  122. Chris J. Wright - [email protected] Results – Postgres ‘Up-Front Schemata’

    ‘Just-in-Time Schemata’ Consistently faster, scales very well Improvement decreases with larger schemas ‘Minimal Schemata’ ‘Full Schemata’ Improvement decreases with larger schemas Consistently faster, scales very well
  123. Chris J. Wright - [email protected] Results – Postgres ‘Up-Front Schemata’

    ‘Just-in-Time Schemata’ Consistently faster, scales very well Improvement decreases with larger schemas ‘Minimal Schemata’ ‘Full Schemata’ Improvement decreases with larger schemas Consistently faster, scales very well
  124. Chris J. Wright - [email protected] 0 5000 10000 15000 Original

    Full Schemata Minimal Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata SQLite – Cloc Original Full Minimal
  125. Chris J. Wright - [email protected] 0 5000 10000 15000 Original

    Full Schemata Minimal Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata SQLite – Cloc ~18.0s Original Full Minimal
  126. Chris J. Wright - [email protected] 0 5000 10000 15000 Original

    Full Schemata Minimal Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata SQLite – Cloc ~18.0s ~18.7s Original Full Minimal
  127. Chris J. Wright - [email protected] 0 5000 10000 15000 Original

    Full Schemata Minimal Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata SQLite – Cloc ~18.0s ~18.7s ~8.28s Original Full Minimal
  128. Chris J. Wright - [email protected] 0 500000 1000000 1500000 2000000

    Original Full Schemata Minimal Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata SQLite – RiskIt Original Full Minimal
  129. Chris J. Wright - [email protected] 0 500000 1000000 1500000 2000000

    Original Full Schemata Minimal Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata SQLite – RiskIt ~20.2 min Original Full Minimal
  130. Chris J. Wright - [email protected] 0 500000 1000000 1500000 2000000

    Original Full Schemata Minimal Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata SQLite – RiskIt ~20.2 min ~31.8 min Original Full Minimal
  131. Chris J. Wright - [email protected] 0 500000 1000000 1500000 2000000

    Original Full Schemata Minimal Schemata Mutation Analysis Technique Mutation Analysis Time (ms) Original Full Schemata Minimal Schemata SQLite – RiskIt ~20.2 min ~31.8 min ~2.5 min Original Full Minimal
  132. Chris J. Wright - [email protected] Results – SQLite ‘Minimal Schemata’

    ‘Full Schemata’ Increasingly worsened with larger schemas
  133. Chris J. Wright - [email protected] Results – SQLite ‘Minimal Schemata’

    ‘Full Schemata’ Increasingly worsened with larger schemas Consistently faster, scales very well
  134. Chris J. Wright - [email protected] Results – SQLite ‘Minimal Schemata’

    ‘Full Schemata’ Increasingly worsened with larger schemas Consistently faster, scales very well
  135. Chris J. Wright - [email protected] Future Work & Limitations Approaches

    Detailed Timing Case Studies DBMSs Parallel Configurations
  136. Chris J. Wright - [email protected] Future Work & Limitations Test

    Suite Approaches Detailed Timing Case Studies DBMSs Parallel Configurations
  137. Chris J. Wright - [email protected] Test Suite Generation • SchemaAnalyst

    tool • Gregory Kapfhammer • Tuesday 11:00am, Research & Industrial Track
  138. Chris J. Wright - [email protected] Conclusions • Mutant Schemata and

    Parallelisation can both reduce the cost of mutation analysis
  139. Chris J. Wright - [email protected] Conclusions • Mutant Schemata and

    Parallelisation can both reduce the cost of mutation analysis • The ‘Minimal Schemata’ approach...
  140. Chris J. Wright - [email protected] Conclusions • Mutant Schemata and

    Parallelisation can both reduce the cost of mutation analysis • The ‘Minimal Schemata’ approach... ...consistently faster than original
  141. Chris J. Wright - [email protected] Conclusions • Mutant Schemata and

    Parallelisation can both reduce the cost of mutation analysis • The ‘Minimal Schemata’ approach... ...consistently faster than original ...gives a reduction of up to 10x
  142. Chris J. Wright - [email protected] Conclusions • Mutant Schemata and

    Parallelisation can both reduce the cost of mutation analysis • The ‘Minimal Schemata’ approach... ...consistently faster than original ...gives a reduction of up to 10x ...scales very well (for our case studies)
  143. Chris J. Wright - [email protected] Conclusions • Mutant Schemata and

    Parallelisation can both reduce the cost of mutation analysis • The ‘Minimal Schemata’ approach... ...consistently faster than original ...gives a reduction of up to 10x ...scales very well (for our case studies) ...doesn’t require parallel DBMS access
  144. Chris J. Wright - [email protected] Conclusions • Mutant Schemata and

    Parallelisation can both reduce the cost of mutation analysis • The ‘Minimal Schemata’ approach... ...consistently faster than original ...gives a reduction of up to 10x ...scales very well (for our case studies) ...doesn’t require parallel DBMS access • Website: http://schemaanalyst.org/
  145. Chris J. Wright - [email protected] Conclusions • Mutant Schemata and

    Parallelisation can both reduce the cost of mutation analysis • The ‘Minimal Schemata’ approach... ...consistently faster than original ...gives a reduction of up to 10x ...scales very well (for our case studies) ...doesn’t require parallel DBMS access • Website: http://schemaanalyst.org/