SlideShare une entreprise Scribd logo
1  sur  28
Nguyen Ngoc Anh
anhnn3@fpt.com.vn
Fu Hoa Lac, 3- 2013
Objectives

o Why testing?

o Basic principles

o How to choosing test case

o Test-First Programming

o Introduction to Junit

o Let’s do together!!!!


                     FUAgile: Unit Testing Basic   2
CRISIS




Numbers:
4.4 million cars recalled
Billions of $ loss.
Damage the brand

                            FUAgile: Unit Testing Basic   3
Desire vs. Reality

       Desired                                   Reality
Requirement
                        gap             Implementation
  Design



                    testing


                 FUAgile: Unit Testing Basic               4
Why testing?

o Ensuring QUALITY

o Managing RISKS

o Optimizing Return-On-Investment (ROI)

o Professionalism



                    FUAgile: Unit Testing Basic   5
Typical Production model

    Requirement


         Design


         Implement


                 Test

      FUAgile: Unit Testing Basic   6
Bug cost




FUAgile: Unit Testing Basic   7
Testing level

o Unit testing
   o On individual unit of source code (function, class, etc.)
   o Smallest testable part
   o Developer testing
o Integration testing
   o On groups of modules
o System testing
   o On complete integrated system



                       FUAgile: Unit Testing Basic               8
Basic Principles

o Be systematic

  o Haphazard testing & exhaustive testing are impossible.

  o test cases must be chosen carefully and systematically

o Do it early and often

  o Don’t leave testing until the end  debugging longer and
    more painful

  o test-first programming
                     FUAgile: Unit Testing Basic               9
Basic Principles

o Automate it

  o Nothing makes tests easier to run, and more likely to be
    run, than complete automation.

  o For regression test




                     FUAgile: Unit Testing Basic               10
Why Testing is Hard

o We want to

  o know when product is stable enough to launch

  o deliver product with known failure rate (preferably low)

  o offer warranty?




                      FUAgile: Unit Testing Basic              11
Why Testing is Hard

o But

  o it’s very hard to measure or ensure quality in software
  o residual defect rate after shipping:
    • 1 - 10 defects/kloc (typical)
    • 0.1 - 1 defects/kloc (high quality: Java libraries?)
    • 0.01 - 0.1 defects/kloc (very best: Praxis, NASA)
  o exhaustive testing is infeasible

  o statistical testing doesn’t work for software

                        FUAgile: Unit Testing Basic           12
Find bugs as cheaply and quickly as possible!




              FUAgile: Unit Testing Basic       13
Choosing Test Cases

o Key Idea #1: Partition the Input Space

  o input space is very large, but program is small  so
    behavior must be the “same” for whole sets of inputs

  o ideal test suite
     o identify sets of inputs with the same behavior

     o try one input from each set



                       FUAgile: Unit Testing Basic         14
Choosing Test Cases

Ex: multiply : BigInteger x BigInteger  BigInteger

partition BigInteger into:

   BigNeg, SmallNeg, -1, 0, 1, SmallPos, BigPos

pick a value from each class

   -265, -9 -1, 0, 1, 9, 265

test the 7 × 7 = 49 combinations

                     FUAgile: Unit Testing Basic      15
Choosing Test Cases

Ex2: max : int vs int  int

partition into:

    a < b, a = b, a > b

pick value from each class

    (1, 2), (1, 1), (2, 1)



                       FUAgile: Unit Testing Basic   16
Choosing Test Cases
0




       FUAgile: Unit Testing Basic   17
Choosing Test Cases

o Key idea #2: Boundary testing

  o include classes at boundaries of the input space

   zero, min/max values, empty set, empty string, null
  o why? because bugs often occur at boundaries
    o off-by-one errors

    o forget to handle empty container

    o overflow errors in arithmetic

                      FUAgile: Unit Testing Basic        18
Choosing Test Cases

EX: Find max value in a list of nonnegative integers. Assuming
that list is not empty.

public static int max(List<Integer> l) { ... }

    list length: length 0, length 1, length 2+

    max position: start, middle, end of list

    value of max: MIN_INT, negative, 0, positive, MAX_INT

                      FUAgile: Unit Testing Basic          19
Coverage
o all-statements: is every statement run by some test case?
 (common goal)

o all-branches: if every direction of an if or while statement (true
 or false) taken by some test case?

o all-paths: is every possible combination of branches – every
 path through the program – taken by some test case?



                        FUAgile: Unit Testing Basic               20
Test-first programming
2 approaches:

Code  Tests  Fix bugs (painful)

Write tests  Code           Test-first programming




        What is your choice?


                     FUAgile: Unit Testing Basic      21
Test-first programming
write tests before coding

specifically, for every method or class:
  1) write specification

  2) write test cases that cover the spec

  3) implement the method or class

  4) once the tests pass (and code coverage is sufficient), you’re done




                           FUAgile: Unit Testing Basic               22
JUnit

o Unit testing automation framework for Java

o Can do integration test

o Integrated in IDEs (Eclipse, NetBeans, IntelliJ, etc.)

o Must have tool for Java developers

                              http://www.junit.org/

                     FUAgile: Unit Testing Basic           23
JUnit
o A JUnit test case start with @Test

o Test case name start with testXXX()

o Using assertEquals, assertTrue, assertFalse…
@Test

public void testMaxAtStart(){

    ArrayList<Integer> list = new ArrayList<>();

    //add 5,2,3 to list

    assertEquals(MyClass.Max(list), 5);

}
                          FUAgile: Unit Testing Basic   24
JUnit
o If you expect an exception using

@Test(expected = SomeTypeOfException.class)
@Test(expected = IllegalArgumentException.class)

public void testMaxAtStart(){

    ArrayList<Integer> list = new ArrayList<>();

    MyClass.Max(list)

}



                        FUAgile: Unit Testing Basic   25
Let’s do together
Using Test-First programming

Ex1: Write a function with parameter is an integer n, if n<0 throw
IllegalArgumentException; otherwise
  • if n%3==0 return “Fizz”;

  • If n%5==0 return “Buzz”;

  • If n%3==0 and n%5==0 return “FizzBuzz”;

  • Else return the number itself

public static String fizzBuzz(int n) { ... }
                         FUAgile: Unit Testing Basic           26
Let’s do together
Using Test-First programming

Ex2: Find max value in a list of nonnegative integers. Assuming
that list is not empty.

public static int max(List<Integer> list) { ... }




                          FUAgile: Unit Testing Basic         27
Let’s do together
Using Test-First programming

Ex3: Find the union of 2 arrays of integers.

public static int[] union(int[] arr1, int[] arr2) { ... }




                          FUAgile: Unit Testing Basic       28

Contenu connexe

Tendances

Introduction To J unit
Introduction To J unitIntroduction To J unit
Introduction To J unit
Olga Extone
 

Tendances (20)

05 junit
05 junit05 junit
05 junit
 
Mutation testing
Mutation testingMutation testing
Mutation testing
 
Java Unit Testing
Java Unit TestingJava Unit Testing
Java Unit Testing
 
Xp Day 080506 Unit Tests And Mocks
Xp Day 080506 Unit Tests And MocksXp Day 080506 Unit Tests And Mocks
Xp Day 080506 Unit Tests And Mocks
 
Test driven development - JUnit basics and best practices
Test driven development - JUnit basics and best practicesTest driven development - JUnit basics and best practices
Test driven development - JUnit basics and best practices
 
Junit
JunitJunit
Junit
 
Unit Testing with Python
Unit Testing with PythonUnit Testing with Python
Unit Testing with Python
 
JUnit 5 - The Next Generation of JUnit - Ted's Tool Time
JUnit 5 - The Next Generation of JUnit - Ted's Tool TimeJUnit 5 - The Next Generation of JUnit - Ted's Tool Time
JUnit 5 - The Next Generation of JUnit - Ted's Tool Time
 
JUnit 4
JUnit 4JUnit 4
JUnit 4
 
J Unit
J UnitJ Unit
J Unit
 
JUnit & Mockito, first steps
JUnit & Mockito, first stepsJUnit & Mockito, first steps
JUnit & Mockito, first steps
 
Introduction To J unit
Introduction To J unitIntroduction To J unit
Introduction To J unit
 
Java custom annotations example
Java custom annotations exampleJava custom annotations example
Java custom annotations example
 
JUnit- A Unit Testing Framework
JUnit- A Unit Testing FrameworkJUnit- A Unit Testing Framework
JUnit- A Unit Testing Framework
 
3 j unit
3 j unit3 j unit
3 j unit
 
Why Unit Testingl
Why Unit TestinglWhy Unit Testingl
Why Unit Testingl
 
JUnit Presentation
JUnit PresentationJUnit Presentation
JUnit Presentation
 
Unit testing, principles
Unit testing, principlesUnit testing, principles
Unit testing, principles
 
MUTANTS KILLER - PIT: state of the art of mutation testing system
MUTANTS KILLER - PIT: state of the art of mutation testing system MUTANTS KILLER - PIT: state of the art of mutation testing system
MUTANTS KILLER - PIT: state of the art of mutation testing system
 
Unit Testing in Java
Unit Testing in JavaUnit Testing in Java
Unit Testing in Java
 

En vedette

Глеб Сахрай, PR-Technologies
Глеб Сахрай, PR-TechnologiesГлеб Сахрай, PR-Technologies
Глеб Сахрай, PR-Technologies
Klishina
 
Bai giang trac dia dai cuong bk
Bai giang trac dia dai cuong bkBai giang trac dia dai cuong bk
Bai giang trac dia dai cuong bk
Michael Scofield
 

En vedette (8)

Глеб Сахрай, PR-Technologies
Глеб Сахрай, PR-TechnologiesГлеб Сахрай, PR-Technologies
Глеб Сахрай, PR-Technologies
 
Business Essentials budget, strategy & human resources
Business Essentials budget, strategy & human resourcesBusiness Essentials budget, strategy & human resources
Business Essentials budget, strategy & human resources
 
Where Does Your Water Shed State Poster Contest
Where Does Your Water Shed State Poster ContestWhere Does Your Water Shed State Poster Contest
Where Does Your Water Shed State Poster Contest
 
Overview
OverviewOverview
Overview
 
Software testing and analysis
Software testing and analysisSoftware testing and analysis
Software testing and analysis
 
Bai giang trac dia dai cuong bk
Bai giang trac dia dai cuong bkBai giang trac dia dai cuong bk
Bai giang trac dia dai cuong bk
 
Virtual instrumentation (LabVIEW)
Virtual instrumentation (LabVIEW)Virtual instrumentation (LabVIEW)
Virtual instrumentation (LabVIEW)
 
VHT Education - OD1 - Google
VHT Education - OD1 - GoogleVHT Education - OD1 - Google
VHT Education - OD1 - Google
 

Similaire à Fu agile#2 unit_testing

Test driven development
Test driven developmentTest driven development
Test driven development
John Walsh
 
ch11lect1.ppt
ch11lect1.pptch11lect1.ppt
ch11lect1.ppt
ImXaib
 
ch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytgh
ch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytghch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytgh
ch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytgh
ssuser2d043c
 
Software testing
Software testingSoftware testing
Software testing
Bala Ganesh
 
J unit presentation
J unit presentationJ unit presentation
J unit presentation
Priya Sharma
 
UNIT TESTING PPT
UNIT TESTING PPTUNIT TESTING PPT
UNIT TESTING PPT
suhasreddy1
 

Similaire à Fu agile#2 unit_testing (20)

SE2_Lec 21_ TDD and Junit
SE2_Lec 21_ TDD and JunitSE2_Lec 21_ TDD and Junit
SE2_Lec 21_ TDD and Junit
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
SE2018_Lec 20_ Test-Driven Development (TDD)
SE2018_Lec 20_ Test-Driven Development (TDD)SE2018_Lec 20_ Test-Driven Development (TDD)
SE2018_Lec 20_ Test-Driven Development (TDD)
 
8-testing.pptx
8-testing.pptx8-testing.pptx
8-testing.pptx
 
Workshop unit test
Workshop   unit testWorkshop   unit test
Workshop unit test
 
5.Black Box Testing and Levels of Testing.ppt
5.Black Box Testing and Levels of Testing.ppt5.Black Box Testing and Levels of Testing.ppt
5.Black Box Testing and Levels of Testing.ppt
 
Unit testing - A&BP CC
Unit testing - A&BP CCUnit testing - A&BP CC
Unit testing - A&BP CC
 
Junit With Eclipse
Junit With EclipseJunit With Eclipse
Junit With Eclipse
 
Testing
TestingTesting
Testing
 
ch11lect1.ppt
ch11lect1.pptch11lect1.ppt
ch11lect1.ppt
 
ch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytgh
ch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytghch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytgh
ch11lect1.pptghjgjhjkkljkkkjkjkjljkjhytytgh
 
ch11lect1.ppt
ch11lect1.pptch11lect1.ppt
ch11lect1.ppt
 
Software testing
Software testingSoftware testing
Software testing
 
Effective Unit Test Style Guide
Effective Unit Test Style GuideEffective Unit Test Style Guide
Effective Unit Test Style Guide
 
Unit Testing Concepts and Best Practices
Unit Testing Concepts and Best PracticesUnit Testing Concepts and Best Practices
Unit Testing Concepts and Best Practices
 
J unit presentation
J unit presentationJ unit presentation
J unit presentation
 
Software testing definition
Software testing definitionSoftware testing definition
Software testing definition
 
Simple Unit Testing With Netbeans 6.1
Simple Unit Testing With Netbeans 6.1Simple Unit Testing With Netbeans 6.1
Simple Unit Testing With Netbeans 6.1
 
UNIT TESTING PPT
UNIT TESTING PPTUNIT TESTING PPT
UNIT TESTING PPT
 
Google test training
Google test trainingGoogle test training
Google test training
 

Dernier

Pune Call Girl Service 📞9xx000xx09📞Just Call Divya📲 Call Girl In Pune No💰Adva...
Pune Call Girl Service 📞9xx000xx09📞Just Call Divya📲 Call Girl In Pune No💰Adva...Pune Call Girl Service 📞9xx000xx09📞Just Call Divya📲 Call Girl In Pune No💰Adva...
Pune Call Girl Service 📞9xx000xx09📞Just Call Divya📲 Call Girl In Pune No💰Adva...
Sheetaleventcompany
 
💚Call Girls In Amritsar 💯Anvi 📲🔝8725944379🔝Amritsar Call Girl No💰Advance Cash...
💚Call Girls In Amritsar 💯Anvi 📲🔝8725944379🔝Amritsar Call Girl No💰Advance Cash...💚Call Girls In Amritsar 💯Anvi 📲🔝8725944379🔝Amritsar Call Girl No💰Advance Cash...
💚Call Girls In Amritsar 💯Anvi 📲🔝8725944379🔝Amritsar Call Girl No💰Advance Cash...
Sheetaleventcompany
 
Call Girl In Indore 📞9235973566📞 Just📲 Call Inaaya Indore Call Girls Service ...
Call Girl In Indore 📞9235973566📞 Just📲 Call Inaaya Indore Call Girls Service ...Call Girl In Indore 📞9235973566📞 Just📲 Call Inaaya Indore Call Girls Service ...
Call Girl In Indore 📞9235973566📞 Just📲 Call Inaaya Indore Call Girls Service ...
Sheetaleventcompany
 
Cara Menggugurkan Kandungan Dengan Cepat Selesai Dalam 24 Jam Secara Alami Bu...
Cara Menggugurkan Kandungan Dengan Cepat Selesai Dalam 24 Jam Secara Alami Bu...Cara Menggugurkan Kandungan Dengan Cepat Selesai Dalam 24 Jam Secara Alami Bu...
Cara Menggugurkan Kandungan Dengan Cepat Selesai Dalam 24 Jam Secara Alami Bu...
Cara Menggugurkan Kandungan 087776558899
 
Call Girl in Chennai | Whatsapp No 📞 7427069034 📞 VIP Escorts Service Availab...
Call Girl in Chennai | Whatsapp No 📞 7427069034 📞 VIP Escorts Service Availab...Call Girl in Chennai | Whatsapp No 📞 7427069034 📞 VIP Escorts Service Availab...
Call Girl in Chennai | Whatsapp No 📞 7427069034 📞 VIP Escorts Service Availab...
amritaverma53
 

Dernier (20)

Kolkata Call Girls Shobhabazar 💯Call Us 🔝 8005736733 🔝 💃 Top Class Call Gir...
Kolkata Call Girls Shobhabazar  💯Call Us 🔝 8005736733 🔝 💃  Top Class Call Gir...Kolkata Call Girls Shobhabazar  💯Call Us 🔝 8005736733 🔝 💃  Top Class Call Gir...
Kolkata Call Girls Shobhabazar 💯Call Us 🔝 8005736733 🔝 💃 Top Class Call Gir...
 
Pune Call Girl Service 📞9xx000xx09📞Just Call Divya📲 Call Girl In Pune No💰Adva...
Pune Call Girl Service 📞9xx000xx09📞Just Call Divya📲 Call Girl In Pune No💰Adva...Pune Call Girl Service 📞9xx000xx09📞Just Call Divya📲 Call Girl In Pune No💰Adva...
Pune Call Girl Service 📞9xx000xx09📞Just Call Divya📲 Call Girl In Pune No💰Adva...
 
💚Call Girls In Amritsar 💯Anvi 📲🔝8725944379🔝Amritsar Call Girl No💰Advance Cash...
💚Call Girls In Amritsar 💯Anvi 📲🔝8725944379🔝Amritsar Call Girl No💰Advance Cash...💚Call Girls In Amritsar 💯Anvi 📲🔝8725944379🔝Amritsar Call Girl No💰Advance Cash...
💚Call Girls In Amritsar 💯Anvi 📲🔝8725944379🔝Amritsar Call Girl No💰Advance Cash...
 
Call Girls Bangalore - 450+ Call Girl Cash Payment 💯Call Us 🔝 6378878445 🔝 💃 ...
Call Girls Bangalore - 450+ Call Girl Cash Payment 💯Call Us 🔝 6378878445 🔝 💃 ...Call Girls Bangalore - 450+ Call Girl Cash Payment 💯Call Us 🔝 6378878445 🔝 💃 ...
Call Girls Bangalore - 450+ Call Girl Cash Payment 💯Call Us 🔝 6378878445 🔝 💃 ...
 
Call Girls Mussoorie Just Call 8854095900 Top Class Call Girl Service Available
Call Girls Mussoorie Just Call 8854095900 Top Class Call Girl Service AvailableCall Girls Mussoorie Just Call 8854095900 Top Class Call Girl Service Available
Call Girls Mussoorie Just Call 8854095900 Top Class Call Girl Service Available
 
Call Girl In Indore 📞9235973566📞 Just📲 Call Inaaya Indore Call Girls Service ...
Call Girl In Indore 📞9235973566📞 Just📲 Call Inaaya Indore Call Girls Service ...Call Girl In Indore 📞9235973566📞 Just📲 Call Inaaya Indore Call Girls Service ...
Call Girl In Indore 📞9235973566📞 Just📲 Call Inaaya Indore Call Girls Service ...
 
tongue disease lecture Dr Assadawy legacy
tongue disease lecture Dr Assadawy legacytongue disease lecture Dr Assadawy legacy
tongue disease lecture Dr Assadawy legacy
 
Call Girls Shahdol Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Shahdol Just Call 8250077686 Top Class Call Girl Service AvailableCall Girls Shahdol Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Shahdol Just Call 8250077686 Top Class Call Girl Service Available
 
Cara Menggugurkan Kandungan Dengan Cepat Selesai Dalam 24 Jam Secara Alami Bu...
Cara Menggugurkan Kandungan Dengan Cepat Selesai Dalam 24 Jam Secara Alami Bu...Cara Menggugurkan Kandungan Dengan Cepat Selesai Dalam 24 Jam Secara Alami Bu...
Cara Menggugurkan Kandungan Dengan Cepat Selesai Dalam 24 Jam Secara Alami Bu...
 
💚Reliable Call Girls Chandigarh 💯Niamh 📲🔝8868886958🔝Call Girl In Chandigarh N...
💚Reliable Call Girls Chandigarh 💯Niamh 📲🔝8868886958🔝Call Girl In Chandigarh N...💚Reliable Call Girls Chandigarh 💯Niamh 📲🔝8868886958🔝Call Girl In Chandigarh N...
💚Reliable Call Girls Chandigarh 💯Niamh 📲🔝8868886958🔝Call Girl In Chandigarh N...
 
Chandigarh Call Girls Service ❤️🍑 9809698092 👄🫦Independent Escort Service Cha...
Chandigarh Call Girls Service ❤️🍑 9809698092 👄🫦Independent Escort Service Cha...Chandigarh Call Girls Service ❤️🍑 9809698092 👄🫦Independent Escort Service Cha...
Chandigarh Call Girls Service ❤️🍑 9809698092 👄🫦Independent Escort Service Cha...
 
Call Girls Kathua Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Kathua Just Call 8250077686 Top Class Call Girl Service AvailableCall Girls Kathua Just Call 8250077686 Top Class Call Girl Service Available
Call Girls Kathua Just Call 8250077686 Top Class Call Girl Service Available
 
❤️Chandigarh Escorts Service☎️9814379184☎️ Call Girl service in Chandigarh☎️ ...
❤️Chandigarh Escorts Service☎️9814379184☎️ Call Girl service in Chandigarh☎️ ...❤️Chandigarh Escorts Service☎️9814379184☎️ Call Girl service in Chandigarh☎️ ...
❤️Chandigarh Escorts Service☎️9814379184☎️ Call Girl service in Chandigarh☎️ ...
 
7 steps How to prevent Thalassemia : Dr Sharda Jain & Vandana Gupta
7 steps How to prevent Thalassemia : Dr Sharda Jain & Vandana Gupta7 steps How to prevent Thalassemia : Dr Sharda Jain & Vandana Gupta
7 steps How to prevent Thalassemia : Dr Sharda Jain & Vandana Gupta
 
Chandigarh Call Girls Service ❤️🍑 9809698092 👄🫦Independent Escort Service Cha...
Chandigarh Call Girls Service ❤️🍑 9809698092 👄🫦Independent Escort Service Cha...Chandigarh Call Girls Service ❤️🍑 9809698092 👄🫦Independent Escort Service Cha...
Chandigarh Call Girls Service ❤️🍑 9809698092 👄🫦Independent Escort Service Cha...
 
💰Call Girl In Bangalore☎️7304373326💰 Call Girl service in Bangalore☎️Bangalor...
💰Call Girl In Bangalore☎️7304373326💰 Call Girl service in Bangalore☎️Bangalor...💰Call Girl In Bangalore☎️7304373326💰 Call Girl service in Bangalore☎️Bangalor...
💰Call Girl In Bangalore☎️7304373326💰 Call Girl service in Bangalore☎️Bangalor...
 
Bhawanipatna Call Girls 📞9332606886 Call Girls in Bhawanipatna Escorts servic...
Bhawanipatna Call Girls 📞9332606886 Call Girls in Bhawanipatna Escorts servic...Bhawanipatna Call Girls 📞9332606886 Call Girls in Bhawanipatna Escorts servic...
Bhawanipatna Call Girls 📞9332606886 Call Girls in Bhawanipatna Escorts servic...
 
Race Course Road } Book Call Girls in Bangalore | Whatsapp No 6378878445 VIP ...
Race Course Road } Book Call Girls in Bangalore | Whatsapp No 6378878445 VIP ...Race Course Road } Book Call Girls in Bangalore | Whatsapp No 6378878445 VIP ...
Race Course Road } Book Call Girls in Bangalore | Whatsapp No 6378878445 VIP ...
 
Kolkata Call Girls Naktala 💯Call Us 🔝 8005736733 🔝 💃 Top Class Call Girl Se...
Kolkata Call Girls Naktala  💯Call Us 🔝 8005736733 🔝 💃  Top Class Call Girl Se...Kolkata Call Girls Naktala  💯Call Us 🔝 8005736733 🔝 💃  Top Class Call Girl Se...
Kolkata Call Girls Naktala 💯Call Us 🔝 8005736733 🔝 💃 Top Class Call Girl Se...
 
Call Girl in Chennai | Whatsapp No 📞 7427069034 📞 VIP Escorts Service Availab...
Call Girl in Chennai | Whatsapp No 📞 7427069034 📞 VIP Escorts Service Availab...Call Girl in Chennai | Whatsapp No 📞 7427069034 📞 VIP Escorts Service Availab...
Call Girl in Chennai | Whatsapp No 📞 7427069034 📞 VIP Escorts Service Availab...
 

Fu agile#2 unit_testing

  • 2. Objectives o Why testing? o Basic principles o How to choosing test case o Test-First Programming o Introduction to Junit o Let’s do together!!!! FUAgile: Unit Testing Basic 2
  • 3. CRISIS Numbers: 4.4 million cars recalled Billions of $ loss. Damage the brand FUAgile: Unit Testing Basic 3
  • 4. Desire vs. Reality Desired Reality Requirement gap Implementation Design testing FUAgile: Unit Testing Basic 4
  • 5. Why testing? o Ensuring QUALITY o Managing RISKS o Optimizing Return-On-Investment (ROI) o Professionalism FUAgile: Unit Testing Basic 5
  • 6. Typical Production model Requirement Design Implement Test FUAgile: Unit Testing Basic 6
  • 7. Bug cost FUAgile: Unit Testing Basic 7
  • 8. Testing level o Unit testing o On individual unit of source code (function, class, etc.) o Smallest testable part o Developer testing o Integration testing o On groups of modules o System testing o On complete integrated system FUAgile: Unit Testing Basic 8
  • 9. Basic Principles o Be systematic o Haphazard testing & exhaustive testing are impossible. o test cases must be chosen carefully and systematically o Do it early and often o Don’t leave testing until the end  debugging longer and more painful o test-first programming FUAgile: Unit Testing Basic 9
  • 10. Basic Principles o Automate it o Nothing makes tests easier to run, and more likely to be run, than complete automation. o For regression test FUAgile: Unit Testing Basic 10
  • 11. Why Testing is Hard o We want to o know when product is stable enough to launch o deliver product with known failure rate (preferably low) o offer warranty? FUAgile: Unit Testing Basic 11
  • 12. Why Testing is Hard o But o it’s very hard to measure or ensure quality in software o residual defect rate after shipping: • 1 - 10 defects/kloc (typical) • 0.1 - 1 defects/kloc (high quality: Java libraries?) • 0.01 - 0.1 defects/kloc (very best: Praxis, NASA) o exhaustive testing is infeasible o statistical testing doesn’t work for software FUAgile: Unit Testing Basic 12
  • 13. Find bugs as cheaply and quickly as possible! FUAgile: Unit Testing Basic 13
  • 14. Choosing Test Cases o Key Idea #1: Partition the Input Space o input space is very large, but program is small  so behavior must be the “same” for whole sets of inputs o ideal test suite o identify sets of inputs with the same behavior o try one input from each set FUAgile: Unit Testing Basic 14
  • 15. Choosing Test Cases Ex: multiply : BigInteger x BigInteger  BigInteger partition BigInteger into: BigNeg, SmallNeg, -1, 0, 1, SmallPos, BigPos pick a value from each class -265, -9 -1, 0, 1, 9, 265 test the 7 × 7 = 49 combinations FUAgile: Unit Testing Basic 15
  • 16. Choosing Test Cases Ex2: max : int vs int  int partition into: a < b, a = b, a > b pick value from each class (1, 2), (1, 1), (2, 1) FUAgile: Unit Testing Basic 16
  • 17. Choosing Test Cases 0 FUAgile: Unit Testing Basic 17
  • 18. Choosing Test Cases o Key idea #2: Boundary testing o include classes at boundaries of the input space zero, min/max values, empty set, empty string, null o why? because bugs often occur at boundaries o off-by-one errors o forget to handle empty container o overflow errors in arithmetic FUAgile: Unit Testing Basic 18
  • 19. Choosing Test Cases EX: Find max value in a list of nonnegative integers. Assuming that list is not empty. public static int max(List<Integer> l) { ... } list length: length 0, length 1, length 2+ max position: start, middle, end of list value of max: MIN_INT, negative, 0, positive, MAX_INT FUAgile: Unit Testing Basic 19
  • 20. Coverage o all-statements: is every statement run by some test case? (common goal) o all-branches: if every direction of an if or while statement (true or false) taken by some test case? o all-paths: is every possible combination of branches – every path through the program – taken by some test case? FUAgile: Unit Testing Basic 20
  • 21. Test-first programming 2 approaches: Code  Tests  Fix bugs (painful) Write tests  Code Test-first programming What is your choice? FUAgile: Unit Testing Basic 21
  • 22. Test-first programming write tests before coding specifically, for every method or class: 1) write specification 2) write test cases that cover the spec 3) implement the method or class 4) once the tests pass (and code coverage is sufficient), you’re done FUAgile: Unit Testing Basic 22
  • 23. JUnit o Unit testing automation framework for Java o Can do integration test o Integrated in IDEs (Eclipse, NetBeans, IntelliJ, etc.) o Must have tool for Java developers http://www.junit.org/ FUAgile: Unit Testing Basic 23
  • 24. JUnit o A JUnit test case start with @Test o Test case name start with testXXX() o Using assertEquals, assertTrue, assertFalse… @Test public void testMaxAtStart(){ ArrayList<Integer> list = new ArrayList<>(); //add 5,2,3 to list assertEquals(MyClass.Max(list), 5); } FUAgile: Unit Testing Basic 24
  • 25. JUnit o If you expect an exception using @Test(expected = SomeTypeOfException.class) @Test(expected = IllegalArgumentException.class) public void testMaxAtStart(){ ArrayList<Integer> list = new ArrayList<>(); MyClass.Max(list) } FUAgile: Unit Testing Basic 25
  • 26. Let’s do together Using Test-First programming Ex1: Write a function with parameter is an integer n, if n<0 throw IllegalArgumentException; otherwise • if n%3==0 return “Fizz”; • If n%5==0 return “Buzz”; • If n%3==0 and n%5==0 return “FizzBuzz”; • Else return the number itself public static String fizzBuzz(int n) { ... } FUAgile: Unit Testing Basic 26
  • 27. Let’s do together Using Test-First programming Ex2: Find max value in a list of nonnegative integers. Assuming that list is not empty. public static int max(List<Integer> list) { ... } FUAgile: Unit Testing Basic 27
  • 28. Let’s do together Using Test-First programming Ex3: Find the union of 2 arrays of integers. public static int[] union(int[] arr1, int[] arr2) { ... } FUAgile: Unit Testing Basic 28

Notes de l'éditeur

  1. I don’t want to frustrate you by bunch of testing terms. Just focus on thinking, process and how-tos.
  2. Global: 4.4 million cars recalled (http://wsws.org/articles/2010/feb2010/toyo-f12.shtml )In the first quarter of 2009, the company posted a $7.7 billion loss. The estimated loss for Toyota in the current financial year, calculated before the expansion of the recall process in January, is $5.5 billion.http://parttimembadegree.com/business-school-cases/toyota-recalls-pr-management-crisis/http://en.wikipedia.org/wiki/2009%E2%80%932011_Toyota_vehicle_recallsVN: “mua toy chonólành” – lost
  3. For ROI optimization, see the analysis of Rex Black on Managing the Testing Process: Practical Tools and Techniques for Managing Hardware and Software Testing
  4. In conclusion: Test a.s.a.pTesting is responsibilities of all including developers.