[SOFTWARE TESTING] - Tổng hợp lí thuyết


Hình 1. Sơ đồ tổng quan kiến thức về kiểm thử phần mềm

1. Các tài liệu trong test process

- Test plan: là tài liệu mô tả về: scope, approach, schedule, resources

- Test case: trình bày những thông tin cho kiểm thử một hạng mục. Tùy theo tổ chức sẽ có những custom phù hợp với tổ chức của mình nhưng vẫn đảm bảo gồm các thành phần:

  • ID
  • Test case description
  • Pre-conditions
  • Test case procedure
  • Actual output
  • Expected output
  • Result (pass/fail)
  • Note

1 test case luôn có 3 loại: Normal, Abnormal, Boundary

- Bug report: Mô tả bug khi execute test cases -> Giúp dev tái hiện lại con bug một cách dễ dàng. Gồm các thành phần:

  • ID
  • Bug Description
  • Environment: Browser, devices,...
  • Các bước tái hiện:
    • Pre-conditions
    • Step to reproduce
    • Actual output
    • Expected output
  • Mức độ nghiêm trọng (severity - con bug ảnh hưởng như thế nào tới hệ thống)
    • Critical: dừng ứng dụng (crash app)
    • Serious: thiếu chức năng/chức năng không work
    • Normal: chức năng không work nhưng vẫn có giải pháp khắc phục tạm thời để nó hoạt động
  • Độ ưu tiên (priority - độ ưu tiên fix con bug)
    • Urgent: cần fix ngay lập tức (vấn đề liên quan tới bảo mật)
    • High: cần cho bản release sắp tới; chức năng ảnh hưởng tới chức năng khác, cần fig con bug này chức năng khác mới hoạt động đúng đắn được
    • Medium: chức năng độc lập, không ảnh hưởng tới chức năng khác trong hệ thống
    • Low: Các lỗi về mặt UI; không cần gấp, được release trong giai đoạn sau
Hình 2. Sơ đồ tổng quát về Bug report

- Test report: Đánh giái tiến độ của dự án, các bộ phận liên quan có thể feedback kịp thời. Gồm các thành phần

  • Thông tin dự án: Tên, mô tả,...
  • Test summary: Chiến lược kiểm thử, Số lượng test case pass/fail,...
  • Defects: số bug đã được fix, những việc cần làm

2. Test types - Các loại kiểm thử

- Functional testing (Kiểm thử chức năng): action & behavior. dựa theo đặc tả yêu cầu để viết test case
  • Unit testing: 
    • Do developer thực hiện
    • Kiểm tra tính đúng đắn của từng chức năng/module riêng lẻ
  • Integration testing: Kiểm tra sự giao tiếp giữa các module có liên quan với nhau. Có 3 kĩ thuật:
    • Bigbang
    • Top-down
    • Bottom-up
  • System testing: Đánh giá sự tương hợp của hệ thống với tài liệu đặc tả
  • User acceptant testing: Kiểm thử dự trên quan điểm người dùng, mục đích để tăng độ tin tưởng của sản phẩm trước khi đưa vào sử dụng thực tế
    • Alpha testing:
      • Site: developer
      • Môi trường ảo
      • Đánh giá sản phẩm có đúng hay không
    • Beta testing:
      • Site: Khách hàng/một nhóm khách hàng
      • Môi trường thật
      • Đánh giá xem khách hàng có thích sản phẩm không
- Non-functional testing (Kiểm thử phi chức năng): các vấn đề liên quan tới hiệu suất; Sản phầm làm việc như thế nào?
  • Load testing: concurrent user (số lượng người dùng truy cập đồng thời)
  • Stress testing: mức độ/ngưỡng chết của phần mềm (RAM, Storage, CPU...)
  • Performance testing: thời gian hệ thống phản hồi người dùng (response time)
- Structural testing (Kiểm thử cấu trúc): Dựa trên cấu trúc code để viết test case; Dùng để test code & thuật toán => thường dùng trong unit test
  • Statement testing: Tất cả các dòng code đều được test
  • Decision testing: tất cả nhánh được test ít nhất 1 lần
  • Condition testing: Tất cả câu điều kiện được test ít nhất 1 lần
  • Path testing: Kiểm thử tất cả các đường đi có thể (nhiều điều kiện lồng ghép/nối tiếp nhau)
- Change-related testing (Kiểm thử liên quan tới sự thay đổi)
  • Confirm testing (re-testing): Đảm bảo bug đã được fix
  • Regression testing: Đảm bảo phần thay đổi không ảnh hưởng tới các chức năng đã hoàn thành (tức là không ảnh hưởng tới các test case đã pass trước đó)

3. Test methods - Các phương pháp kiểm thử

- Black-box testing (Kiểm thử hộp đen):
  • Kiểm thử trên giao diện người dùng
  • Quan tâm input & output mà không quan tâm tới cách nó xử lí như thế nào
  • Dựa trên đặc tả yêu cầu để viết test case
  • Gồm các kĩ thuật:
    • Phân vùng tương đương: 
      • Chia input thành các lớp tương đương, nếu một phần tử trong lớp hoạt động đúng thì các phần tử khác trong cùng lớp hoạt động đúng, và ngược lại, một phần tử trong lớp hoạt động sai thì tất cả các phần tử còn lại trong lớp hoạt động sai.
      • Gồm 2 trường hợp: hợp lệ và không hợp lệ
    • Phân tích giá trị biên: Tìm giá trị biên cho các lớp tương đương
    • Bảng quyết định: Đánh giá hành vi của hệ thống trên nhiều trường
    • Đoán lỗi: Dựa vào kinh nghiệm làm việc đưa ra các dự đoán bug sẽ xuất hiện ở đâu
    • Thay đổi trạng thái: Đánh giá hành vi hệ thống sau một chuối các hoạt động (Vd: Block account khi nhập sai password 3 lần)
- White-box testing (Kiểm thử hộp trắng):
  • Ứng dụng viết unit test
  • Test code & thuật toán
  • << Xem Structural testing trong Test types>>
- Gray-box testing (Kiểm thử hộp xám):
  • Gray-box = Black-box + White-box
  • Ứng dụng trong Integration testing
  • Tester cần am hiểu về hệ thống 
  • Cần quyển truy cập vào Database, API
----------------------------------------------------------------

Nhận xét

Bài đăng phổ biến từ blog này

[DATABASE] Tìm mọi khóa của lược đồ quan hệ

[DATABASE] Phủ tối thiểu của tập phụ thuộc hàm

[DATABASE] Dạng chuẩn cao nhất của lược đồ quan hệ