SlideShare a Scribd company logo
1 of 21
Bj Rollison
Test Architect
Microsoft
http://www.TestingMentor.com
http://blogs.msdn.com/imtesty
Customer provided data
Domain expertise
Generally very limited in scope
Tester generated data
Happy path, probabilistic data
Input population poorly defined, human bias
Random data not representative of population
Static data files
Library of historical failure indicators
Too restrictive
Ineffective with multiple iterations
Large number of variables
Variable sequences can result in a virtual infinite
number of combinations
Impractical to test all values and combinations of
values in any reasonable testing cycle
Example:
NetBIOS name 15 alphanumeric characters
Using ASCII only chars, 82 allowable
characters (0x20  * + = | : ; “ ? < > , ) invalid*
Total number of possible input tests equals
8215 + 8214 + 8213…+ 821 =
51,586,566,049,662,994,687,009,994,574
It does not “look” like real world test data.
Years ago developers would argue that a name
textbox couldn’t contain a number!
To a computer, what is the difference between
the strings Margaret and ksjCu9ls?
Random data is not reproducible.
A seeded random generator will produce the
same exact result given the same seed value
Random data violates constraints of real data
Representative data from population
Deterministic algorithms
Sampling is commonly used in risk based testing
Samples must be representative
Samples must be statistically unbiased
Samples set must include variability for breadth
Random data generation provides variability, but
Simple random data may not be representative
Simple random data hard to reproduce
Goal – generate random data that is
Representative of the input data set
Statistically unbiased - random sample of
elements from a probability distribution
Value – input test data that
Provides greater variability
Includes expected and unexpected sequences
Eliminates human bias
Is better at evaluating robustness
Is dynamic!
System.Security.Cryptography
.RandomNumberGenerator class
Encrypted data indistinguishable from random
Cannot be seeded; no repeatability
System.Random class
Sequence of numbers that meet certain
statistical requirements for randomness
Can be seeded for repeatability
Not perfect, but reasonably random for
practical purposes
Comparison between RandomNumberGenerator
class and Random class
Red – RNG
Blue – Random
Both pseudo –
random
No obvious
pattern
based on sample by
Jeff Attwood
http://www.codinghorror.com
User defined seed
Tester provides seed value for repeatability
Dynamic seed
New seed value
generated at
runtime
Seed variable
must be
preserved in
test log
public static int GetSeedValue(
string seedValue)
{
int seed = 0;
if (seedValue != string.Empty)
{
seed = int.Parse(seedValue);
}
else
{
Random r = new Random();
seed = r.Next();
}
return seed;
}
Define the representative data set
Example – Credit card numbers
341846580149320
Card length –
(BIN + digits)
between 14 and
19 depending on
card type
Bank Identification
Number (BIN) –
between 1 and 4
digits depending
on card type
Checksum – Luhn (Mod 10) algorithm
Equivalence class partitioning decomposes data
into discrete valid and invalid class subsets
Card type Valid Class subsets Invalid Class subsets
American
Express
BIN – 34, 37
Length – 15 digits
Checksum – Mod 10
Unassigned BINs
Length <= 16 digits
Length >= 14 digits
Fail Checksum
Maestro BIN – 5020, 5038,
6034, 6759
Length – 16, 18
Checksum – Mod 10
Unassigned BINs
Length <= 15 digits
Length >= 19 digits
Length == 17 digits
Fail Checksum
Input variable Valid input Invalid input
Valid BIN
Number(s)
& Length
Seed
Generator
Is Valid
Luhn
Algorithm
Random
Number
Generator
Card
Length(s)
by Type
Get
credit card
Info
Input
(card type)
Output
(card #)
Input
(optional seed)
Assigned BINs ensures the data looks real
The Mod10 check ensures the data feels real
Result is representative of real data!
GetCardNumber(int cardType, int seed)
Get BIN (cardType, seed);
Get CardLength (cardType, seed);
Assign BIN to cardNumber;
Generate a new random object;
for (cardNumberLength < CardLength)
Generate a random number 0 <> 9;
Append it to the cardNumber;
if IsNotValidCardNumber(cardNumber)
while (IsNotValidCardNumber(cardNumber))
increment last number by 1;
return cardNumber;
Deterministic
algorithm to
generate a valid
random credit
card
Model
test
data
Generate
test data
Apply
test
data
Verify
results
Decompose the
data set for each
parameter using
equivalence class
partitioning
Generate valid
and invalid test
data adhering to
parameter properties,
business rules, and
test hypothesis
Apply the test
data to the
application
under test
Verify the actual
results against
the expected
results – oracle!
JCB Type 1
BIN = 35 Len = 16
JCB Type 2
BIN = 1800, 2131, Len = 15
Robust
testing
Multi-
language
input
testing
String length
fixed or variable
Seed value
Custom range for
greater controlUnicode
language
families
Assigned code
points
Reserved
characters
Unicode surrogate
pairs
1000 Unicode characters
from the sample population
Character corruption and
data loss
135 characters (bytes)
obvious data loss
Static test data wears out!
Random test data that is not repeatable or not
representative may find defects, but…
Probabilistic stochastic test data
Is a modeled representation of the population
Is statistically unbiased
Is especially good at testing robustness
Recommend using both static (real-world)test data
and probabilistic stochastic test data for breadth
Helping Testers
Unleash Their Potential!TM
http://www.TestingMentor.com
Bj.Rollison@TestingMentor.com
Practice .NET Testing with IR Data
Bj Rollison
http://www.stpmag.com/issues/stp-2007-06.pdf
Automatic test data generation for path testing
using a new stochastic algorithm
Bruno T. de Abreu, Eliane Martins, Fabiano L. de Sousa
http://www.sbbd-sbes2005.ufu.br/arquivos/16-%209523.pdf
Data Generation Techniques for Automated
Software Robustness Testing
Matthew Schmid & Frank Hill
http://www.cigital.com/papers/download/ictcsfinal.pdf
Tools
http://www.TestingMentor.com

More Related Content

Similar to Bj Rollison - Pobabillistic Stochastic Test Data

SET BOUNDARIES - FIND PEACE - Input Validation
SET BOUNDARIES - FIND PEACE - Input ValidationSET BOUNDARIES - FIND PEACE - Input Validation
SET BOUNDARIES - FIND PEACE - Input ValidationMichi Lehr
 
Generating Complex and Faulty Test Data Through Model-Based Mutation Analysis
Generating Complex and Faulty Test Data Through Model-Based Mutation AnalysisGenerating Complex and Faulty Test Data Through Model-Based Mutation Analysis
Generating Complex and Faulty Test Data Through Model-Based Mutation AnalysisLionel Briand
 
Data Quality with AI
Data Quality with AIData Quality with AI
Data Quality with AIVera Ekimenko
 
What We Talk About When We Talk About Unit Testing
What We Talk About When We Talk About Unit TestingWhat We Talk About When We Talk About Unit Testing
What We Talk About When We Talk About Unit TestingKevlin Henney
 
Intel Random Number Generator
Intel Random Number GeneratorIntel Random Number Generator
Intel Random Number GeneratorXequeMateShannon
 
The Mechanics of Testing Large Data Pipelines (QCon London 2016)
The Mechanics of Testing Large Data Pipelines (QCon London 2016)The Mechanics of Testing Large Data Pipelines (QCon London 2016)
The Mechanics of Testing Large Data Pipelines (QCon London 2016)Mathieu Bastian
 
Computing homework validation
Computing homework validationComputing homework validation
Computing homework validationysolanki78
 
DSR Testing (Part 1)
DSR Testing (Part 1)DSR Testing (Part 1)
DSR Testing (Part 1)Steve Upton
 
Automated cheque recognition
Automated cheque recognitionAutomated cheque recognition
Automated cheque recognitioninfo_jojo
 
What Do the Asserts in a Unit Test Tell Us About Code Quality? (CSMR2013)
What Do the Asserts in a Unit Test Tell Us About Code Quality? (CSMR2013)What Do the Asserts in a Unit Test Tell Us About Code Quality? (CSMR2013)
What Do the Asserts in a Unit Test Tell Us About Code Quality? (CSMR2013)Maurício Aniche
 
Software testing
Software testingSoftware testing
Software testingDIPEN SAINI
 
Credit card fraud detection using machine learning Algorithms
Credit card fraud detection using machine learning AlgorithmsCredit card fraud detection using machine learning Algorithms
Credit card fraud detection using machine learning Algorithmsankit panigrahy
 
Mining SQL Injection and Cross Site Scripting Vulnerabilities using Hybrid Pr...
Mining SQL Injection and Cross Site Scripting Vulnerabilities using Hybrid Pr...Mining SQL Injection and Cross Site Scripting Vulnerabilities using Hybrid Pr...
Mining SQL Injection and Cross Site Scripting Vulnerabilities using Hybrid Pr...Lionel Briand
 
Issta21 presentation lingfeng_zhang
Issta21 presentation lingfeng_zhangIssta21 presentation lingfeng_zhang
Issta21 presentation lingfeng_zhangLingfengZhang5
 
How deal with legacy code and not die trying v1.7
How deal with legacy code and not die trying v1.7How deal with legacy code and not die trying v1.7
How deal with legacy code and not die trying v1.7José San Román A. de Lara
 
Introduction to Descriptive & Predictive Analytics
Introduction to Descriptive & Predictive AnalyticsIntroduction to Descriptive & Predictive Analytics
Introduction to Descriptive & Predictive AnalyticsDilum Bandara
 
The Mechanics of Testing Large Data Pipelines
The Mechanics of Testing Large Data PipelinesThe Mechanics of Testing Large Data Pipelines
The Mechanics of Testing Large Data PipelinesC4Media
 

Similar to Bj Rollison - Pobabillistic Stochastic Test Data (20)

SET BOUNDARIES - FIND PEACE - Input Validation
SET BOUNDARIES - FIND PEACE - Input ValidationSET BOUNDARIES - FIND PEACE - Input Validation
SET BOUNDARIES - FIND PEACE - Input Validation
 
Generating Complex and Faulty Test Data Through Model-Based Mutation Analysis
Generating Complex and Faulty Test Data Through Model-Based Mutation AnalysisGenerating Complex and Faulty Test Data Through Model-Based Mutation Analysis
Generating Complex and Faulty Test Data Through Model-Based Mutation Analysis
 
Attacks1
Attacks1Attacks1
Attacks1
 
Data Quality with AI
Data Quality with AIData Quality with AI
Data Quality with AI
 
wk5ppt2_Iris
wk5ppt2_Iriswk5ppt2_Iris
wk5ppt2_Iris
 
What We Talk About When We Talk About Unit Testing
What We Talk About When We Talk About Unit TestingWhat We Talk About When We Talk About Unit Testing
What We Talk About When We Talk About Unit Testing
 
Intel Random Number Generator
Intel Random Number GeneratorIntel Random Number Generator
Intel Random Number Generator
 
The Mechanics of Testing Large Data Pipelines (QCon London 2016)
The Mechanics of Testing Large Data Pipelines (QCon London 2016)The Mechanics of Testing Large Data Pipelines (QCon London 2016)
The Mechanics of Testing Large Data Pipelines (QCon London 2016)
 
Computing homework validation
Computing homework validationComputing homework validation
Computing homework validation
 
DSR Testing (Part 1)
DSR Testing (Part 1)DSR Testing (Part 1)
DSR Testing (Part 1)
 
Automated cheque recognition
Automated cheque recognitionAutomated cheque recognition
Automated cheque recognition
 
What Do the Asserts in a Unit Test Tell Us About Code Quality? (CSMR2013)
What Do the Asserts in a Unit Test Tell Us About Code Quality? (CSMR2013)What Do the Asserts in a Unit Test Tell Us About Code Quality? (CSMR2013)
What Do the Asserts in a Unit Test Tell Us About Code Quality? (CSMR2013)
 
Software testing
Software testingSoftware testing
Software testing
 
Bit Vectors Siddhesh
Bit Vectors SiddheshBit Vectors Siddhesh
Bit Vectors Siddhesh
 
Credit card fraud detection using machine learning Algorithms
Credit card fraud detection using machine learning AlgorithmsCredit card fraud detection using machine learning Algorithms
Credit card fraud detection using machine learning Algorithms
 
Mining SQL Injection and Cross Site Scripting Vulnerabilities using Hybrid Pr...
Mining SQL Injection and Cross Site Scripting Vulnerabilities using Hybrid Pr...Mining SQL Injection and Cross Site Scripting Vulnerabilities using Hybrid Pr...
Mining SQL Injection and Cross Site Scripting Vulnerabilities using Hybrid Pr...
 
Issta21 presentation lingfeng_zhang
Issta21 presentation lingfeng_zhangIssta21 presentation lingfeng_zhang
Issta21 presentation lingfeng_zhang
 
How deal with legacy code and not die trying v1.7
How deal with legacy code and not die trying v1.7How deal with legacy code and not die trying v1.7
How deal with legacy code and not die trying v1.7
 
Introduction to Descriptive & Predictive Analytics
Introduction to Descriptive & Predictive AnalyticsIntroduction to Descriptive & Predictive Analytics
Introduction to Descriptive & Predictive Analytics
 
The Mechanics of Testing Large Data Pipelines
The Mechanics of Testing Large Data PipelinesThe Mechanics of Testing Large Data Pipelines
The Mechanics of Testing Large Data Pipelines
 

More from TEST Huddle

Why We Need Diversity in Testing- Accenture
Why We Need Diversity in Testing- AccentureWhy We Need Diversity in Testing- Accenture
Why We Need Diversity in Testing- AccentureTEST Huddle
 
Keys to continuous testing for faster delivery euro star webinar
Keys to continuous testing for faster delivery euro star webinar Keys to continuous testing for faster delivery euro star webinar
Keys to continuous testing for faster delivery euro star webinar TEST Huddle
 
Why you Shouldnt Automated But You Will Anyway
Why you Shouldnt Automated But You Will Anyway Why you Shouldnt Automated But You Will Anyway
Why you Shouldnt Automated But You Will Anyway TEST Huddle
 
Being a Tester in Scrum
Being a Tester in ScrumBeing a Tester in Scrum
Being a Tester in ScrumTEST Huddle
 
Leveraging Visual Testing with Your Functional Tests
Leveraging Visual Testing with Your Functional TestsLeveraging Visual Testing with Your Functional Tests
Leveraging Visual Testing with Your Functional TestsTEST Huddle
 
Using Test Trees to get an Overview of Test Work
Using Test Trees to get an Overview of Test WorkUsing Test Trees to get an Overview of Test Work
Using Test Trees to get an Overview of Test WorkTEST Huddle
 
Big Data: The Magic to Attain New Heights
Big Data:  The Magic to Attain New HeightsBig Data:  The Magic to Attain New Heights
Big Data: The Magic to Attain New HeightsTEST Huddle
 
Will Robots Replace Testers?
Will Robots Replace Testers?Will Robots Replace Testers?
Will Robots Replace Testers?TEST Huddle
 
TDD For The Rest Of Us
TDD For The Rest Of UsTDD For The Rest Of Us
TDD For The Rest Of UsTEST Huddle
 
Scaling Agile with LeSS (Large Scale Scrum)
Scaling Agile with LeSS (Large Scale Scrum)Scaling Agile with LeSS (Large Scale Scrum)
Scaling Agile with LeSS (Large Scale Scrum)TEST Huddle
 
Creating Agile Test Strategies for Larger Enterprises
Creating Agile Test Strategies for Larger EnterprisesCreating Agile Test Strategies for Larger Enterprises
Creating Agile Test Strategies for Larger EnterprisesTEST Huddle
 
Is There A Risk?
Is There A Risk?Is There A Risk?
Is There A Risk?TEST Huddle
 
Are Your Tests Well-Travelled? Thoughts About Test Coverage
Are Your Tests Well-Travelled? Thoughts About Test CoverageAre Your Tests Well-Travelled? Thoughts About Test Coverage
Are Your Tests Well-Travelled? Thoughts About Test CoverageTEST Huddle
 
Growing a Company Test Community: Roles and Paths for Testers
Growing a Company Test Community: Roles and Paths for TestersGrowing a Company Test Community: Roles and Paths for Testers
Growing a Company Test Community: Roles and Paths for TestersTEST Huddle
 
Do we need testers on agile teams?
Do we need testers on agile teams?Do we need testers on agile teams?
Do we need testers on agile teams?TEST Huddle
 
How to use selenium successfully
How to use selenium successfullyHow to use selenium successfully
How to use selenium successfullyTEST Huddle
 
Testers & Teams on the Agile Fluency™ Journey
Testers & Teams on the Agile Fluency™ Journey Testers & Teams on the Agile Fluency™ Journey
Testers & Teams on the Agile Fluency™ Journey TEST Huddle
 
Practical Test Strategy Using Heuristics
Practical Test Strategy Using HeuristicsPractical Test Strategy Using Heuristics
Practical Test Strategy Using HeuristicsTEST Huddle
 
Thinking Through Your Role
Thinking Through Your RoleThinking Through Your Role
Thinking Through Your RoleTEST Huddle
 
Using Selenium 3 0
Using Selenium 3 0Using Selenium 3 0
Using Selenium 3 0TEST Huddle
 

More from TEST Huddle (20)

Why We Need Diversity in Testing- Accenture
Why We Need Diversity in Testing- AccentureWhy We Need Diversity in Testing- Accenture
Why We Need Diversity in Testing- Accenture
 
Keys to continuous testing for faster delivery euro star webinar
Keys to continuous testing for faster delivery euro star webinar Keys to continuous testing for faster delivery euro star webinar
Keys to continuous testing for faster delivery euro star webinar
 
Why you Shouldnt Automated But You Will Anyway
Why you Shouldnt Automated But You Will Anyway Why you Shouldnt Automated But You Will Anyway
Why you Shouldnt Automated But You Will Anyway
 
Being a Tester in Scrum
Being a Tester in ScrumBeing a Tester in Scrum
Being a Tester in Scrum
 
Leveraging Visual Testing with Your Functional Tests
Leveraging Visual Testing with Your Functional TestsLeveraging Visual Testing with Your Functional Tests
Leveraging Visual Testing with Your Functional Tests
 
Using Test Trees to get an Overview of Test Work
Using Test Trees to get an Overview of Test WorkUsing Test Trees to get an Overview of Test Work
Using Test Trees to get an Overview of Test Work
 
Big Data: The Magic to Attain New Heights
Big Data:  The Magic to Attain New HeightsBig Data:  The Magic to Attain New Heights
Big Data: The Magic to Attain New Heights
 
Will Robots Replace Testers?
Will Robots Replace Testers?Will Robots Replace Testers?
Will Robots Replace Testers?
 
TDD For The Rest Of Us
TDD For The Rest Of UsTDD For The Rest Of Us
TDD For The Rest Of Us
 
Scaling Agile with LeSS (Large Scale Scrum)
Scaling Agile with LeSS (Large Scale Scrum)Scaling Agile with LeSS (Large Scale Scrum)
Scaling Agile with LeSS (Large Scale Scrum)
 
Creating Agile Test Strategies for Larger Enterprises
Creating Agile Test Strategies for Larger EnterprisesCreating Agile Test Strategies for Larger Enterprises
Creating Agile Test Strategies for Larger Enterprises
 
Is There A Risk?
Is There A Risk?Is There A Risk?
Is There A Risk?
 
Are Your Tests Well-Travelled? Thoughts About Test Coverage
Are Your Tests Well-Travelled? Thoughts About Test CoverageAre Your Tests Well-Travelled? Thoughts About Test Coverage
Are Your Tests Well-Travelled? Thoughts About Test Coverage
 
Growing a Company Test Community: Roles and Paths for Testers
Growing a Company Test Community: Roles and Paths for TestersGrowing a Company Test Community: Roles and Paths for Testers
Growing a Company Test Community: Roles and Paths for Testers
 
Do we need testers on agile teams?
Do we need testers on agile teams?Do we need testers on agile teams?
Do we need testers on agile teams?
 
How to use selenium successfully
How to use selenium successfullyHow to use selenium successfully
How to use selenium successfully
 
Testers & Teams on the Agile Fluency™ Journey
Testers & Teams on the Agile Fluency™ Journey Testers & Teams on the Agile Fluency™ Journey
Testers & Teams on the Agile Fluency™ Journey
 
Practical Test Strategy Using Heuristics
Practical Test Strategy Using HeuristicsPractical Test Strategy Using Heuristics
Practical Test Strategy Using Heuristics
 
Thinking Through Your Role
Thinking Through Your RoleThinking Through Your Role
Thinking Through Your Role
 
Using Selenium 3 0
Using Selenium 3 0Using Selenium 3 0
Using Selenium 3 0
 

Bj Rollison - Pobabillistic Stochastic Test Data

  • 2. Customer provided data Domain expertise Generally very limited in scope Tester generated data Happy path, probabilistic data Input population poorly defined, human bias Random data not representative of population Static data files Library of historical failure indicators Too restrictive Ineffective with multiple iterations
  • 3. Large number of variables Variable sequences can result in a virtual infinite number of combinations Impractical to test all values and combinations of values in any reasonable testing cycle Example: NetBIOS name 15 alphanumeric characters Using ASCII only chars, 82 allowable characters (0x20 * + = | : ; “ ? < > , ) invalid* Total number of possible input tests equals 8215 + 8214 + 8213…+ 821 = 51,586,566,049,662,994,687,009,994,574
  • 4. It does not “look” like real world test data. Years ago developers would argue that a name textbox couldn’t contain a number! To a computer, what is the difference between the strings Margaret and ksjCu9ls? Random data is not reproducible. A seeded random generator will produce the same exact result given the same seed value Random data violates constraints of real data Representative data from population Deterministic algorithms
  • 5. Sampling is commonly used in risk based testing Samples must be representative Samples must be statistically unbiased Samples set must include variability for breadth Random data generation provides variability, but Simple random data may not be representative Simple random data hard to reproduce
  • 6. Goal – generate random data that is Representative of the input data set Statistically unbiased - random sample of elements from a probability distribution Value – input test data that Provides greater variability Includes expected and unexpected sequences Eliminates human bias Is better at evaluating robustness Is dynamic!
  • 7. System.Security.Cryptography .RandomNumberGenerator class Encrypted data indistinguishable from random Cannot be seeded; no repeatability System.Random class Sequence of numbers that meet certain statistical requirements for randomness Can be seeded for repeatability Not perfect, but reasonably random for practical purposes
  • 8. Comparison between RandomNumberGenerator class and Random class Red – RNG Blue – Random Both pseudo – random No obvious pattern based on sample by Jeff Attwood http://www.codinghorror.com
  • 9. User defined seed Tester provides seed value for repeatability Dynamic seed New seed value generated at runtime Seed variable must be preserved in test log public static int GetSeedValue( string seedValue) { int seed = 0; if (seedValue != string.Empty) { seed = int.Parse(seedValue); } else { Random r = new Random(); seed = r.Next(); } return seed; }
  • 10. Define the representative data set Example – Credit card numbers 341846580149320 Card length – (BIN + digits) between 14 and 19 depending on card type Bank Identification Number (BIN) – between 1 and 4 digits depending on card type Checksum – Luhn (Mod 10) algorithm
  • 11. Equivalence class partitioning decomposes data into discrete valid and invalid class subsets Card type Valid Class subsets Invalid Class subsets American Express BIN – 34, 37 Length – 15 digits Checksum – Mod 10 Unassigned BINs Length <= 16 digits Length >= 14 digits Fail Checksum Maestro BIN – 5020, 5038, 6034, 6759 Length – 16, 18 Checksum – Mod 10 Unassigned BINs Length <= 15 digits Length >= 19 digits Length == 17 digits Fail Checksum Input variable Valid input Invalid input
  • 12. Valid BIN Number(s) & Length Seed Generator Is Valid Luhn Algorithm Random Number Generator Card Length(s) by Type Get credit card Info Input (card type) Output (card #) Input (optional seed)
  • 13. Assigned BINs ensures the data looks real The Mod10 check ensures the data feels real Result is representative of real data! GetCardNumber(int cardType, int seed) Get BIN (cardType, seed); Get CardLength (cardType, seed); Assign BIN to cardNumber; Generate a new random object; for (cardNumberLength < CardLength) Generate a random number 0 <> 9; Append it to the cardNumber; if IsNotValidCardNumber(cardNumber) while (IsNotValidCardNumber(cardNumber)) increment last number by 1; return cardNumber; Deterministic algorithm to generate a valid random credit card
  • 14. Model test data Generate test data Apply test data Verify results Decompose the data set for each parameter using equivalence class partitioning Generate valid and invalid test data adhering to parameter properties, business rules, and test hypothesis Apply the test data to the application under test Verify the actual results against the expected results – oracle!
  • 15. JCB Type 1 BIN = 35 Len = 16 JCB Type 2 BIN = 1800, 2131, Len = 15
  • 16. Robust testing Multi- language input testing String length fixed or variable Seed value Custom range for greater controlUnicode language families Assigned code points Reserved characters Unicode surrogate pairs
  • 17. 1000 Unicode characters from the sample population
  • 18. Character corruption and data loss 135 characters (bytes) obvious data loss
  • 19. Static test data wears out! Random test data that is not repeatable or not representative may find defects, but… Probabilistic stochastic test data Is a modeled representation of the population Is statistically unbiased Is especially good at testing robustness Recommend using both static (real-world)test data and probabilistic stochastic test data for breadth
  • 20. Helping Testers Unleash Their Potential!TM http://www.TestingMentor.com Bj.Rollison@TestingMentor.com
  • 21. Practice .NET Testing with IR Data Bj Rollison http://www.stpmag.com/issues/stp-2007-06.pdf Automatic test data generation for path testing using a new stochastic algorithm Bruno T. de Abreu, Eliane Martins, Fabiano L. de Sousa http://www.sbbd-sbes2005.ufu.br/arquivos/16-%209523.pdf Data Generation Techniques for Automated Software Robustness Testing Matthew Schmid & Frank Hill http://www.cigital.com/papers/download/ictcsfinal.pdf Tools http://www.TestingMentor.com