Bài viết này nằm trong loạt bài viết về những kiến thức cơ bản về Test mà những developer cần có trong quá trình phát triển phần mềm, dựa trên tài liệu của tổ chức ISTQB.
Các hệ thống phần mềm đã trở thành một phần không thể thiếu trong xã hội hiện đại. Tuy nhiên có thể nói bất kì ai trong chúng ta cũng đã từng thấy lỗi xảy ra ở một hệ thống nào đó, mà một ví dụ cụ thể là lỗi trên các trang web chẳng hạn. Việc hệ thống không thực hiện theo đúng như thiết kế không chỉ tạo ra những thiệt hại về kinh tế, lãng phí thời gian, mất độ tin cậy …, mà nhiều khi còn có thể gây ra tai nạn cho chính con người.
Nguyên nhân chính là do những thiếu sót trong source code, document, … Con người chúng ta rất dễ tạo ra lỗi, đặc biệt dưới áp lực phải làm cho đúng thời hạn, hay trong trường hợp spec của phần mềm phức tạp. Ngoài ra cũng có thể là do những yếu tố khách quan như ảnh hưởng của môi trường đến hardware chẳng hạn.
Để làm giảm thiểu rủi ro cho hệ thống, chúng ta phải có những Test phù hợp. Và dựa vào kết quả Test ta có thể đo và cải thiện chất lượng của phần mềm.
Thông thường Test hay được nhắc đến như là việc thực thi Test, tức là việc cho chạy phần mềm và kiểm tra. Tuy nhiên việc thực thi Test chỉ là một phần, không phải toàn bộ trong hoạt động Test. Hoạt động Test bao gồm cả những hoạt động trước và sau khi thực thi Test (cho chạy Test), ví dụ như việc thiết kế Test hay kiểm tra kết quả, viết báo cáo Test, …
Mục đích chính của Test bao gồm những mục dưới đây.
Cần phân biệt Test và Debug. Test là việc tìm ra lỗi, còn Debug là tìm hiểu nguyên nhân của lỗi và sửa nó. Thông thường trách nhiệm Test thuộc về người phụ trách Test, còn trách nhiệm Debug thuộc về dev.
Thông qua Test ta có thể biết rằng phần mềm có lỗi, tuy nhiên không thể chứng minh rằng phần mềm hoàn toàn không có lỗi nào cả. Việc Test có thể làm giảm số lượng lỗi trong phần mềm nhưng kể cả trong trường hợp không tìm ra lỗi, ta cũng không thể khẳng định rằng phần mềm của chúng ta không có lỗi.
Việc Test toàn bộ pattern (ghép tất cả các điều kiện ở các mục nhập dữ liệu) là điều không khả thi, ngoại trừ một số phần mềm cực kì đơn giản. Thay vì Test toàn bộ, chúng ta nên dựa vào độ rủi ro hay độ ưu tiên để tập trung vào các điểm cần thiết.
Để tìm được lỗi sớm thì việc Test nên bắt đầu càng sớm càng tốt trong quá trình phát triển phần mềm.
Hầu hết lỗi phát hiện trước khi realease hay trong quá trình vận hành tập trung ở một số module nhất định.
Khi thực hiện cùng một Test nhiều lần, sẽ dần dần không tìm ra được lỗi nữa. Để tránh điều này, cần phải xem lại và cải thiện testcase một cách định kì.
Đối với các điều kiện khác nhau thì sẽ có những phương pháp Test khác nhau. Ví dụ như Test hệ thống ngân hàng sẽ khác hoàn toàn với Test một trang web bán hàng.
Không được quá chú tâm vào việc tạo một hệ thống không có lỗi, mà quên đi những yêu cầu ban đầu từ khách hàng.
Lên kế hoạch Test là việc xác định mục đích của Test và quyết định spec cho Test. Test control là hoạt động so sánh kế hoạch với tiến độ trong suốt quá trình Test.
Chuyển những mục đích trừu tượng thành những điều kiện Test hay những bản thiết kế Test cụ thể. Ví dụ cụ thể:
Ở giai đoạn này chúng ta sẽ tạo ra script hoặc bản ghi trình tự Test dựa trên testcase và các thông tin cần thiết khác, rồi sau đó setup môi trường và tiến hành thực thi Test.
Đánh giá tiêu chuẩn kết thúc là việc đánh giá xem việc thực thi test đã thoả mãn so với mục đích của Test chưa. Ví dụ:
Là công đoạn tập hợp các data, testware, các bài học rút ra từ test,… Công đoạn này được thực hiện trong trường hợp hệ thống đã được release, Test project kết thúc hay là khi đã đạt đươc milestone, … Ví dụ:
Cách suy nghĩ khi Test hoặc review khác so với cách suy nghĩ khi phát triển phần mềm. Nếu như dev có quan điểm phù hợp thì có thể tự mình Test. Tuy nhiên việc tách Test ra và nhờ tester thực hiện sẽ mang lại hiệu quả hơn, và việc Test dưới góc nhìn hoàn toàn độc lập với dev bởi những pro tester đã được đào tạo bài bản sẽ mang lại nhiều lợi ích hơn.
Tính độc lập là tăng dần trong các trường hợp dưới đây:
Ngoài ra, việc tìm ra lỗi trong khi Test có thể bị hiểu là truy cứu trách nhiệm của người dev. Tuy Test là một công việc mang tính xây dựng nhưng nhiều khi vẫn bị coi dưới quan điểm tiêu cực, nên việc tạo mối quan hệ tốt giữa tester và dev là vô cùng quan trọng.
Và để tạo dựng được quan hệ tốt giữa tester và dev, những việc sau cần đuọc chú ý.
Trên đây là những kiến thức cơ bản về Test, dựa trên phần 1 trong tài liệu của ISTQB. Phần tiếp theo của loạt bài viết này mình sẽ nói về việc Test trong lifecycle của phần mềm.
You need to login in order to like this post: click here
YOU MIGHT ALSO LIKE