+ All Categories
Home > Technology > Introduction to TDD and Mocking

Introduction to TDD and Mocking

Date post: 10-May-2015
Category:
Upload: saeed-shargi-ghazani
View: 3,519 times
Download: 4 times
Share this document with a friend
Description:
introduction to test driven development and mocking
Popular Tags:
24
Introduction to Test Driven Development And Mocking @saeed_shargi
Transcript
Page 1: Introduction to TDD and Mocking

Introduction to

Test Driven Development

And

Mocking

@saeed_shargi

Page 2: Introduction to TDD and Mocking

The Problem

Good

FastCheap

Page 3: Introduction to TDD and Mocking

Time taken to fix bugs

Design Implementation QA Post-Release0

250

500

750

1000

Page 4: Introduction to TDD and Mocking

Solution

Testing

Test Driven Development

Page 5: Introduction to TDD and Mocking

Testing

Design Implementation Test

Page 6: Introduction to TDD and Mocking

TDD

Design Test Implementation

Page 7: Introduction to TDD and Mocking

TDD

Design Test Implementation Test

Page 8: Introduction to TDD and Mocking

TDD

Design

Test

Implementation

Test

Page 9: Introduction to TDD and Mocking

TDD

Design

Test

Implementation

Test

Page 10: Introduction to TDD and Mocking

What is TDD?

Write a test before writing a code. Specification not validation Think through requirements or design

before write code. Programming technique Ron Jefferies -> write clean code

Page 11: Introduction to TDD and Mocking

What is TDD?

Page 12: Introduction to TDD and Mocking

What is TDD?

Page 13: Introduction to TDD and Mocking

What is TDD?

TDD = Refactoring + TFD

Page 14: Introduction to TDD and Mocking

Two Level of TDD

1) Acceptance TDD (ATDD)

2) Developer TDD

Page 15: Introduction to TDD and Mocking

ATDD and TDD Together

Page 16: Introduction to TDD and Mocking

Development Style

1) KISS

2) YAGNI

Writing only the code necessary to pass test

Page 17: Introduction to TDD and Mocking

Benefits

1) Suit unit test provides that components working.

2) Clear code

3) Forces critical analysis and design

4) Better design , loosely coupled , easily maintainable

5) Reduced debugging time

Page 18: Introduction to TDD and Mocking

Tools

Cpputest csUnit (.Net) Cunit Dunit (Delphi) DBUnit JUnit NUnit PHPUnit xUnit.net

Page 19: Introduction to TDD and Mocking

Mocking

Simple classes dose not have dependencies.

In Action classes maybe have external dependencies like connect to database , connect to web services.

Good Test should be isolated. Integration test. Test should be fast.

Page 20: Introduction to TDD and Mocking

Mocking

Two way to isolated :

1) Use Interface

2) Mocking framework

Page 21: Introduction to TDD and Mocking

Example of using Interface

Interfaces to isolated database and web services :

public interface IEmailSource{    IEnumerable<string> GetEmailAddresses();} public interface IEmailDataStore{    void SaveEmailAddresses(IEnumerable<string> emailAddresses); }

Page 22: Introduction to TDD and Mocking

Example of using Interface

Mock classes :public class MockEmailSource : IEmailSource{   public IEnumerable<string> EmailAddressesToReturn { get; set; }   public IEnumerable<string> GetEmailAddresses()   {       return EmailAddressesToReturn;   }} public class MockEmailDataStore : IEmailDataStore{   public IEnumerable<string> SavedEmailAddresses { get; set; }   public void SaveEmailAddresses(IEnumerable<string> emailAddresses)   {       SavedEmailAddresses = emailAddresses;   }}

Page 23: Introduction to TDD and Mocking

Mocking Frameworks

Nmock Moq Rhino Mocks TypeMock EasyMock.Net

Page 24: Introduction to TDD and Mocking

End


Recommended