12/08/2018, 14:14

MỘT SỐ KHÁI NIỆM TRONG KIỂM THỬ

1. Black-box Testing và White-box Testing 1.1. Black-box Testing Là phương pháp kiểm thử dựa trên đầu vào và đầu ra của chương trình để kiểm thử mà không quan tâm tới code bên trong được viết ra sao. Phương pháp này thường dùng để kiểm tra chức năng của chương trình. Ví dụ về Black-box ...

1. Black-box Testing và White-box Testing

1.1. Black-box Testing

Là phương pháp kiểm thử dựa trên đầu vào và đầu ra của chương trình để kiểm thử mà không quan tâm tới code bên trong được viết ra sao.

Phương pháp này thường dùng để kiểm tra chức năng của chương trình.

Ví dụ về Black-box testing: Kiểm tra ô textbox nhập tháng của năm

Khi đó ta cần kiểm tra các trường hợp sau:

Nhập dữ liệu đầu vào là các giá trị không phải giá trị kiểu số

Nhập dữ liệu đầu vào là giá trị kiểu số nhưng không phải là tháng trong năm, tức là <1 hoặc >12

Nhập dữ liệu đầu vào là các giá trị biên, cận biên và giá trị random bất kỳ trong khoảng 1~12

Và một vài trường hợp validate khác v.v...

Xử lý ví dụ trên như sau

→ Kết quả trả về: phải thông báo lỗi dữ liệu nhập vào không hợp lệ.

→ Kết quả trả về: phải thông báo lỗi dữ liệu nhập vào không hợp lệ.

→ Kết quả trả về: không bị hiển thị lỗi dữ liệu nhập vào không hợp lệ. Xử lý logic theo đúng spec của chương trình.

1.PNG

1.2. White-box Testing

Là phương pháp kiểm thử hướng logic, thực hiện kiểm tra cấu trúc bên trong của phần mềm, với mục đích đảm bảo rằng tất cả các câu lệnh và điều kiện phải được thực hiện ít nhất 1 lần.

Ví dụ về White-box testing:

If A>B THEN
C = A – B
ELSE
C = A + B
ENDIF

READ D
IF C = D THEN
PRINT “ERROR”
ENDIF

Các đường có thể cover hết các nút là:

  • 1-2-A-4-C-5-D
  • 1-2-A-4-C-6
  • 1-3-B-4-C-5-D
  • 1-3-B-4-C-6

2.PNG

Dựa vào các đường có thể cover hết các nút, ta sẽ viết test case tương ứng theo các đường đó.

1.3. So sánh Black-box Testing và White-box Testing

Whitebox.PNG

2. Red-box, Yellow-box và Green-box Testing

2.1. Red-box Testing

Red-box testing gần như là giai đoạn test cuối cùng trong cả một quá trình test, do vậy mà red box testing cũng được hiểu là Acceptance testing.

Ví dụ:

Trong giai đoạn này khách hàng là người tiến hành kiểm tra sản phẩm, bởi họ muốn sản phẩm của họ chắc chắn đã được chấp nhận ở giai đoạn white-box test và black-box test. Họ có thể tự đưa ra quan điểm test của họ hoặc có thểm tham khảo testcase của bên QA.

redbox.PNG

2.2. Yellow-box testing

Yellow box testing được kiểm tra với các thông báo cảnh báo (warning messages) để xem hệ thống có hoạt động đúng vượt qua các thông báo cảnh báo hay không. Các thông báo cảnh báo thường được đưa ra để cảnh báo người dùng về một số điều kiện trong 1 chương trình, nơi mà điều kiện bình thường không đảm bảo ngoại lệ và làm dừng chương trình.

Ví dụ: chúng ta có thể muốn đưa ra một cảnh báo khi chương trình sử dụng một module lỗi thời.

yellow.PNG

2.3. Green-box Testing

Green box test là kỹ thuật test nhìn ở khía cạnh bên ngoài của đối tượng kiểm thử để có thể suy ra được các trường hợp kiểm thử, xác định xem hệ thống có thân thiện với người dùng không và không có bất kỳ tác động xã hội cùng với các yêu cầu. Green box testing bao gồm kỹ thuật release testing.

Ví dụ: Kiểm tra trước khi release sản phẩm cho khách hàng hoặc release sản phẩm lên store

2.4. So sánh giữa Red-box, Yellow-box và Green-box Testing

Redbox testing.PNG

3. Functional và Non-functional Testing

3.1. Định nghĩa Functional và Non-functional

  • Function testing

    Là một loại thử nghiệm phần mềm theo đó hệ thống được kiểm tra dựa trên các yêu cầu chức năng / thông số kỹ thuật.

    Các chức năng được kiểm tra bởi các dữ liệu đầu vào và xác nhận đầu ra.

    Ví dụ:

    Function testing không phải đơn giản là bạn thực hiện test 1 chức năng ( một method) của một module hay một class. Function testing test một chuỗi các chức năng của toàn bộ hệ thống.

  • Non-Function testing

    Là việc kiểm thử một ứng dụng phần mềm hay hệ thống cho các yêu cầu phi chức năng như: cách hệ thống hoạt động chứ không phải các hành vi cụ thể của hệ thống.

    Ví dụ: Test hiệu suất phần mềm bao gồm test độ tin cậy và khả năng mở rộng

3.2. So sánh Functional testing và Non-functional testing

so sanh function - nonfunction.png

4. Validation và Verification

Hai khái niệm Validation và Verification thường được sử dụng trong công nghề phần mềm để định nghĩa hai dạng khác nhau của quá trình phân tích.

  • Verification

    ★ Quy trình xác minh (Verification process) mô tả liệu các đầu ra (Outputs) có đang theo đúng đầu vào (Inputs) hay không.

  • Validation

    ★Quy trình kiểm định (Validation process) mô tả phần mềm có được chấp nhận bởi người dùng hay không

validation.PNG

So sánh Verification và Validation

So sanh verification - validation.png

☆ Kết luận

→ Cả Verification và validation đều cần thiết và bổ sung lẫn cho nhau.

→ Cả 2 cung cấp một cách riêng để sàng lọc lỗi trong quá trình thực hiện sản phẩm.

5. Re-test và Regression test

5.1. Định nghĩa

  • Re-test - Test lại: là việc test những test cases đã fail từ lần test cuối cùng và xác minh những test case đó đã pass.

  • Regression test - Test hồi quy: Là việc test chương trình đã được thực hiện test trước đó mỗi khi có sự thay đổi (code, môi trường) để đảm bảo trong quá trình sửa chữa và thay đổi, nâng cấp không có lỗi nào được tìm thấy.

5.2. So sánh Regression test và Re-test

Regression.PNG

6. Mistake, error, bug, fault, defect

bug.PNG

  • Mistake or error: thường được tạo ra khi lập trình viên trong khi design và build phần mềm.

Ví dụ: Theo requirement thì Quantity là trường số nguyên nhưng khi thiết kế DB, trường Quantity có kiểu là VARCHAR => Đây chính là Mistake

  • Bug: Lỗi được tìm thấy trong khi testing. Có tổ chức gọi những lỗi này là issue, incidents hay problem.

Ví dụ: Mua 1 mặt hàng A với số lượng là X, giá tiền của 1 mặt hàng A là Y và coupon giảm giá cho hóa đơn là 10%. Tuy nhiên công thức để tính Total đã được code như sau: Total = (XY)10% => Do đó khi tester tiến hành test function này sẽ thấy kết quả hiển thị trên giao diện không đúng với yêu cầu của phần mềm. Đây chính là bug. Kết quả đúng phải là Total = (XY)(100-10)%

  • Failure: Khi sản phẩm không đáp ứng với sự mong đợi của end-user hoặc requirement do lỗi code hoặc logic được gọi là failure.

7.

0