Your SlideShare is downloading. ×
0
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Introduction to TDD (Test Driven development) - Ahmed Shreef
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introduction to TDD (Test Driven development) - Ahmed Shreef

2,434

Published on

A short 20 minute introduction to Test Driven Development with simple example on unit testing using JUnit

A short 20 minute introduction to Test Driven Development with simple example on unit testing using JUnit

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,434
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
67
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Intro. To TDD  by  Ahmed Shreef     ahmed@shreef.com       20 Minute talks
  • 2. First, What is Unit Testing ?
  • 3. A Unit is the smallest testable part of your application.
  • 4. Unit Testing is all about breaking your application into small units and writing automated tests for each unit.
  • 5. Benefits of Unit Testing ..
  • 6. - Find problems early. - Reduce bug fixing time. - Monitoring of your code base.
  • 7. Gives confidence when future code changes are required Real low-level regression tests
  • 8. Real documentation that never lie
  • 9. Back to TDD *Test Driven Development*
  • 10. What we are used to do .. Design Code Test
  • 11. The TDD way .. Design Test Refactor Test Code
  • 12. Benefits of TDD .. The benefits of unit testing + …
  • 13. Encourage thinking about the interface before the implementation So, Can lead to more modularized, flexible, and extensible code
  • 14. Let Developers focus on the task at hand
  • 15. %99~ Code coverage
  • 16. Let me tell you a story ..
  • 17. Boss told me that he wants to build a robot that can get our developers drinks and meals to save them the time they lose every day on these little things and let them focus on writing more code
  • 18. I started by thinking about designing a Class that can warp the tasks done by the robot, and thought that we can name it OfficeBoy. It will have 2 methods : getMeal( mealName ) getDrink( drinkName )
  • 19. My second step: write test for the first method .. getMeal()
  • 20. import org.junit.*; import static org.junit.Assert; public class OfficeBoyTestCase { @Test Public void canGetMeals(){ OfficeBoy mabrouk = new OfficeBoy(); assertTrue( mabrouk.getMeal(“pizza”) instanceof Pizza ); } }
  • 21. If we try to build and run this test it will Fail even to compile as we still don't have the required classes ( OffficeBoy and Pizza )
  • 22. package com.shreef.robot; import com.shreef.robot.meals.*; public class OfficeBoy { public Meal getMeal(String mealName) { return new Pizza(); } }
  • 23. package com.shreef.robot.meals; public interface Meal { } public class Pizza implements Meal { }
  • 24. If we try to build and run this test it will Succeed, so now we are sure that our test works, and its time to continue the implementation of getMeal()
  • 25. package com.shreef.robot; import com.shreef.robot.meals.*; public class OfficeBoy { public Meal getMeal(String mealName) { try { Class mealClass = Class.forName( “com.shreef.meals.”+mealName); Constructor construct = mealClass.getConstructor( new Class[0] ); return (Meal)construct.newInstance(); } catch (Exception e) { return null; } } }
  • 26. So again we run the tests and it may Fail or Succeed. This is how TDD works
  • 27. 2 weeks later, a code change was requested. Our employees wanted the robot to get them a default meal when the requested meal isn't available instead of getting them nothing “null”. They agreed that the default meal can be “Koshary” as it's an always available meal in this city.
  • 28. 2 weeks, for a developer is enough to make him forget his name not just the code he wrote, and I didn't have enough time to do this task. So, I did ask one my colleagues to do it. And she came after 30 minutes and said that she did it !!
  • 29. Can you guess what She did ?
  • 30. Yes, she did read the tests and this let her understand how the code I wrote works without needing to ask me. Then, she edited the code and ran the tests and Woot!! it Succeeds .
  • 31. This was a glance about TDD. Now, The biggest challenge is to know how to write testable code. This can be a talk by itself ;)
  • 32. Thanks ..            Ahmed Shreef email: ahmed@shreef.com    blog: http://shreef.com    twitter: @shreef

×