agile developers go testing part ii n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Agile Developers Go Testing Part II PowerPoint Presentation
Download Presentation
Agile Developers Go Testing Part II

Loading in 2 Seconds...

play fullscreen
1 / 55

Agile Developers Go Testing Part II - PowerPoint PPT Presentation


  • 99 Views
  • Uploaded on

Agile Developers Go Testing Part II. Darcy Casselman @ flying_squirrel Alexei Zheglov @az1. November 2010. What are we talking about today?. A lot of things… They may seem disconnected, but they all: improve software quality involve testing done by developers

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Agile Developers Go Testing Part II' - paxton


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
agile developers go testing part ii

Agile Developers Go TestingPart II

Darcy Casselman @flying_squirrel

Alexei Zheglov @az1

November 2010

what are we talking about today
What are we talking about today?
  • A lot of things…
  • They may seem disconnected, but they all:
    • improve software quality
    • involve testing
    • done by developers
  • None of them can do the job alone
  • We cannot:
    • Talk about all of them
    • Give them equal time
unit testing
Unit Testing
  • We showed you a very simple unit test example earlier
  • We’ll show you a more difficult example later
  • Let’s step back first
focus on quality
Focus on Quality

quotes

"...in 2000, during the dot-com bubble, ... software quality for North American teams... ranged from 6 defects per function point to less than 3 per 100 function point, a range of 200 to 1.  The midpoint is approximately 1 defect per 0.6 to 1.0 function points.  This implies that it is common for teams to spend more than 90 percent of their effort fixing defects.”

http://www.amazon.com/Kanban-David-J-Anderson/dp/0984521402/

http://www.amazon.com/Software-Assessments-Benchmarks-Best-Practices/dp/0201485427/

logical connection
Logical Connection?

“The midpoint is approximately 1 defect per 0.6 to 1.0 function points.  This implies that it is common for teams to spend more than 90 percent of their effort fixing defects.”

How does he know what they are spending their time on?

slide7
=

Capacity Allocation To Fixing Defects

Defect Injection Rate

bugs features
Bugs, Features

http://www.flickr.com/photos/dratz/1045336659/

another view
Another View
  • Root-cause analysis of established practices
  • E.g. unit testing
  • Five-whys applied to the solution, not the problem
  • The link between the third and fourth whys?

Source: Karl Scotland

http://availagility.co.uk/2010/10/04/a-root-cause-analysis-of-agile-practices/

compare two teams
Compare Two Teams

Team A

Team B

10 features

8 bugs

  • Just finished 40 “features” (units of work)
  • Introduced 10 “bugs” (units of rework)
team a progression
Team A Progression
  • Terms beyond the first three are negligible
  • Most defects eliminated in the next 2 releases
  • The 2nd maintenance release scope is very small
  • Illusion that any team can do it
  • Time spent fixing defects: 25%
team b progression
Team B Progression
  • The sum of the first 3 terms: only 24.4 (less than half of the total!)
  • The sum of the first 10: approx. 45
  • Time spent fixing defects: 80%
we want to be more like team a
We want to be more like Team A

(or better)

and certainly not like Team B

testing
Testing
  • Is what we are talking about today
  • Leaving out other technical practices
  • Remembering that testing itself does not provide quality
test matrix6
Test Matrix

Sources: Robert C. Martin, Rob Diana http://regulargeek.com/2009/06/12/how-much-testing-is-enough/

test matrix7
Test Matrix

Sources: Robert C. Martin, Rob Diana http://regulargeek.com/2009/06/12/how-much-testing-is-enough/

test matrix8
Test Matrix

Sources: Robert C. Martin, Rob Diana http://regulargeek.com/2009/06/12/how-much-testing-is-enough/

consider this test script
Consider This Test Script
  • A new customer registers
  • The customer places three books in the shopping cart
  • The customer goes to check-out
  • The customer fills in their delivery address (province: Ontario)
  • The system offers free delivery to the customer

Source: GojkoAdzic. Bridging the Communication Gap, pp. 78-79

http://www.amazon.com/gp/product/0955683610

compare the test script to this
Compare the Test Script to This

The system offers free delivery to Ontario customers when they place their first order and their order contains at least three books

how to do it
How To Do It
  • Collaborate:
    • developers
    • business analysts
    • testers
    • product owner
  • Which tool to use is not as important
  • Don’t look up terminology in Wikipedia
books
Books

http://www.amazon.com/gp/product/0955683610

http://manning.com/adzic/

what if we don t
What If We Don’t?
  • Configuration
  • Database data
  • Remote services
  • Permissions
  • Time to run
  • Infrequent errors
  • Dependencies in development
can you run unit tests like this
Can You Run Unit Tests Like This?

http://www.flickr.com/photos/theredproject/2878006012/

code example
Code Example

Caller

StudentRepository

GradingEngine

NotificationService

code example1
Code Example

Unit Test

Stub

System Under Test

Mock

slide40

Source http://www.osherove.com/blog/2010/9/10/2010-poll-which-isolation-framework-do-you-use-in-net.htmlSeptember 2010

two camps
Two Camps

Design for Testability:

Moq, RhinoMocks, etc.

Mock Anything, e.g.

Typemock Isolator, JustMock

Rely on Profiler API

Can intercept anything and run something else instead

Can fake statics, sealed classes, etc.

Don’t force design for testability

  • Dynamically fake objects implementing interfaces/base classes in their own way
  • Require software under test to be designed to be testable
  • Programmers to follow SOLID principles (esp. Dependency Inversion Principle)
popular frameworks java
Popular Frameworks (Java)
  • “Conventional”:
    • Mockitohttp://code.google.com/p/mockito/
    • EasyMockhttp://easymock.org/
    • JMockhttp://www.jmock.org/
  • Alternative:
    • JMockithttp://code.google.com/p/jmockit/
roy osherove
Roy Osherove
  • The Chief Architect at TypeMock
  • Wrote: “A customer switches to Moq – and I’m happy”
  • And: “This is pure awesome. This is why I come to work every day.”
  • How is it possible?
  • Read it: http://www.osherove.com/blog/2010/9/29/a-customer-switches-to-moq-and-im-happy.html
back to our code example
Back to Our Code Example
  • Grading engine operates on Student and Grade
  • But Student has a Department
  • And Grade has a Course and Course has a Semester
  • We start mocking
  • Soon, we have a lot of mocks
every time a mock returns another mock a fairy dies
“Every time a mock returns another mock a fairy dies”
  • Who said it?
  • Not the guy whose tweet comes up first in Google search results
  • I am not 100% sure
  • What the heck does it mean anyway?
every time a mock returns another mock a fairy dies1
“Every time a mock returns another mock a fairy dies”
  • Who said it?
  • Not the guy whose tweet comes up first in Google search results
  • I am not 100% sure
  • What the heck does it mean anyway?
  • We don’t have time for it in this presentation
slide47

http://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627/http://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627/

creating objects
Creating Objects
  • Constructor injection (as in our code example)
  • Factory
  • What if dependencies have dependencies?
  • What if dependencies of dependencies have dependencies?
pretty soon things begin to look like this
Pretty Soon, Things Begin To Look Like This

(and this is a simple example)

(different box color = different life span)

Source: http://ayende.com/Blog/archive/2010/01/22/rejecting-dependency-injection-inversion.aspx

these tools can help
These Tools Can Help
  • StructureMap
  • Castle Windsor
  • Unity
  • NInject
  • autofac
quality more important than this
Quality: More Important Than This

http://www.flickr.com/photos/markhillary/2681349855/

more conclusions
More Conclusions
  • You have to test
  • No single testing strategy is nearly enough
  • Employ multiple strategies
  • Each of them is difficult to master
  • We barely scratched the surface today
  • Agile brings testing into focus
  • Combine hard and soft skills
  • Collaborate