Otherwise, you could read unit tests and determine if programmers are covering the most important cases and suggest new scenarios.
In order to do it, I propose these validations:
Size:
For collections:
- Test with an empty collection
- A collection with 1 item
- The smallest interesting case
- A collection with several items
Dichotomies:
- Vowels / Non-vowels
- Even / Odd
- Positive / Negative
- Empty / Full.
Boundaries:
- If the function behaves differently for values near a particular threshold.
Order:
- If the function behaves differently when the values are in different orders. Identify each of those orders.
Example in Python:
import unittest class TestStockPriceSummary(unittest.TestCase): """ Test class for function a1.stock_price_summary. """ def test_empty_list(self): """ Return an empty tuple when price_changes is empty. """ price_changes = [] actual = a1.stock_price_summary(price_changes) expected = (0,0) self.assertEqual(actual,expected) def test_single_item_positive(self): ''' Test when the list only includes a positive item ''' price_changes = [2.45] actual = a1.stock_price_summary(price_changes) expected = (2.45,0) self.assertEqual(actual,expected) def test_single_item_negative(self): ''' Test when the list only includes a negative item ''' price_changes = [-2.45] actual = a1.stock_price_summary(price_changes) expected = (0,-2.45) self.assertEqual(actual,expected) def test_single_item_zero(self): ''' Test when the list contains only an item = 0 ''' price_changes = [0] actual = a1.stock_price_summary(price_changes) expected = (0,0) self.assertEqual(actual,expected) def test_general_case(self): """ Return a 2-item tuple where the first item is the sum of the gains in price_changes and the second is the sum of the losses in price_changes. """ price_changes = [0.01, 0.03, -0.02, -0.14, 0, 0, 0.10, -0.01] actual = a1.stock_price_summary(price_changes) expected = (0.14, -0.17) self.assertEqual(actual,expected) if __name__ == '__main__': unittest.main(exit=False)
No comments:
Post a Comment