0
0
Testing Fundamentalstesting~15 mins

Automation ROI calculation in Testing Fundamentals - Build an Automation Script

Choose your learning style9 modes available
Calculate Automation ROI for a Test Suite
Preconditions (5)
Step 1: Collect manual test execution time per test case in hours
Step 2: Collect automated test execution time per test case in hours
Step 3: Collect manual test maintenance time per test case in hours
Step 4: Collect automated test maintenance time per test case in hours
Step 5: Collect number of test executions planned
Step 6: Calculate total manual time = (manual execution time + manual maintenance time) * number of executions
Step 7: Calculate total automated time = (automated execution time + automated maintenance time) * number of executions
Step 8: Calculate time saved = total manual time - total automated time
Step 9: Calculate ROI percentage = (time saved / total automated time) * 100
Step 10: Verify ROI percentage is greater than 0
✅ Expected Result: The ROI percentage is calculated correctly and is greater than 0, indicating automation saves time.
Automation Requirements - Python unittest
Assertions Needed:
Assert ROI percentage is a float
Assert ROI percentage is greater than 0
Best Practices:
Use functions to separate calculation logic
Use clear variable names
Use unittest assertions for validation
Handle division by zero if automated time is zero
Automated Solution
Testing Fundamentals
import unittest


def calculate_roi(manual_exec, manual_maint, auto_exec, auto_maint, executions):
    total_manual = (manual_exec + manual_maint) * executions
    total_auto = (auto_exec + auto_maint) * executions
    if total_auto == 0:
        raise ValueError("Automated total time cannot be zero")
    time_saved = total_manual - total_auto
    roi = (time_saved / total_auto) * 100
    return roi


class TestAutomationROICalculation(unittest.TestCase):
    def test_roi_calculation(self):
        manual_exec = 2.0  # hours
        manual_maint = 0.5  # hours
        auto_exec = 0.5  # hours
        auto_maint = 0.2  # hours
        executions = 10

        roi = calculate_roi(manual_exec, manual_maint, auto_exec, auto_maint, executions)

        self.assertIsInstance(roi, float, "ROI should be a float")
        self.assertGreater(roi, 0, "ROI should be greater than 0")

    def test_zero_automated_time(self):
        with self.assertRaises(ValueError):
            calculate_roi(1, 1, 0, 0, 5)


if __name__ == '__main__':
    unittest.main()

The calculate_roi function computes the return on investment percentage by first calculating total manual and automated times, then computing the time saved and ROI percentage. It raises an error if automated total time is zero to avoid division by zero.

The TestAutomationROICalculation class uses Python's unittest framework to test the ROI calculation. It checks that the ROI is a float and greater than zero, matching the expected result. It also tests that the function raises an error when automated time is zero.

This structure separates calculation logic from tests, uses clear variable names, and applies proper assertions for validation.

Common Mistakes - 4 Pitfalls
Not handling division by zero when automated time is zero
{'mistake': "Using unclear variable names like 'a', 'b', 'c'", 'why_bad': 'Makes code hard to read and understand.', 'correct_approach': 'Use descriptive names like manual_exec, auto_maint, executions.'}
Not using assertions to check ROI type and value
Mixing calculation logic inside test methods
Bonus Challenge

Now add data-driven testing with 3 different sets of inputs for manual and automated times and executions.

Show Hint