Testing Unit Testing Copyright Software Carpentry 2010 This
- Slides: 56
Testing Unit Testing Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http: //software-carpentry. org/license. html for more information.
Studying impact of climate change on agriculture Testing Unit Testing
Studying impact of climate change on agriculture Have aerial photos of farms from 1980– 83 Testing Unit Testing
Studying impact of climate change on agriculture Have aerial photos of farms from 1980– 83 Want to compare with photos from 2007–present Testing Unit Testing
Studying impact of climate change on agriculture Have aerial photos of farms from 1980– 83 Want to compare with photos from 2007–present First step is to find regions where fields overlap Testing Unit Testing
Luckily, these fields are in Saskatchewan. . . Testing Unit Testing
Luckily, these fields are in Saskatchewan. . . where fields are rectangles Testing Unit Testing
A student has written a function that finds the overlap between two rectangles Testing Unit Testing
A student has written a function that finds the overlap between two rectangles We want to test it before using it Testing Unit Testing
A student has written a function that finds the overlap between two rectangles We want to test it before using it We're also planning to try to speed it up. . . Testing Unit Testing
A student has written a function that finds the overlap between two rectangles We want to test it before using it We're also planning to try to speed it up. . . and want tests to make sure we don't break it Testing Unit Testing
A student has written a function that finds the overlap between two rectangles We want to test it before using it We're also planning to try to speed it up. . . and want tests to make sure we don't break it Use Python's Nose library Nose Testing Unit Testing
Each test is a function Nose Testing Unit Testing
Each test is a function – Whose name begins with test_ Nose Testing Unit Testing
Each test is a function – Whose name begins with test_ Group related tests in files Nose Testing Unit Testing
Each test is a function – Whose name begins with test_ Group related tests in files – Whose names begin with test_ Nose Testing Unit Testing
Each test is a function – Whose name begins with test_ Group related tests in files – Whose names begin with test_ Run the command nosetests Nose Testing Unit Testing
Each test is a function – Whose name begins with test_ Group related tests in files – Whose names begin with test_ Run the command nosetests – Which automatically search the current directory and sub-directories for tests Nose Testing Unit Testing
Simple example: testing dna_starts_with Testing Unit Testing
Simple example: testing dna_starts_with def test_starts_with_itself(): dna = 'actgt' assert dna_starts_with(dna, dna) def test_starts_with_single_base_pair(): assert dna_starts_with('actg', 'a') def does_not_start_with_single_base_pair(): assert not dna_starts_with('ttct', 'a') Testing Unit Testing
Simple example: testing dna_starts_with def test_starts_with_itself(): dna = 'actgt' assert dna_starts_with(dna, dna) Give tests meaningful names def test_starts_with_single_base_pair(): assert dna_starts_with('actg', 'a') def does_not_start_with_single_base_pair(): assert not dna_starts_with('ttct', 'a') Testing Unit Testing
Simple example: testing dna_starts_with def test_starts_with_itself(): dna = 'actgt' assert dna_starts_with(dna, dna) Use assert to check def test_starts_with_single_base_pair(): assert dna_starts_with('actg', 'a') results def does_not_start_with_single_base_pair(): assert not dna_starts_with('ttct', 'a') Testing Unit Testing
Simple example: testing dna_starts_with def test_starts_with_itself(): dna = 'actgt' assert dna_starts_with(dna, dna) Use variables for fixtures def test_starts_with_single_base_pair(): assert dna_starts_with('actg', 'a') to prevent typing def does_not_start_with_single_base_pair(): mistaeks assert not dna_starts_with('ttct', 'a') Testing Unit Testing
Simple example: testing dna_starts_with def test_starts_with_itself(): dna = 'actgt' assert dna_starts_with(dna, dna) def test_starts_with_single_base_pair(): assert dna_starts_with('actg', 'a') def does_not_start_with_single_base_pair(): Test lots assert not dna_starts_with('ttct', 'a') of cases Testing Unit Testing
"Test lots of cases" Testing Unit Testing
"Test lots of cases" How many? Testing Unit Testing
"Test lots of cases" How many? Testing Unit Testing
"Test lots of cases" How many? How to choose cost-effective tests? Testing Unit Testing
"Test lots of cases" How many? How to choose cost-effective tests? If we test dna_starts_with('atc', 'a'), we're unlikely to learn much from testing dna_starts_with('ttc', 't') Testing Unit Testing
"Test lots of cases" How many? How to choose cost-effective tests? If we test dna_starts_with('atc', 'a'), we're unlikely to learn much from testing dna_starts_with('ttc', 't') So choose tests that are as different from each other as possible Testing Unit Testing
"Test lots of cases" How many? How to choose cost-effective tests? If we test dna_starts_with('atc', 'a'), we're unlikely to learn much from testing dna_starts_with('ttc', 't') So choose tests that are as different from each other as possible Look for boundary cases Testing Unit Testing
Apply this to overlapping rectangles Testing Unit Testing
Apply this to overlapping rectangles A "normal" case Testing Unit Testing
Apply this to overlapping rectangles A "normal" case What else would be useful? Testing Unit Testing
Apply this to overlapping rectangles A "normal" case What else would be useful? Testing Unit Testing
Testing Unit Testing
Testing Unit Testing
Testing Unit Testing
Testing Unit Testing
? Testing Unit Testing
? ? Testing Unit Testing
? Tests help us define what "correct" actually means ? Testing Unit Testing
Turn this into code Testing Unit Testing
Turn this into code def test_touch_on_corner(): one = ((0, 0), (1, 1)) two = ((1, 1), (2, 2)) assert overlap(one, two) == None Testing Unit Testing
Turn this into code def test_touch_on_corner(): one = ((0, 0), (1, 1)) two = ((1, 1), (2, 2)) assert overlap(one, two) == None An unambiguous, runnable answer to our question about touching on corners Testing Unit Testing
def test_unit_with_itself(): unit = ((0, 0), (1, 1)) assert overlap(unit, unit) == unit Testing Unit Testing
def test_unit_with_itself(): unit = ((0, 0), (1, 1)) assert overlap(unit, unit) == unit Wasn't actually in the set of test cases we came up with earlier Testing Unit Testing
def test_partial_overlap(): red = ((0, 3), (2, 5)) blue = ((1, 0), (2, 4)) assert overlap(red, blue) == ((1, 3), (2, 4)) Testing Unit Testing
def test_partial_overlap(): red = ((0, 3), (2, 5)) blue = ((1, 0), (2, 4)) assert overlap(red, blue) == ((1, 3), (2, 4)) This test actually turned up a bug Testing Unit Testing
def overlap(red, blue): '''Return overlap between two rectangles, or None. ''' ((red_lo_x, red_lo_y), (red_hi_x, red_hi_y)) = red ((blue_lo_x, blue_lo_y), (blue_hi_x, blue_hi_y)) = blue if (red_lo_x >= blue_hi_x) or (red_hi_x <= blue_lo_x) or (red_lo_y >= blue_hi_x) or (red_hi_y <= blue_lo_y): return None lo_x lo_y hi_x hi_y = = max(red_lo_x, max(red_lo_y, min(red_hi_x, min(red_hi_y, blue_lo_x) blue_lo_y) blue_hi_x) blue_hi_y) return ((lo_x, lo_y), (hi_x, hi_y)) Testing Unit Testing
def overlap(red, blue): '''Return overlap between two rectangles, or None. ''' ((red_lo_x, red_lo_y), (red_hi_x, red_hi_y)) = red ((blue_lo_x, blue_lo_y), (blue_hi_x, blue_hi_y)) = blue if (red_lo_x >= blue_hi_x) or (red_hi_x <= blue_lo_x) or (red_lo_y >= blue_hi_x) or (red_hi_y <= blue_lo_y): return None lo_x lo_y hi_x hi_y = = max(red_lo_x, max(red_lo_y, min(red_hi_x, min(red_hi_y, blue_lo_x) blue_lo_y) blue_hi_x) blue_hi_y) return ((lo_x, lo_y), (hi_x, hi_y)) Testing Unit Testing
def overlap(red, blue): '''Return overlap between two rectangles, or None. ''' ((red_lo_x, red_lo_y), (red_hi_x, red_hi_y)) = red ((blue_lo_x, blue_lo_y), (blue_hi_x, blue_hi_y)) = blue if (red_lo_x >= blue_hi_x) or (red_hi_x <= blue_lo_x) or (red_lo_y >= blue_hi_x) or (red_hi_y <= blue_lo_y): return None lo_x lo_y hi_x hi_y = = max(red_lo_x, max(red_lo_y, min(red_hi_x, min(red_hi_y, blue_lo_x) blue_lo_y) blue_hi_x) blue_hi_y) Oops return ((lo_x, lo_y), (hi_x, hi_y)) Testing Unit Testing
You should spend your time choosing test cases and defining their answers Testing Unit Testing
You should spend your time choosing test cases and defining their answers Nose (and its kin) are there to handle everything that you shouldn't re-think each time Testing Unit Testing
You should spend your time choosing test cases and defining their answers Nose (and its kin) are there to handle everything that you shouldn't re-think each time "The tool shapes the hand" Testing Unit Testing
created by Greg Wilson August 2010 Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See http: //software-carpentry. org/license. html for more information.
- How do you classify hand tools in carpentry
- 2010 pearson education inc
- Copyright 2010
- Variazioni finanziarie attive e passive
- Copyright 2010 pearson education inc
- Copyright 2010 pearson education inc
- Copyright 2010
- Copyright 2010
- Copyright 2010 pearson education inc
- Copyright 2010 pearson education inc
- Copyright 2010 pearson education inc
- Copyright 2010 pearson education inc
- Copyright 2010 pearson education inc
- Composition copyright example
- Pearson education inc all rights reserved
- Domain closure in software testing
- Motivational overview in software testing
- Du path testing
- Globalization testing example
- Cause effect graphing technique
- Control structure testing in software engineering
- Decision table testing in software testing
- Decision table for triangle problem
- Decision table for next date problem
- Rigorous testing in software testing
- Testing blindness in software testing
- Domain testing example
- Functional testing vs unit testing
- What is unit testing in software
- Embedded software unit testing
- Unit 10, unit 10 review tests, unit 10 general test
- Columbus custom carpentry
- Types of bearing joints
- A carpentry hammer with a slightly rounded
- Big carpentry
- Classification of holding tools
- Types of wood joints
- Positive testing and negative testing
- Static testing and dynamic testing
- Error yang dapat diketahui dari pengujian black box adalah
- Behavior testing adalah
- Component testing is a black box testing
- State state graphs and transition testing
- Path sensitization in software testing
- Dichotomies in stm
- Traditional software testing
- Test delivery system
- Next date problem in software testing
- Software testing subject code
- Venn diagram in software testing
- Software testing subject code
- Dr samer hanna
- System testing definition
- What is state graph in software testing
- Software testing process
- Bug report sample
- Software testing valadares