DEV Community

Cover image for Test Driven Development Concept
Nguyễn Tiến Dũng
Nguyễn Tiến Dũng

Posted on

Test Driven Development Concept

1.Viết test case trước (test-first): Đặt ra các giả thuyết cho chức năng cần hoàn thành và viết các test case dựa trên đó.

2.Chạy test case: Chạy các test case và chúng sẽ fail do chưa có code thực hiện.

3.Viết code để làm test case pass: Viết code càng đơn giản nhất để làm test case pass, sau đó chạy lại test để đảm bảo đúng yêu cầu.

4.Refactor code nếu cần: Sửa code để tối ưu hóa, rồi chạy lại test case đảm bảo vẫn đúng.

Qua đó TDD giúp có bộ khung test chi tiết trước khi viết code, đảm bảo chất lượng và tính bền vững cho phần mềm.

Vậy là TDD là phương pháp phát triển phần mềm bằng cách viết test case trước rồi mới viết code thực hiện, quá trình lặp đi lặp lại để tối ưu hóa code.

Ví dụ:

public class Calculator
{
    public int Add(int x, int y) { ... }
}
Enter fullscreen mode Exit fullscreen mode

Test-First:

[TestClass]
public class CalculatorTests 
{
    [TestMethod]
    public void Add_TwoPositiveNumbers_ReturnsCorrectSum()
    {
        // Arrange
        var calculator = new Calculator();

        // Act
        var result = calculator.Add(2, 3);  

        // Assert
        Assert.AreEqual(5, result);
    }
}

Enter fullscreen mode Exit fullscreen mode

Còn nếu code fail thì sẽ không thực hiện đoạn Add()
Chạy Test-Case nếu chúng pass sẽ thực hiện đoạn Add()

public int Add(int x, int y) 
{
    return x + y;  
}
Enter fullscreen mode Exit fullscreen mode

Refactor code nếu code vẫn chạy pass:

public int Add(int x, int y)
{
    return CalculateSum(x, y);
}

rivate int CalculateSum(int x, int y)
{
    return x + y;
}

Enter fullscreen mode Exit fullscreen mode

Mình có thể viết nhiều đoạn code hơn cho đoạn test:

[TestMethod]
public void Add_TwoNegativeNumbers_ReturnsCorrectSum() { ... }

[TestMethod]
public void Add_OneNegativeOnePositive_ReturnsCorrectSum() { ... }
Enter fullscreen mode Exit fullscreen mode

Top comments (0)