Unit Testing & Test Driven Development
-
Upload
ersanbilik -
Category
Technology
-
view
1.568 -
download
0
description
Transcript of Unit Testing & Test Driven Development
SOFTWARE UNİT TESTİNGAND
TEST DRİVEN DEVELOPMENT WİTH NUNİT FRAMEWORK
byErsan BİLİK
So.. What is Unit Testing ?
unit : smallest testable part of an application an individual program a function a procedure a method.. depends on your
viewpoint !
So.. What is Unit Testing (cont’d)
test: a means of determining the presence, quality or truth of something determining “the unit” works as it is promised
to? determining the quality of “the unit” ? determining the truth about “the unit” ?
So.. What is Unit Testing ? (cont’d)
Unit Testing : a procedure used to validate that individual units of source code are working properly. unit testing itself, is a procedure unit testing applies to individual units unit tests build-on to source code
to ensure source code is working properly
Where Unit Testing lies in Software Development Life Cycle ?
Unit testing is a white box approach in testing activity
usually, it is integrated with implementation phase but also, it depends on your software development life cycle..
What about cons and pros ?
PROS CONS
isolation of units refactoring code simplifies integration documentation seperation of interface
from implementation a good habit: motivator
for decoupled, cohesive code bodies, refactored with design patterns..
go to definition: it applies to individual units, therefore it can not guaranty the overall system will work !
it only shows the presence of errors, not absence of errors..
How to apply it ?
Manually.. step by step instructional document..
Automated tools frameworks are available.. usually called xUnit frameworks..
tell us.. HOW !
we will investigate test driven development methodology with nUnit framework based on Microsoft .NET
Test Driven Development ???
an approach for software development actually, itself is not a lifecycle model,
but an approach for implementation phase for agile software lifecycles..
it is a bottom-up approach.. think: write tests first, then code
necessary instructions to pass your tests..
Write tests first ???
yes, first write a test case. then build it.. it will fail because no code
written to pass the test implement your code as long as test case
is passed.. and voila..! YAGNI : you aint gonna need
it. So, you code as much as you need.. then think about it, how to do it better ?
Lets Code a simple Account Class
Lets Code it’s Unit Test
Now, run nUnit GUI to check results
Implement the necessary code..
Run the test again..
Are we done ?
is the code satisfies my requirements ? lets assume requirements sais: if a
customer wants to transfer money, minimum balance for the customer should be 10.00$
so, lets continue..
Add Minimum Balance field/property
Add an exception in case of overdraft
Write a new test method
Run the test
Code to generate necessary exception
Run the Test
Room for improvement
Run the Test
Handle ambiguity
thinking about transaction..
Refactor Test Code
Run the test
What should we know more ?
mock objects and their usage in unit testing..
Beyond test driven development
Check out Behaviour Driven Development
Watch video of Dave Astels ( co-author of “A
practical guide to eXtreme Programming” and author of award winning test-driven development: a practical guide)
Thanks for your patience : )
any questions or comments ?