Hướng dẫn viết testcase cho Calculator

chào a/c ạ.e hiện đang muốn viết testcase cho Calculator đơn giản do e viết trên C# , a/c có thể hướng dẫn giúp e được ko ạ?

1 Like

Nếu thế thì bạn cần phải làm cho cái Calculator của bạn mạnh hơn. Nó có thể perform 1 equation hoàn chỉnh (Kiểu như 2 + 2 vậy).
Nó sẽ khá là khó (nên mình khuyên bạn hãy research mấy cái mình nói), bạn sẽ phải split cái equation ra thành từng phần ("2", "+", "2"). Sau đó gán từng cái cho các variable (Kiểu như biến a gán số 2 đầu, biến op gán vào string "+" đó). Sau đó bạn chuyển các biến giữ các số từ string sang int. Rồi tiếp tục viết thêm 1 đống if-else if để handle cho từng trường hợp của từng operator.

if (op == "+") { 
    // Làm a + b 
}
else if (op == "-") { 
    // Làm a - b
}
// ...
5 Likes

Mình cảm ơn bạn đã góp ý cho mình theo cách này. Nhưng mà mình phải viết testcase dựa trên code sẵn có và giao diện nó ntn


và bạn có thể cho mình 1 testcase trong trường hợp này ko. Mình cảm ơn.

1 Like
  1. Áp dụng Kí pháp Ba Lan luôn.
  2. Giao diện chỉ cho phép 6 phép tính (+, -, *, ÷, ^, sqrt) thì thực hiện if - else theo từng phép tính.

Các testcase thì cũng chỉ gom gọn trong 6 phép tính đó thôi.
sqrt(sqrt(sqrt(sqrt(...)))).

4 Likes

Cậu cần viết test gì vậy? Viết Unit test hay chỉ lên kịch bản test chức năng thôi?

4 Likes

Nếu tớ không nhầm, cậu học chuyên về test.
Tớ thì không chuyên về test, cơ mà tớ có biết chút. Hi vọng góp ý dưới đây giúp được cậu.

Đầu tiên, cậu cần phân tích yêu cầu. Như cậu thấy, trên giao diện có:

  • Màn hình hiển thị giá trị. Đây là nơi cậu nhận kết quả về.
  • Các nút số từ 0-9
  • Các nút phép tính + - * / ^ Sqrt
  • Nút ( )
  • Nút =
  • Nút CE

Tiếp theo, cậu cần lên mục tiêu test. Cậu cần lên kịch bản test cho tất cả các component kể trên, sao cho việc test của cậu cover hết tất cả các code/nhánh trong code.

Giờ tới phần thiết kế test case. Như cậu thấy:

  • Màn hình hiển thị kết quả sẽ là nơi cậu nhận kết quả về, nên mọi test case sẽ cover phần này.
  • Các nút từ 0-9 luôn tham gia vào mọi test case, nên phần này cũng sẽ được cover dễ dàng.
  • Dấu = luôn được ấn để lấy kết quả => sẽ được cover dễ dàng
  • Nút CE là tính năng đặc biệt, nên có thể để nó trong 1 vài test là đủ cover.
  • Nút ( và ) có thể được cover bởi 1 test phức tạp nào đó.
  • 6 phép tính là đối tượng chính để cậu test. Vậy nên kịch bản test của cậu sẽ xoay quanh 6 phép tính.

Rồi, từ đây cậu sẽ viết kịch bản test chi tiết có từng phép tính. Tớ sẽ ví dụ cho cậu mục test dấu +. Thường bước này cậu cần tạo bảng giống như bảng thật, để đảm bảo cậu cover hết tất cả các TH.
Cậu cần cover:

  • Phép cộng thông thường
  • Phép cộng với số âm
  • Phép cộng với ngoặc
  • Test độ ưu tiên của phép cộng với phép nhân
  • Test độ ưu tiên của phép cộng trong ngoặc với phép nhân
  • Test độ ưu tiên của phép cộng với phép chia
  • Test độ ưu tiên của phép cộng trong ngoặc với phép chia
  • Test độ ưu tiên của phép cộng với phép trừ
  • Test độ ưu tiên của phép cộng với phép trừ và ngoặc
  • Test độ ưu tiên của phép cộng với khai căn
  • Test độ ưu tiên của phép cộng trong ngoặc với khai căn
  • Test phép cộng với các số rất lớn (2^32 + 1)
  • Test phép cộng với các số rất nhỏ (-2^32 - 1)

Dễ đúng không? :smile:
Cậu làm tương tự với các phép tính còn lại là được.
Sau khi list hết ra, có khả năng cậu sẽ thấy 1 số test đã cover test khác. Lúc đó cậu chỉ cần bỏ test thừa đó đi là được.

Hi vọng ví dụ trên demo cho cậu cách lên kế hoạch test cơ bản, và cậu có thể áp dụng nó trong công việc tương lai. Skill này thực ra cũng cần cho cả engineer, bởi họ là người đầu tiên test sản phẩm.

4 Likes

cảm ơn bạn nhiều vì đã giúp mình nha <3, đây là 1 môn trg chtrinh học của mjnh, bạn đang học ở đâu v

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?