Unit Testing in Software Engineering

undefined
 
Unit Testing
 
Concept
 
Software is composed of many pieces of code
 
Testing all the code together is complex
 
In Software Engineering, we treat testing as a discipline and skill set of its own, and test at each
stage of the Software Process
 
- Early testing: Unit test
 
- Pairwise/ multiple component Testing
Module Testing
Integration Testing
 
- Application Level testing
System Test
 
Also:
User Tests
Alpha Tests
Beta Tests
 
Unit Test
 
 
Unit tests are designed to ensure that individual pieces of code are well testing BEFORE they are
integrated into the larger application
 
Unit tests are intended to be written (and executed) by the programmers themselves
 
It is part of the Personal Quality expectation that you ensure your code works well before
submitting for integration with the application
i.e. Never check in broken code!
 
 
This is all written/ run by the Software Engineer (not the Test/ QA group)!
Approach
 
Ensure code coverage
Branches tested
 
Test main code path
 
Test error paths (and other ‘alternate’ paths)
 
Test ranges, out-of-range etc.
 
“If the parts are good, the whole (can be) good”
 
Corollary:
If the parts are bad … you’re out of luck!”
 
Unittests in the industry
 
 
Many frameworks
 
Python:
 
- unittest
 
- pytest
 
Java:
 
- Junit
 
Multiple:
Nunit
 
And lots of others …
 
 
In SWEN-250
 
Built in unittests in the skeleton code
 
Designed to automatically test your work
 
Foundation for “CI”
 
- Continuous Integration (more on that later)
 
Generally …
 
 
Set up the test conditions (usually data)
 
 
char output_array[MAXLINE + 1] = "" ;
 
// initialize to empty line to be safe
 
 
char testline1[] = "A" ;
 
// test single char line
 
 
char testline2[] = "" ;
  
// test empty line
 
 
char testline3[] = "Typical line to be copied." ;
 
 
char testline4[] = "\n\n\n" ;
 
Call the function(s) to be tested
 
    copy( output_array, testline1 ) ;
 
Check the result (often using ‘assert’ as shorthand for if/then/else to test result)
 
    if ( assert( !strcmp( output_array, testline1 ), "Unit test for one character string" ) )
 
        passcount++ ;
 
    else
 
        failcount++ ;
Slide Note
Embed
Share

Concept Software is a discipline comprising various code pieces. Testing these codes together is complex but vital in Software Engineering. The process includes early testing like unit tests, pairwise/multiple component testing, module testing, integration testing, user tests, alpha tests, beta tests, system tests, and more. Unit tests play a crucial role by ensuring individual code pieces function well before integration. Approaching unit testing includes ensuring code coverage, testing main code paths, error paths, alternate paths, ranges, and more. The industry utilizes various frameworks for unit testing, such as unittest and pytest for Python, Junit for Java, Nunit, and many others. Setting up test conditions, calling functions to be tested, and checking results are key steps in unit testing.

  • Unit Testing
  • Software Engineering
  • Testing Discipline
  • Code Pieces
  • Frameworks

Uploaded on Oct 09, 2024 | 1 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Unit Testing

  2. Concept Software is composed of many pieces of code Testing all the code together is complex In Software Engineering, we treat testing as a discipline and skill set of its own, and test at each stage of the Software Process - Early testing: Unit test - Pairwise/ multiple component Testing Module Testing Integration Testing Also: User Tests Alpha Tests Beta Tests - Application Level testing System Test

  3. Unit Test Unit tests are designed to ensure that individual pieces of code are well testing BEFORE they are integrated into the larger application Unit tests are intended to be written (and executed) by the programmers themselves It is part of the Personal Quality expectation that you ensure your code works well before submitting for integration with the application i.e. Never check in broken code! This is all written/ run by the Software Engineer (not the Test/ QA group)!

  4. Approach Ensure code coverage Branches tested Test main code path Test error paths (and other alternate paths) Test ranges, out-of-range etc. Corollary: If the parts are bad you re out of luck! If the parts are good, the whole (can be) good

  5. Unittests in the industry Many frameworks In SWEN-250 Python: Built in unittests in the skeleton code - unittest Designed to automatically test your work - pytest Foundation for CI Java: - Continuous Integration (more on that later) - Junit Multiple: Nunit And lots of others

  6. Generally Set up the test conditions (usually data) char output_array[MAXLINE + 1] = "" ; // initialize to empty line to be safe char testline1[] = "A" ; // test single char line char testline2[] = "" ; // test empty line char testline3[] = "Typical line to be copied." ; char testline4[] = "\n\n\n" ; Call the function(s) to be tested copy( output_array, testline1 ) ; Check the result (often using assert as shorthand for if/then/else to test result) if ( assert( !strcmp( output_array, testline1 ), "Unit test for one character string" ) ) passcount++ ; else failcount++ ;

Related


More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#