Bird
Raised Fist0
Testing Fundamentalstesting~10 mins

Defect lifecycle in Testing Fundamentals - Test Execution Trace

Choose your learning style10 modes available
Test Overview

This test simulates the defect lifecycle process in a software project. It verifies that a defect moves through all expected states from New to Closed, ensuring proper tracking and resolution.

Test Code - PyTest
Testing Fundamentals
class Defect:
    def __init__(self):
        self.state = 'New'

    def assign(self):
        if self.state == 'New':
            self.state = 'Assigned'

    def start_progress(self):
        if self.state == 'Assigned':
            self.state = 'In Progress'

    def fix(self):
        if self.state == 'In Progress':
            self.state = 'Fixed'

    def verify(self):
        if self.state == 'Fixed':
            self.state = 'Verified'

    def close(self):
        if self.state == 'Verified':
            self.state = 'Closed'


def test_defect_lifecycle():
    defect = Defect()
    assert defect.state == 'New'

    defect.assign()
    assert defect.state == 'Assigned'

    defect.start_progress()
    assert defect.state == 'In Progress'

    defect.fix()
    assert defect.state == 'Fixed'

    defect.verify()
    assert defect.state == 'Verified'

    defect.close()
    assert defect.state == 'Closed'

    print('Defect lifecycle test passed')

if __name__ == '__main__':
    test_defect_lifecycle()
Execution Trace - 7 Steps
StepActionSystem StateAssertionResult
1Test starts and creates a new defect instanceDefect state is 'New'Assert defect.state == 'New'PASS
2Assign the defectDefect state changes to 'Assigned'Assert defect.state == 'Assigned'PASS
3Start progress on the defectDefect state changes to 'In Progress'Assert defect.state == 'In Progress'PASS
4Fix the defectDefect state changes to 'Fixed'Assert defect.state == 'Fixed'PASS
5Verify the defect fixDefect state changes to 'Verified'Assert defect.state == 'Verified'PASS
6Close the defectDefect state changes to 'Closed'Assert defect.state == 'Closed'PASS
7Test ends successfullyDefect lifecycle completed—PASS
Failure Scenario
Failing Condition: Defect state does not change as expected at any lifecycle step
Execution Trace Quiz - 3 Questions
Test your understanding
What is the initial state of the defect when created?
AAssigned
BNew
CIn Progress
DClosed
Key Result
Always verify each state transition in a defect lifecycle with assertions to ensure defects are tracked correctly through all stages.

Practice

(1/5)
1. Which state in the defect lifecycle indicates that a bug has been found but not yet assigned to a developer?
easy
A. New
B. Fixed
C. Retest
D. Closed

Solution

  1. Step 1: Understand the meaning of 'New' state

    The 'New' state means the defect is just reported and has not been assigned yet.
  2. Step 2: Compare with other states

    'Fixed' means the bug is corrected, 'Retest' means testing the fix, and 'Closed' means the bug is resolved and accepted.
  3. Final Answer:

    New -> Option A
  4. Quick Check:

    New = Bug found but unassigned [OK]
Hint: New means just found, not assigned yet [OK]
Common Mistakes:
  • Confusing 'New' with 'Open' or 'Assigned'
  • Thinking 'Fixed' means bug is new
  • Mixing 'Retest' with initial bug discovery
2. Which of the following is the correct order of states in a typical defect lifecycle?
easy
A. New -> Assigned -> Open -> Fixed -> Retest -> Closed
B. Fixed -> New -> Assigned -> Open -> Retest -> Closed
C. New -> Open -> Assigned -> Fixed -> Closed -> Retest
D. Assigned -> New -> Open -> Fixed -> Retest -> Closed

Solution

  1. Step 1: Recall the standard defect lifecycle sequence

    The typical order is New (reported), Assigned (developer assigned), Open (work started), Fixed (bug fixed), Retest (testing fix), Closed (bug resolved).
  2. Step 2: Match the options with this sequence

    New -> Assigned -> Open -> Fixed -> Retest -> Closed matches the correct order exactly; others have states out of order.
  3. Final Answer:

    New -> Assigned -> Open -> Fixed -> Retest -> Closed -> Option A
  4. Quick Check:

    Lifecycle order = B [OK]
Hint: Follow the bug from report to closure in order [OK]
Common Mistakes:
  • Mixing 'Assigned' and 'Open' order
  • Placing 'Fixed' before 'Assigned'
  • Confusing 'Retest' and 'Closed' positions
3. Consider this defect lifecycle snippet:
defect_states = ['New', 'Assigned', 'Open', 'Fixed', 'Retest', 'Closed']
current_state = 'Fixed'
next_state = defect_states[defect_states.index(current_state) + 1]
print(next_state)

What will be the output?
medium
A. Fixed
B. Retest
C. Open
D. Closed

Solution

  1. Step 1: Find the index of 'Fixed' in the list

    'Fixed' is at index 3 in defect_states list.
  2. Step 2: Calculate next_state using index + 1

    Index 3 + 1 = 4, so next_state = defect_states[4] which is 'Retest'.
  3. Final Answer:

    Retest -> Option B
  4. Quick Check:

    Next after Fixed = Retest [OK]
Hint: Index +1 gives next lifecycle state [OK]
Common Mistakes:
  • Choosing 'Closed' instead of 'Retest'
  • Confusing index positions
  • Assuming current_state prints itself
4. A tester reports a defect and marks it as 'Closed' immediately without retesting. What is the likely issue in this defect lifecycle process?
medium
A. Opening defect after fixing
B. Assigning defect before it is New
C. Reopening defect without fixing
D. Skipping the Retest phase

Solution

  1. Step 1: Understand the defect lifecycle phases

    After fixing, the defect should be retested before closing to confirm the fix.
  2. Step 2: Identify the problem with skipping Retest

    Marking as 'Closed' without retesting skips verification, risking unresolved bugs.
  3. Final Answer:

    Skipping the Retest phase -> Option D
  4. Quick Check:

    Retest must happen before Close [OK]
Hint: Always retest before closing a defect [OK]
Common Mistakes:
  • Closing defect without verification
  • Confusing 'Closed' with 'Fixed'
  • Ignoring defect assignment order
5. A defect is marked as 'Reopened' after failing retest. Which of the following best describes the next correct step in the defect lifecycle?
hard
A. Mark the defect as 'New' again and wait for retest
B. Close the defect immediately as it failed retest
C. Assign the defect back to the developer for fixing
D. Skip fixing and move to 'Retest' again

Solution

  1. Step 1: Understand 'Reopened' state meaning

    'Reopened' means the defect was fixed but failed retesting, so it needs fixing again.
  2. Step 2: Determine the next lifecycle step

    The defect should be assigned back to the developer to fix the issue properly before retesting.
  3. Final Answer:

    Assign the defect back to the developer for fixing -> Option C
  4. Quick Check:

    Reopened = Assign to developer [OK]
Hint: Reopened defects go back to developer for fix [OK]
Common Mistakes:
  • Closing defect after failed retest
  • Resetting defect to 'New' incorrectly
  • Skipping fix and retesting again
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard