SRS là gì? Cách viết Test Case từ SRS

⏱︎

Read time:

3–4 minutes
Minh họa phân tích SRS và liên kết requirements với test cases

Software Requirements Specification (SRS) mô tả hệ thống cần làm gì, các ràng buộc và tiêu chí chất lượng mà hệ thống phải đáp ứng. Với tester, SRS là một test basis quan trọng để xác định test conditions và thiết kế test cases.

Ai viết SRS?

Không có một vai trò duy nhất luôn viết SRS. Tùy tổ chức, người chịu trách nhiệm có thể là Business Analyst, System Analyst, Product Owner, Product Manager hoặc kỹ sư yêu cầu.

Lưu ý
Tester nên review bản nháp sớm để phát hiện requirement mơ hồ, mâu thuẫn, thiếu acceptance criteria hoặc không thể kiểm thử. Dev cũng vậy.

Các thành phần chính của SRS

  • Mục đích, phạm vi và bối cảnh hệ thống.
  • Stakeholders, user roles và glossary.
  • Functional requirements và business rules.
  • Non-functional requirements. (nếu có)
  • External interfaces: UI, API, hardware và hệ thống khác.
  • Data requirements, validation và retention.
  • Constraints, assumptions, dependencies và acceptance criteria.

Functional và Non-functional Requirements

LoạiCâu hỏiVí dụ
FunctionalHệ thống phải làm gì?Người dùng có thể đặt lại mật khẩu qua email
Non-functionalHệ thống phải làm tốt đến mức nào?Hệ thống chịu tải được 100.000 user đăng nhập cùng lúc

Hai nhóm này có thể nằm trong cùng một SRS hoặc tài liệu riêng. Điều quan trọng là requirement phải cụ thể và đo đếm được.

Ví dụ
“Hệ thống phản hồi nhanh” -> requirement chung chung, khó test
“95% request phản hồi dưới 2 giây với 500 người dùng đồng thời” -> testable hơn, mạch lạc hơn
Ví dụ
Functional: tài khoản bị khóa sau 3 lần đăng nhập sai.
Non-functional: mọi lần khóa tài khoản phải được ghi audit log và lưu tối thiểu 12 tháng.

Làm gì khi không có SRS hoặc SRS sơ sài?

Tình trạng này rất hay gặp tại VN 😅Không có SRS không có nghĩa tester phải dừng hoàn toàn, nhưng cũng không nên âm thầm tự đoán requirement. Hãy xây dựng test basis từ các nguồn thay thế:

  • User stories, acceptance criteria, prototype và thiết kế UI.
  • API specification, database model, business rules và hợp đồng.
  • Trao đổi với PO, BA, user, developer và các team business trong công ty
  • Hành vi của phiên bản cũ đã hoạt động ổn định
Cảnh báo
Ghi lại câu hỏi và quyết định đã được xác nhận. Nếu tester tự chọn expected result nhưng không có stakeholder đồng ý, bug report sau đó rất dễ biến thành tranh luận.

Viết test case từ SRS như thế nào?

  1. Review SRS: tìm điểm thiếu, mơ hồ, mâu thuẫn và không testable.
  2. Xác định test conditions: chức năng, business rule, interface, data và quality characteristics cần kiểm tra.
  3. Chọn test technique: EP/BVA cho miền dữ liệu, Decision Table cho tổ hợp rule, State Transition cho hành vi phụ thuộc trạng thái.
  4. Thiết kế test cases: precondition, steps, test data và expected result cụ thể.
  5. Thêm negative và non-functional tests: không chỉ happy path.
  6. Tạo traceability: liên kết requirement ID với test cases để đo coverage và đánh giá impact khi requirement đổi.
  7. Review và ưu tiên: ưu tiên theo risk, business value và dependency.
Mẹo nhớ
SRS không tự biến thành test case. Tester đi theo chuỗi: Requirement → Test condition → Coverage item/Test data → Test case → Test result → Defect.
Lưu ý
Không phải SRS có 7 Acceptance Criteria thì tester cũng chỉ có 7 test case tương ứng.

Kết luận

Một SRS tốt tạo hiểu biết chung chứ không chỉ để “đủ hồ sơ”. Khi tài liệu chưa đủ, tester cần chủ động làm rõ và ghi nhận assumption. Khi tài liệu tốt, hãy dùng test techniques và traceability để biến requirement thành một bộ test nhỏ nhưng có coverage rõ ràng.