Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Understanding Unit Testing

3,961 views

Published on

Introduction to automated testing and unit testing

Published in: Technology, Education
  • Be the first to comment

Understanding Unit Testing

  1. 1. UnderstandingUnit TestingINTRODUCTION TO AUTOMATED TESTING AND UNIT TESTING
  2. 2. Introduction Ikhwan Hayat (a.k.a 1kHz) 9 years experience developingsoftware Freelance Software Developer ikhwanhayat@gmail.com2
  3. 3. manual3Testing?VSautomatedwhite boxVSblack boxacceptance testintegration testunit test
  4. 4. Unit? 4Unit testing is a method by which individual units ofsource code are tested to determine if they are fit foruse.One can view a unit as the smallest testable partof an application.Unit tests are created by programmers oroccasionally by white box testers during thedevelopment process.
  5. 5. TDD Test Driven Design It’s NOT testing, but using tests to DRIVE thedesign As a side-effect, you got unit tests!With good level of coverage!5
  6. 6. 6REDGREENREFACTORWrite a failing test. With empty class/method.Fill in the class/method implementation. Make the tests pass.Make code better.
  7. 7. Demo: Bank Account Requirements Can create bank accounts Can deposit money into account Can withdraw money from account Throw exception if balance is insufficient Can transfer money from one account to another Can insert and update accounts into database7
  8. 8. 8IDE / Platformhttp://www.microsoft.com/visualstudio/eng/products/visual-studio-express-for-webhttps://code.google.com/p/moq/Unit Testing FrameworkMocking Frameworkhttp://nunit.org/Tools
  9. 9. Design 9
  10. 10. 10ARRANGEACTASSERT
  11. 11. Unit11Test
  12. 12. 12
  13. 13. Design 2 13
  14. 14. 14Unit Test
  15. 15. Design 3 15
  16. 16. 16repositoryVSactive record???
  17. 17. 17Unit Test
  18. 18. A good unit test is… Isolated/independent Test one thing at a time. Unit under test doesn’t depend on the other to make test runs. Repeatable Running multiple times yields the same result. Doesn’t rely on environment. Fast You want to repeat it again and again. You want it to be a pleasure to work with. Self-Documenting Test code and code under test clear and concise. Can be a reference for usage of your class/method/etc.18
  19. 19. 19Dependency InjectionSeparation of Interfaceand ImplementationSingle Responsibility Principal
  20. 20. 20Web Controller DI/IoC Setup
  21. 21. 21“Mocking” allow us toisolate dependentunits.
  22. 22. Types of Test Doubles Dummy objects are passed around but never actuallyused. Usually they are just used to fill parameter lists. Fake objects actually have workingimplementations, but usually take some shortcut whichmakes them not suitable for production. Stub objects provide canned answers to calls madeduring the test, usually not responding at all to anythingoutside whats programmed in for the test. Mock objects are pre-programmed with expectationswhich form a specification of the calls they areexpected to receive.22
  23. 23. 23Unit Test
  24. 24. Benefits Instant feedback Write test, write code, see instant result. Promote modularity in your design DI, SRP, Interface vs Implementation. Safety net Change/add code and check if business rules are stillhonored. Free documentation Can be a reference for usage of yourclass/method/etc.24
  25. 25. Done! What is unit testing. TDD. How to write good unit tests. How unit testing can benefit us.25We have learned…Get the codes and slides at…https://github.com/ikhwanhayat/jomweb_unittest
  26. 26. Next? Learning BDD (Behavior Driven Design). Research CI (Continuous Integration). Learn on how to design testable systems. Use unit testing for your project!(I mean, seriously, USE IT!)26You can go on with…
  27. 27. MOAR! Google+ MyDev http://www.mydev.my/automated-testing-dalam-pembangunan-perisian.html ikhwanhayat@gmail.com27THANK YOU FOR LISTENING!

×