Understanding Unit Testing
Upcoming SlideShare
Loading in...5

Understanding Unit Testing



Introduction to automated testing and unit testing

Introduction to automated testing and unit testing



Total Views
Slideshare-icon Views on SlideShare
Embed Views



1 Embed 5

http://www.linkedin.com 5



Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment
  • In procedural -> module/function, In OOP -> class/method. Jenis test paling mendalam. What you actually test is behavior.
  • Create projects
  • Go to codes
  • Go to codes
  • Copy files

Understanding Unit Testing Understanding Unit Testing Presentation Transcript

  • Introduction Ikhwan Hayat (a.k.a 1kHz) 9 years experience developingsoftware Freelance Software Developer ikhwanhayat@gmail.com2
  • manual3Testing?VSautomatedwhite boxVSblack boxacceptance testintegration testunit test
  • 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.
  • 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
  • 6REDGREENREFACTORWrite a failing test. With empty class/method.Fill in the class/method implementation. Make the tests pass.Make code better.
  • 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
  • 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
  • Design 9
  • Unit11Test
  • 12
  • Design 2 13
  • 14Unit Test
  • Design 3 15
  • 16repositoryVSactive record???
  • 17Unit Test
  • 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
  • 19Dependency InjectionSeparation of Interfaceand ImplementationSingle Responsibility Principal
  • 20Web Controller DI/IoC Setup
  • 21“Mocking” allow us toisolate dependentunits.
  • 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
  • 23Unit Test
  • 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
  • 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
  • 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…
  • MOAR! Google+ MyDev http://www.mydev.my/automated-testing-dalam-pembangunan-perisian.html ikhwanhayat@gmail.com27THANK YOU FOR LISTENING!