SlideShare a Scribd company logo
1 of 22
Download to read offline
BT6	
Session	
6/9/16	11:30	AM	
	
	
	
	
	
	
White	Box	Testing:	It's	Not	Just	for	
Developers	Any	More	
	
Presented	by:	
	
Robert	Vanderwall	
Ultimate	Software	
	
	
Brought	to	you	by:		
		
	
	
	
	
350	Corporate	Way,	Suite	400,	Orange	Park,	FL	32073		
888---268---8770	··	904---278---0524	-	info@techwell.com	-	http://www.techwell.com/
Robert	Vanderwall	
Ultimate	Software	
	
As	a	test	architect	at	Ultimate	Software,	Robert	Vanderwall	provides	guidance,	
training,	and	techniques	to	engineers	performing	testing	activities.	Prior	to	
joining	Ultimate	Software,	Robert	was	a	hardware	engineer,	a	software	
programmer,	a	software	test	engineer,	and	an	educator.	He	has	worked	on	
projects	ranging	from	tiny	embedded	systems	to	web	scale	applications.	In	
addition	to	many	years	of	experience	in	industry,	Robert	holds	a	Ph.D.	in	
computer	science,	specializing	in	software	testing.
5/10/16	
  
1	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
   1
Unit	
  Tes)ng:	
  
Not	
  just	
  for	
  developers	
  anymore	
  
Robert	
  Vanderwall,	
  
Ul)mate	
  So?ware	
  Group	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Agenda
•  Current Trends
•  Test Pyramid
•  Code Patterns
•  Metrics
•  Adding Value
•  Wrap-up
5/10/16	
  
2	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Current Trends
•  Shift left
•  Death of Testing
•  Deep Collaboration
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Shift Left
Many activities are moving
earlier, including testing.
•  Testing begins at inception.
•  Testing is an integral part of the
development process.
Especially
5/10/16	
  
3	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Death of Testing
Several companies have adopted
a “No QA” approach
•  Engineers are becoming hybrids.
•  Generalists with area of specialization.
•  Developers do their own testing.
•  Ownership through to production.
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Deep Collaboration
• Cross functional teams
• Continuous conversations
• Group ownership of quality
5/10/16	
  
4	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Quality Engineer
•  Understand ways to stay relevant
•  Enhance testing skills
•  Test with an understanding of what
information developers would find useful
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Software Developer
•  Better appreciation for the value of exploratory testing
•  Boost ability to deliver value by collaborating well with
testers
•  Improve ability to turn testing observations into useful
ideas for unit testing
5/10/16	
  
5	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Test Pyramid
•  Most	
  of	
  the	
  tests	
  are	
  unit	
  tests	
  
•  Fewer	
  tests	
  are	
  integra)on	
  tests	
  
•  Least	
  number	
  of	
  tests	
  at	
  system	
  
level	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Purpose
•  Unit tests are cheap and fast, they provide fast
feedback.
•  Integration tests verify interactions between
components.
•  System tests verify value is realized.
5/10/16	
  
6	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Inverted Pyramid
•  Many UI tests but few unit tests.
•  Automation effort without development
support.
•  Lack of development practices for unit
testing.
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Test Space Needle
•  Lots of unit tests, plenty of UI tests.
•  Almost no integration tests.
•  Overconfidence in unit testing.
•  Ends up with big-bang integration.
5/10/16	
  
7	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Coding Patterns
•  A few easy patterns
•  A few not so easy patterns
•  Pointers
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Easy Pattern - Sequence
What could go wrong?
•  Operator may be wrong
•  z	
  =	
  x	
  *	
  y	
  
•  Bad test x =2, y=2
•  No discriminatory power
def seq(x,y) :
z = x + y
return z
5/10/16	
  
8	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Test Pattern
X Y Expected	
  Output	
   def seq(x,y) :
z = x + y
return z
0 0
7 0
0 9
6 5
Are	
  these	
  tests	
  any	
  good?	
  	
  	
  
What	
  is	
  the	
  business	
  need	
  
being	
  sa)sfied?	
  
	
  
Total	
  exemp)ons.	
  
	
  	
  	
  	
  	
  these	
  may	
  be	
  fine	
  
	
  
Total	
  sales.	
  
	
  	
  	
  	
  these	
  are	
  not	
  representa)ve.	
  
3 8
Number,	
  0,	
  >	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Test Pattern - combinations
X Y Expected	
  Output	
   def seq(x,y) :
z = x + y
return z
0 0
7 0
0 9
6 5
What	
  is	
  the	
  expected	
  output?	
  
	
  
0,	
  7,	
  9,	
  11,	
  11	
  ?	
  
	
  
Did	
  you	
  get	
  the	
  expecta)ons	
  
from	
  the	
  code?	
  
	
  
Could	
  the	
  tests	
  ever	
  fail?	
  
3 8
5/10/16	
  
9	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Easy Pattern - Condition
What could go wrong?
•  Relation may be wrong
•  x	
  <	
  10,	
  x	
  >=	
  10	
  
•  Value may be wrong
•  x	
  >	
  20	
  
def condition (x) :
if x > 10:
z = x + 10
else:
z = x -10
return z
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Test Pattern – Boundary tests
X	
   Expected	
  Output	
  
-­‐10	
  
0	
  
9	
  
10	
  
11	
  
20	
  
Edge	
  -­‐1,	
  Edge,	
  edge	
  +1,	
  mid-­‐range	
  
def condition (x) :
if x > 10:
z = x + 10
else:
z = x -10
return z
5/10/16	
  
10	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Test Pattern – Boundary tests
X	
   Y	
   Expected	
  Output	
  
0	
   0	
  
10	
   10	
  
10	
   11	
  
11	
   10	
  
8	
   -­‐8	
  
-­‐5	
   -­‐6	
  
def condition (x,y) :
if x > y:
z = x - y
else:
z = x + y
return z
Edge,	
  edge	
  +1,	
  edge	
  -­‐1	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Easy Pattern - Loop
What could go wrong?
•  Off-by-one
•  Didn’t	
  iniPalize	
  properly	
  
•  Didn’t	
  finalize	
  properly	
  
def loop(L):
for l in L:
do_something(l)
return results
5/10/16	
  
11	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Test Pattern – Loop
L	
   Expected	
  
Output	
  
empty	
  
1	
  item	
  
2	
  items	
  
Typical	
  number	
  of	
  items	
  
Max	
  number	
  of	
  items	
  
Max+1	
  items	
  
def loop(L):
for l in L:
do_something(l)
return results
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Lessons
•  Test inputs should reflect expected uses.
•  Expected output should come from business
function NOT from the code.
•  Try <, =, > for sequences.
•  Try edge-1, edge, edge+1, mid-range for boundary.
•  Try 0, 1,2, t, max. max+1 for loops.
5/10/16	
  
12	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
References
https://msdn.microsoft.com/en-us/library/cc514239.aspx
http://www.exampler.com/testing-com/test-patterns/patterns/
index.html
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Metrics
If you can’t measure it, you can’t improve it
– Peter Drucker
•  Code Coverage
•  Code Complexity
•  Mutation Score
5/10/16	
  
13	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Code Coverage
Most IDEs have a way to measure coverage.
Look for high coverage, esp:
critical areas, complicated areas.
Statement coverage first, then branch coverage.
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Code Coverage
If a line of code is not executed, it is not tested.
If a line of code is not tested, it may have a bug.
Inspections help, a lot!
5/10/16	
  
14	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Code Coverage
1. def condition (items, y) :
2. for item in items:
3. if item.x > y:
4. z += a(item)
5. 
 else:
6. z += b(item)
7. return z
How	
  many	
  statements?	
  
How	
  many	
  tests	
  to	
  cover	
  
them?	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Code Coverage
1. def condition (items, y) :
2. for item in items:
3. if item.x > y:
4. z += a(item)
5. 
 else:
6. z += b(item)
7. return z
How	
  many	
  branches?	
  
How	
  many	
  tests	
  to	
  cover	
  
them?	
   1	
  
2
3
4	
   6	
  
7	
  
5/10/16	
  
15	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Coverage	
  caveats	
  •  I	
  noPced	
  that	
  the	
  good	
  developers	
  
drink	
  lots	
  of	
  coffee.	
  
•  SO	
  
•  I	
  have	
  all	
  developers	
  drink	
  6	
  cups	
  a	
  	
  
day.	
  
•  Surely,	
  I	
  will	
  get	
  beber	
  code,	
  right?	
  
•  NO:	
  	
  CorrelaPon	
  is	
  not	
  causality.	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Code Coverage Caution
Low	
  coverage	
  tells	
  you	
  that	
  some	
  code	
  has	
  not	
  been	
  
tested.	
  
	
  
High	
  coverage	
  tells	
  you	
  nothing!	
  	
  Therefore,	
  it	
  should	
  
be	
  a	
  guidepost,	
  NOT	
  be	
  a	
  goal.	
  
	
  
	
  hbp://www.exampler.com/tesPng-­‐com/wriPngs/coverage.pdf	
  
5/10/16	
  
16	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Code Complexity
Many IDEs can measure Cyclomatic Complexity.
1-5 : Simple and easily understandable.
6-15: Rather complicated, better test it a lot.
> 15: Quite complicated, probably hard to test and
likely a haven for many bugs.
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Mutation Testing
If I change the code, does a test fail?
If not, then there are ways the code can be wrong
that the tests will not find.
A Few tools available, but manually altering the code
works well,
esp. for JS.
5/10/16	
  
17	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
X	
   Y	
   Expected	
  Output	
  
0	
   0	
  
10	
   10	
  
10	
   11	
  
11	
   10	
  
8	
   -­‐8	
  
-­‐5	
   -­‐6	
  
def condition (x,y) :
if x > y:
z = x - y
else:
z = x + y
return z
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Complexity Cautions
If every module has very low complexity, where
is the complex business logic?
Not all statements are equally complex.
A complex linq query may show CC=1.
5/10/16	
  
18	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
CRISP tests
C – Clear purpose
R – Repeatable
I – Independent
S – Simple
P – Performant
DRY – Don’t repeat yourself
Tests may have duplicate code
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Adding Value
In a left shifted highly collaborative environment,
how can we add value?
We just saw an overview of the test pyramid and
a few testing patterns. How can we make that
work for us?
5/10/16	
  
19	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Leverage Left Shift
• Review unit tests for coverage, patterns, etc.
• Pull together the tester-facing discipline of Exploratory
testing and the developer-facing discipline of Unit
testing.
• Provide	
  insights	
  into	
  the	
  product	
  and	
  code	
  through	
  exploring	
  and	
  
leverage	
  these	
  insights	
  via	
  unit	
  tesPng.	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Leverage collaboration
• Become more helpful for developers:
•  CommunicaPng	
  bugs	
  found	
  
•  AND	
  ideas	
  from	
  exploraPon	
  that	
  could	
  be	
  used	
  to	
  improve	
  unit	
  tests	
  
5/10/16	
  
20	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  
Leverage Automation
• Combine the forces of machines
and humans.
• Machines	
  are	
  parPcularly	
  well	
  suited	
  
for	
  exploring	
  large	
  computaPonal	
  
space.	
  
• What	
  they	
  can’t	
  do	
  is	
  have	
  any	
  insight	
  
or	
  creaPve	
  ideas.	
  	
  
June	
  5–10,	
  2016	
  |	
  Las	
  Vegas,	
  NV	
  Robert	
  Vanderwall	
  

More Related Content

Viewers also liked

Your User Stories Are Too Big: Yes, They Are!
Your User Stories Are Too Big: Yes, They Are!Your User Stories Are Too Big: Yes, They Are!
Your User Stories Are Too Big: Yes, They Are!TechWell
 
From Unclear and Unrealistic Requirements to Achievable User Stories
From Unclear and Unrealistic Requirements to Achievable User StoriesFrom Unclear and Unrealistic Requirements to Achievable User Stories
From Unclear and Unrealistic Requirements to Achievable User StoriesTechWell
 
Continuous Discovery: The Path to Learning and Growing
Continuous Discovery: The Path to Learning and GrowingContinuous Discovery: The Path to Learning and Growing
Continuous Discovery: The Path to Learning and GrowingTechWell
 
The Soft Skills of Great Software Developers
The Soft Skills of Great Software DevelopersThe Soft Skills of Great Software Developers
The Soft Skills of Great Software DevelopersTechWell
 
Experiments: The Good, the Bad, and the Beautiful
Experiments: The Good, the Bad, and the BeautifulExperiments: The Good, the Bad, and the Beautiful
Experiments: The Good, the Bad, and the BeautifulTechWell
 
Scaling Scrum with Scrum™ (SSwS): A Universal Framework
Scaling Scrum with Scrum™ (SSwS): A Universal FrameworkScaling Scrum with Scrum™ (SSwS): A Universal Framework
Scaling Scrum with Scrum™ (SSwS): A Universal FrameworkTechWell
 
Use Feature Flags for Clean Deployments
Use Feature Flags for Clean DeploymentsUse Feature Flags for Clean Deployments
Use Feature Flags for Clean DeploymentsTechWell
 
How Far Can You Go with Agile for Embedded Software?
How Far Can You Go with Agile for Embedded Software?How Far Can You Go with Agile for Embedded Software?
How Far Can You Go with Agile for Embedded Software?TechWell
 
Determining Business Value in Agile Development
Determining Business Value in Agile DevelopmentDetermining Business Value in Agile Development
Determining Business Value in Agile DevelopmentJosiah Renaudin
 
Agile Hacks: Creative Solutions for Common Agile Issues
Agile Hacks: Creative Solutions for Common Agile IssuesAgile Hacks: Creative Solutions for Common Agile Issues
Agile Hacks: Creative Solutions for Common Agile IssuesTechWell
 
Use Business Analysts for User Interface Design
Use Business Analysts for User Interface DesignUse Business Analysts for User Interface Design
Use Business Analysts for User Interface DesignTechWell
 
What Hollywood Can Teach Us about Software Testing
What Hollywood Can Teach Us about Software TestingWhat Hollywood Can Teach Us about Software Testing
What Hollywood Can Teach Us about Software TestingTechWell
 
Apply Phil Jackson’s Coaching Principles to Build Better Agile Teams
Apply Phil Jackson’s Coaching Principles to Build Better Agile TeamsApply Phil Jackson’s Coaching Principles to Build Better Agile Teams
Apply Phil Jackson’s Coaching Principles to Build Better Agile TeamsTechWell
 
Don’t Make These Scrum Mistakes
Don’t Make These Scrum MistakesDon’t Make These Scrum Mistakes
Don’t Make These Scrum MistakesTechWell
 
Create Brainstorming Commandos for Creative Problem Solving
Create Brainstorming Commandos for Creative Problem SolvingCreate Brainstorming Commandos for Creative Problem Solving
Create Brainstorming Commandos for Creative Problem SolvingTechWell
 
Architecture vs. Design in Agile: What’s the Right Answer?
Architecture vs. Design in Agile: What’s the Right Answer?Architecture vs. Design in Agile: What’s the Right Answer?
Architecture vs. Design in Agile: What’s the Right Answer?TechWell
 
Agile Metrics: Measuring Outcomes and Results
Agile Metrics: Measuring Outcomes and ResultsAgile Metrics: Measuring Outcomes and Results
Agile Metrics: Measuring Outcomes and ResultsTechWell
 
A Case Study in Metrics-Driven DevOps
A Case Study in Metrics-Driven DevOpsA Case Study in Metrics-Driven DevOps
A Case Study in Metrics-Driven DevOpsTechWell
 
Predictive Test Planning to Improve System Quality
Predictive Test Planning to Improve System QualityPredictive Test Planning to Improve System Quality
Predictive Test Planning to Improve System QualityTechWell
 
DevOps and the Culture of High-Performing Software Organizations
DevOps and the Culture of High-Performing Software OrganizationsDevOps and the Culture of High-Performing Software Organizations
DevOps and the Culture of High-Performing Software OrganizationsJosiah Renaudin
 

Viewers also liked (20)

Your User Stories Are Too Big: Yes, They Are!
Your User Stories Are Too Big: Yes, They Are!Your User Stories Are Too Big: Yes, They Are!
Your User Stories Are Too Big: Yes, They Are!
 
From Unclear and Unrealistic Requirements to Achievable User Stories
From Unclear and Unrealistic Requirements to Achievable User StoriesFrom Unclear and Unrealistic Requirements to Achievable User Stories
From Unclear and Unrealistic Requirements to Achievable User Stories
 
Continuous Discovery: The Path to Learning and Growing
Continuous Discovery: The Path to Learning and GrowingContinuous Discovery: The Path to Learning and Growing
Continuous Discovery: The Path to Learning and Growing
 
The Soft Skills of Great Software Developers
The Soft Skills of Great Software DevelopersThe Soft Skills of Great Software Developers
The Soft Skills of Great Software Developers
 
Experiments: The Good, the Bad, and the Beautiful
Experiments: The Good, the Bad, and the BeautifulExperiments: The Good, the Bad, and the Beautiful
Experiments: The Good, the Bad, and the Beautiful
 
Scaling Scrum with Scrum™ (SSwS): A Universal Framework
Scaling Scrum with Scrum™ (SSwS): A Universal FrameworkScaling Scrum with Scrum™ (SSwS): A Universal Framework
Scaling Scrum with Scrum™ (SSwS): A Universal Framework
 
Use Feature Flags for Clean Deployments
Use Feature Flags for Clean DeploymentsUse Feature Flags for Clean Deployments
Use Feature Flags for Clean Deployments
 
How Far Can You Go with Agile for Embedded Software?
How Far Can You Go with Agile for Embedded Software?How Far Can You Go with Agile for Embedded Software?
How Far Can You Go with Agile for Embedded Software?
 
Determining Business Value in Agile Development
Determining Business Value in Agile DevelopmentDetermining Business Value in Agile Development
Determining Business Value in Agile Development
 
Agile Hacks: Creative Solutions for Common Agile Issues
Agile Hacks: Creative Solutions for Common Agile IssuesAgile Hacks: Creative Solutions for Common Agile Issues
Agile Hacks: Creative Solutions for Common Agile Issues
 
Use Business Analysts for User Interface Design
Use Business Analysts for User Interface DesignUse Business Analysts for User Interface Design
Use Business Analysts for User Interface Design
 
What Hollywood Can Teach Us about Software Testing
What Hollywood Can Teach Us about Software TestingWhat Hollywood Can Teach Us about Software Testing
What Hollywood Can Teach Us about Software Testing
 
Apply Phil Jackson’s Coaching Principles to Build Better Agile Teams
Apply Phil Jackson’s Coaching Principles to Build Better Agile TeamsApply Phil Jackson’s Coaching Principles to Build Better Agile Teams
Apply Phil Jackson’s Coaching Principles to Build Better Agile Teams
 
Don’t Make These Scrum Mistakes
Don’t Make These Scrum MistakesDon’t Make These Scrum Mistakes
Don’t Make These Scrum Mistakes
 
Create Brainstorming Commandos for Creative Problem Solving
Create Brainstorming Commandos for Creative Problem SolvingCreate Brainstorming Commandos for Creative Problem Solving
Create Brainstorming Commandos for Creative Problem Solving
 
Architecture vs. Design in Agile: What’s the Right Answer?
Architecture vs. Design in Agile: What’s the Right Answer?Architecture vs. Design in Agile: What’s the Right Answer?
Architecture vs. Design in Agile: What’s the Right Answer?
 
Agile Metrics: Measuring Outcomes and Results
Agile Metrics: Measuring Outcomes and ResultsAgile Metrics: Measuring Outcomes and Results
Agile Metrics: Measuring Outcomes and Results
 
A Case Study in Metrics-Driven DevOps
A Case Study in Metrics-Driven DevOpsA Case Study in Metrics-Driven DevOps
A Case Study in Metrics-Driven DevOps
 
Predictive Test Planning to Improve System Quality
Predictive Test Planning to Improve System QualityPredictive Test Planning to Improve System Quality
Predictive Test Planning to Improve System Quality
 
DevOps and the Culture of High-Performing Software Organizations
DevOps and the Culture of High-Performing Software OrganizationsDevOps and the Culture of High-Performing Software Organizations
DevOps and the Culture of High-Performing Software Organizations
 

Similar to White Box Testing: It’s Not Just for Developers Any More

Challenges and approaches to automating testing of software
Challenges and approaches to automating testing of softwareChallenges and approaches to automating testing of software
Challenges and approaches to automating testing of softwareDavid Montero
 
Randy Rice - Defect Sampling – An Innovation for Focused Testing - EuroSTAR 2012
Randy Rice - Defect Sampling – An Innovation for Focused Testing - EuroSTAR 2012Randy Rice - Defect Sampling – An Innovation for Focused Testing - EuroSTAR 2012
Randy Rice - Defect Sampling – An Innovation for Focused Testing - EuroSTAR 2012TEST Huddle
 
Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them Optimizely
 
Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them Optimizely
 
When Testing Meets Code Review: Why and How Developers Review Tests
When Testing Meets Code Review: Why and How Developers Review TestsWhen Testing Meets Code Review: Why and How Developers Review Tests
When Testing Meets Code Review: Why and How Developers Review TestsDelft University of Technology
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Danny Preussler
 
Variables & Expressions
Variables & ExpressionsVariables & Expressions
Variables & ExpressionsRich Price
 
Move test planning before implementation
Move test planning before implementationMove test planning before implementation
Move test planning before implementationTed Cheng
 
Scaling Your Tests: Continued Change Without Fear
Scaling Your Tests: Continued Change Without FearScaling Your Tests: Continued Change Without Fear
Scaling Your Tests: Continued Change Without FearTechWell
 
Testing with Limited, Vague, and Missing Requirements
Testing with Limited, Vague, and Missing RequirementsTesting with Limited, Vague, and Missing Requirements
Testing with Limited, Vague, and Missing RequirementsTechWell
 
QAI QUEST 2016 Webinar Series: Pairwise Testing w/ Philip Lew
QAI QUEST 2016 Webinar Series: Pairwise Testing w/ Philip LewQAI QUEST 2016 Webinar Series: Pairwise Testing w/ Philip Lew
QAI QUEST 2016 Webinar Series: Pairwise Testing w/ Philip LewXBOSoft
 
The elusive tester to developer ratio2014
The elusive tester to developer ratio2014The elusive tester to developer ratio2014
The elusive tester to developer ratio2014rrice2000
 
Do you have a #bug? Your unit tests are not well planned
Do you have a #bug? Your unit tests are not well plannedDo you have a #bug? Your unit tests are not well planned
Do you have a #bug? Your unit tests are not well plannedJosé San Román A. de Lara
 
Unit Test Your Database
Unit Test Your DatabaseUnit Test Your Database
Unit Test Your DatabaseDavid Wheeler
 
Test Management for Large, Multi-Project Programs
Test Management for Large, Multi-Project ProgramsTest Management for Large, Multi-Project Programs
Test Management for Large, Multi-Project ProgramsTechWell
 
Shift-Left Testing: QA in a DevOps World by David Laulusa
Shift-Left Testing: QA in a DevOps World by David LaulusaShift-Left Testing: QA in a DevOps World by David Laulusa
Shift-Left Testing: QA in a DevOps World by David LaulusaQA or the Highway
 
DSR Testing (Part 1)
DSR Testing (Part 1)DSR Testing (Part 1)
DSR Testing (Part 1)Steve Upton
 
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flexmichael.labriola
 

Similar to White Box Testing: It’s Not Just for Developers Any More (20)

Testing smells
Testing smellsTesting smells
Testing smells
 
Challenges and approaches to automating testing of software
Challenges and approaches to automating testing of softwareChallenges and approaches to automating testing of software
Challenges and approaches to automating testing of software
 
Randy Rice - Defect Sampling – An Innovation for Focused Testing - EuroSTAR 2012
Randy Rice - Defect Sampling – An Innovation for Focused Testing - EuroSTAR 2012Randy Rice - Defect Sampling – An Innovation for Focused Testing - EuroSTAR 2012
Randy Rice - Defect Sampling – An Innovation for Focused Testing - EuroSTAR 2012
 
Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them
 
Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them Product Experimentation Pitfalls & How to Avoid Them
Product Experimentation Pitfalls & How to Avoid Them
 
When Testing Meets Code Review: Why and How Developers Review Tests
When Testing Meets Code Review: Why and How Developers Review TestsWhen Testing Meets Code Review: Why and How Developers Review Tests
When Testing Meets Code Review: Why and How Developers Review Tests
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)
 
Variables & Expressions
Variables & ExpressionsVariables & Expressions
Variables & Expressions
 
Move test planning before implementation
Move test planning before implementationMove test planning before implementation
Move test planning before implementation
 
Scaling Your Tests: Continued Change Without Fear
Scaling Your Tests: Continued Change Without FearScaling Your Tests: Continued Change Without Fear
Scaling Your Tests: Continued Change Without Fear
 
Testing with Limited, Vague, and Missing Requirements
Testing with Limited, Vague, and Missing RequirementsTesting with Limited, Vague, and Missing Requirements
Testing with Limited, Vague, and Missing Requirements
 
QAI QUEST 2016 Webinar Series: Pairwise Testing w/ Philip Lew
QAI QUEST 2016 Webinar Series: Pairwise Testing w/ Philip LewQAI QUEST 2016 Webinar Series: Pairwise Testing w/ Philip Lew
QAI QUEST 2016 Webinar Series: Pairwise Testing w/ Philip Lew
 
The elusive tester to developer ratio2014
The elusive tester to developer ratio2014The elusive tester to developer ratio2014
The elusive tester to developer ratio2014
 
Do you have a #bug? Your unit tests are not well planned
Do you have a #bug? Your unit tests are not well plannedDo you have a #bug? Your unit tests are not well planned
Do you have a #bug? Your unit tests are not well planned
 
Intro to TDD
Intro to TDDIntro to TDD
Intro to TDD
 
Unit Test Your Database
Unit Test Your DatabaseUnit Test Your Database
Unit Test Your Database
 
Test Management for Large, Multi-Project Programs
Test Management for Large, Multi-Project ProgramsTest Management for Large, Multi-Project Programs
Test Management for Large, Multi-Project Programs
 
Shift-Left Testing: QA in a DevOps World by David Laulusa
Shift-Left Testing: QA in a DevOps World by David LaulusaShift-Left Testing: QA in a DevOps World by David Laulusa
Shift-Left Testing: QA in a DevOps World by David Laulusa
 
DSR Testing (Part 1)
DSR Testing (Part 1)DSR Testing (Part 1)
DSR Testing (Part 1)
 
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
 

More from TechWell

Failing and Recovering
Failing and RecoveringFailing and Recovering
Failing and RecoveringTechWell
 
Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization TechWell
 
Test Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTest Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTechWell
 
System-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartSystem-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartTechWell
 
Build Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyBuild Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyTechWell
 
Testing Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTesting Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTechWell
 
Implement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowImplement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowTechWell
 
Develop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityDevelop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityTechWell
 
Eliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyEliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyTechWell
 
Transform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTransform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTechWell
 
The Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipThe Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipTechWell
 
Resolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsResolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsTechWell
 
Pin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GamePin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GameTechWell
 
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsAgile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsTechWell
 
A Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationA Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationTechWell
 
Databases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessDatabases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessTechWell
 
Mobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateMobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateTechWell
 
Cultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessCultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessTechWell
 
Turn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTurn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTechWell
 

More from TechWell (20)

Failing and Recovering
Failing and RecoveringFailing and Recovering
Failing and Recovering
 
Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization
 
Test Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTest Design for Fully Automated Build Architecture
Test Design for Fully Automated Build Architecture
 
System-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartSystem-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good Start
 
Build Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyBuild Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test Strategy
 
Testing Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTesting Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for Success
 
Implement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowImplement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlow
 
Develop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityDevelop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your Sanity
 
Ma 15
Ma 15Ma 15
Ma 15
 
Eliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyEliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps Strategy
 
Transform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTransform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOps
 
The Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipThe Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—Leadership
 
Resolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsResolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile Teams
 
Pin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GamePin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile Game
 
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsAgile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
 
A Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationA Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps Implementation
 
Databases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessDatabases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery Process
 
Mobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateMobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to Automate
 
Cultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessCultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for Success
 
Turn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTurn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile Transformation
 

Recently uploaded

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 

Recently uploaded (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 

White Box Testing: It’s Not Just for Developers Any More

  • 3. 5/10/16   1   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   1 Unit  Tes)ng:   Not  just  for  developers  anymore   Robert  Vanderwall,   Ul)mate  So?ware  Group   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Agenda •  Current Trends •  Test Pyramid •  Code Patterns •  Metrics •  Adding Value •  Wrap-up
  • 4. 5/10/16   2   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Current Trends •  Shift left •  Death of Testing •  Deep Collaboration June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Shift Left Many activities are moving earlier, including testing. •  Testing begins at inception. •  Testing is an integral part of the development process. Especially
  • 5. 5/10/16   3   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Death of Testing Several companies have adopted a “No QA” approach •  Engineers are becoming hybrids. •  Generalists with area of specialization. •  Developers do their own testing. •  Ownership through to production. June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Deep Collaboration • Cross functional teams • Continuous conversations • Group ownership of quality
  • 6. 5/10/16   4   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Quality Engineer •  Understand ways to stay relevant •  Enhance testing skills •  Test with an understanding of what information developers would find useful June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Software Developer •  Better appreciation for the value of exploratory testing •  Boost ability to deliver value by collaborating well with testers •  Improve ability to turn testing observations into useful ideas for unit testing
  • 7. 5/10/16   5   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Test Pyramid •  Most  of  the  tests  are  unit  tests   •  Fewer  tests  are  integra)on  tests   •  Least  number  of  tests  at  system   level   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Purpose •  Unit tests are cheap and fast, they provide fast feedback. •  Integration tests verify interactions between components. •  System tests verify value is realized.
  • 8. 5/10/16   6   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Inverted Pyramid •  Many UI tests but few unit tests. •  Automation effort without development support. •  Lack of development practices for unit testing. June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Test Space Needle •  Lots of unit tests, plenty of UI tests. •  Almost no integration tests. •  Overconfidence in unit testing. •  Ends up with big-bang integration.
  • 9. 5/10/16   7   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Coding Patterns •  A few easy patterns •  A few not so easy patterns •  Pointers June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Easy Pattern - Sequence What could go wrong? •  Operator may be wrong •  z  =  x  *  y   •  Bad test x =2, y=2 •  No discriminatory power def seq(x,y) : z = x + y return z
  • 10. 5/10/16   8   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Test Pattern X Y Expected  Output   def seq(x,y) : z = x + y return z 0 0 7 0 0 9 6 5 Are  these  tests  any  good?       What  is  the  business  need   being  sa)sfied?     Total  exemp)ons.            these  may  be  fine     Total  sales.          these  are  not  representa)ve.   3 8 Number,  0,  >   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Test Pattern - combinations X Y Expected  Output   def seq(x,y) : z = x + y return z 0 0 7 0 0 9 6 5 What  is  the  expected  output?     0,  7,  9,  11,  11  ?     Did  you  get  the  expecta)ons   from  the  code?     Could  the  tests  ever  fail?   3 8
  • 11. 5/10/16   9   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Easy Pattern - Condition What could go wrong? •  Relation may be wrong •  x  <  10,  x  >=  10   •  Value may be wrong •  x  >  20   def condition (x) : if x > 10: z = x + 10 else: z = x -10 return z June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Test Pattern – Boundary tests X   Expected  Output   -­‐10   0   9   10   11   20   Edge  -­‐1,  Edge,  edge  +1,  mid-­‐range   def condition (x) : if x > 10: z = x + 10 else: z = x -10 return z
  • 12. 5/10/16   10   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Test Pattern – Boundary tests X   Y   Expected  Output   0   0   10   10   10   11   11   10   8   -­‐8   -­‐5   -­‐6   def condition (x,y) : if x > y: z = x - y else: z = x + y return z Edge,  edge  +1,  edge  -­‐1   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Easy Pattern - Loop What could go wrong? •  Off-by-one •  Didn’t  iniPalize  properly   •  Didn’t  finalize  properly   def loop(L): for l in L: do_something(l) return results
  • 13. 5/10/16   11   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Test Pattern – Loop L   Expected   Output   empty   1  item   2  items   Typical  number  of  items   Max  number  of  items   Max+1  items   def loop(L): for l in L: do_something(l) return results June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Lessons •  Test inputs should reflect expected uses. •  Expected output should come from business function NOT from the code. •  Try <, =, > for sequences. •  Try edge-1, edge, edge+1, mid-range for boundary. •  Try 0, 1,2, t, max. max+1 for loops.
  • 14. 5/10/16   12   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   References https://msdn.microsoft.com/en-us/library/cc514239.aspx http://www.exampler.com/testing-com/test-patterns/patterns/ index.html June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Metrics If you can’t measure it, you can’t improve it – Peter Drucker •  Code Coverage •  Code Complexity •  Mutation Score
  • 15. 5/10/16   13   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Code Coverage Most IDEs have a way to measure coverage. Look for high coverage, esp: critical areas, complicated areas. Statement coverage first, then branch coverage. June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Code Coverage If a line of code is not executed, it is not tested. If a line of code is not tested, it may have a bug. Inspections help, a lot!
  • 16. 5/10/16   14   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Code Coverage 1. def condition (items, y) : 2. for item in items: 3. if item.x > y: 4. z += a(item) 5. else: 6. z += b(item) 7. return z How  many  statements?   How  many  tests  to  cover   them?   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Code Coverage 1. def condition (items, y) : 2. for item in items: 3. if item.x > y: 4. z += a(item) 5. else: 6. z += b(item) 7. return z How  many  branches?   How  many  tests  to  cover   them?   1   2 3 4   6   7  
  • 17. 5/10/16   15   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Coverage  caveats  •  I  noPced  that  the  good  developers   drink  lots  of  coffee.   •  SO   •  I  have  all  developers  drink  6  cups  a     day.   •  Surely,  I  will  get  beber  code,  right?   •  NO:    CorrelaPon  is  not  causality.   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Code Coverage Caution Low  coverage  tells  you  that  some  code  has  not  been   tested.     High  coverage  tells  you  nothing!    Therefore,  it  should   be  a  guidepost,  NOT  be  a  goal.      hbp://www.exampler.com/tesPng-­‐com/wriPngs/coverage.pdf  
  • 18. 5/10/16   16   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Code Complexity Many IDEs can measure Cyclomatic Complexity. 1-5 : Simple and easily understandable. 6-15: Rather complicated, better test it a lot. > 15: Quite complicated, probably hard to test and likely a haven for many bugs. June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Mutation Testing If I change the code, does a test fail? If not, then there are ways the code can be wrong that the tests will not find. A Few tools available, but manually altering the code works well, esp. for JS.
  • 19. 5/10/16   17   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   X   Y   Expected  Output   0   0   10   10   10   11   11   10   8   -­‐8   -­‐5   -­‐6   def condition (x,y) : if x > y: z = x - y else: z = x + y return z June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Complexity Cautions If every module has very low complexity, where is the complex business logic? Not all statements are equally complex. A complex linq query may show CC=1.
  • 20. 5/10/16   18   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   CRISP tests C – Clear purpose R – Repeatable I – Independent S – Simple P – Performant DRY – Don’t repeat yourself Tests may have duplicate code June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Adding Value In a left shifted highly collaborative environment, how can we add value? We just saw an overview of the test pyramid and a few testing patterns. How can we make that work for us?
  • 21. 5/10/16   19   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Leverage Left Shift • Review unit tests for coverage, patterns, etc. • Pull together the tester-facing discipline of Exploratory testing and the developer-facing discipline of Unit testing. • Provide  insights  into  the  product  and  code  through  exploring  and   leverage  these  insights  via  unit  tesPng.   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Leverage collaboration • Become more helpful for developers: •  CommunicaPng  bugs  found   •  AND  ideas  from  exploraPon  that  could  be  used  to  improve  unit  tests  
  • 22. 5/10/16   20   June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall   Leverage Automation • Combine the forces of machines and humans. • Machines  are  parPcularly  well  suited   for  exploring  large  computaPonal   space.   • What  they  can’t  do  is  have  any  insight   or  creaPve  ideas.     June  5–10,  2016  |  Las  Vegas,  NV  Robert  Vanderwall