Tổng quan về kiểm thử phần mềm

Kiểm thử -** test **là một quá trình đánh giá một hệ thống hay là các thành phần của nó với mục đích là xác định xem nó có thỏa mãn những yêu cầu được đưa ra hay không. Hiểu một cách đơn giản, kiểm thử – test là chạy một chương trình để xác nhận bất kì lỗ hổng, lỗi sai hay những yêu cầu bị bỏ quên, những yêu cầu không đúng so với yêu cầu thực tế đề ra.

Theo tiêu chuẩn ANSI/IEEE 1059, kiểm thử – test có thể được định nghĩa như – một quá trình của việc phân tích các thành phần của phần mềm để dò tìm sự khác biệt giữa phần mềm thực tế đang tồn tại và những điều kiện được yêu cầu – requirement.(đó là thiếu sót – defect, sai sót – error, lỗi – bug). Từ đó đánh giá được chất lượng của sản phẩm phần mềm.
hoc-tester

Ai sẽ là người test?

Điều này phụ thuộc vào quy trình và các bên liên quan đến dự án. Trong ngành công nghiệp phần mềm, những công ty lớn có một team chuyên chịu trách nhiệm việc đánh giá phần mềm đã phát triển với những yêu cầu được chỉ định từ trước. Hơn thế nữa, nhân viên phát triển phần mềm – deverloper cũng tiến hành kiểm thử – test sản phẩm, và việc đó được gọi là unit testing. Trong hầu hết các trường hợp, người kiểm thử – tester có thể là :

  • Software Tester – Nhân viên kiểm thử phần mềm
  • Software Deverloper – Nhân viên phát triển phần mềm
  • Leader hoặc Manager của dự án
  • User – Người sử dụng cuối cùng

Các công ty khác nhau sẽ có các quy định về tên gọi của nhân viên kiểm thử dựa trên kinh nghiệm và kiến thức về kiểm thử phần mềm, như là: software tester – nhân viên kiểm thử phần mềm, software quality assurance engineer – kĩ sư đảm bảo chất lượng phần, QA analyst – nhân viên phân tích chất lượng phần mềm …

hoc-tester-3

Thời điểm bắt đầu test

Việc kiểm thử – test sớm sẽ giúp giảm chi phí và thời gian để xây dựng lại và sửa lỗi để bàn giao sản phẩm phần mềm. Tuy nhiên trong một vòng đời của phần mêm, việc kiểm thử – test nên được bắt đầu từ khi có những yêu cầu từ phía khách hàng và được kéo dài đến cho đến khi triển khai phầm mềm. Thời điểm bắt đầu kiểm thử còn phụ thuộc vào mô hình phát triển phần mềm đang được sử dụng. Ví dụ như: trong mô hình thách nước – waterfall model, kiểm thử – test chính thức được thực hiện ở giai đoạn kiểm thử – testing phase. Nhưng ở trong mô hình gia tăng – incremental model, kiểm thử được thực hiện ở cuối mỗi chu kỳ con và kiểm thử cho toàn bộ sản phẩm được thực hiện ở giai đoạn cuối khi hoàn thiện sản phẩm.

Việc kiểm thử – test được thể hiện theo nhiều dạng công việc khác nhau ở các giai đoạn khác trong suốt vòng đời phát triển phần mềm:

  • Trong quá trình tập hơp yêu cầu – requirement gathering phase, phân tích và xác minh yêu cầu cũng được coi là kiểm thử – test requirement.
  • Trong giai đoạn thiết kế – design phase, kiểm tra lại thiết kế với mục đích cải thiện thiết kế cũng được tính là kiểm thử.
  • Trong giai đoạn phát triển phần mềm – Implement phase, kiểm thử được thực hiện bởi lập trình viên – unit testing cũng được tính là kiểm thử.

Khi nào thì dừng việc test

Rất khó để xác định khi nào thì dừng kiểm thử – test, vì test là quá trình ko bao giờ kết thúc và không ai có thể yêu cầu phần mềm được test 100%. Các khía cạnh dưới đây có thể được cân nhắc cho việc dừng lai quy trình test:

  • Hạn chót phát triển phần mềm – deadline.
  • Đã thực hiện hết các testcase được đề ra.
  • Hoàn thiện các chức năng và toàn bộ code đã đảm bảo được các yêu cầu đề ra.
  • Tỷ lệ bug phải trong giới hạn mong muốn.
  • Không có những bug nghiêm trọng
  • Quyết định của quản lý dự án

Verification & Validation

Đây là hai khái niệm làm khó hiểu cho nhiều người trong việc sử dụng chúng

Bảng dưới đây sẽ chỉ ra sự khác nhau giữa Verification & Validation:
hoc-tester
VERIFICATION là qui trình đánh giá một hệ thống hoặc một thành phần để xác định xem liệu các sản phẩm của một giai đoạn phát triển nhất định có đáp ứng được những yêu cầu được định tại thời điểm bắt đầu của giai đoạn đó không.

VALIDATION là qui trình đánh giá một hệ thống hoặc một thành phần trong suốt quá trình phát triển hoặc lúc kết thúc của quá trình phát triển để xác định xem liệu nó có được làm ra đúng như những yêu cầu cụ thể như những yêu cầu lúc đầu đưa ra không.

Verification là tĩnh (Static) trong khi Validation là động (Dynamic). Chẳng hạn Verification phần mềm là kiểm thử từng dòng mã, từng hàm. Với Validation, chạy phần mềm và tìm lỗi. Vị trí lỗi có thể tìm thấy với Verification, mà không thể với Validation.

Add Comment