You are on page 1of 31

Bài 1:

TỔNG QUAN VỀ
KIỂM THỬ PHẦN
MỀM
Phần mềm (Software)
❖ Khái niệm về phần mềm:
• Theo định nghĩa của ISO: 4 thành phần cơ bản của phần mềm:
Chương trình máy tính (code)
Các thủ tục
Tài liệu
Dữ liệu cần thiết để vận hành phần mềm
Chất lượng phần mềm (Software Quality)

❖Các khái niệm về chất lượng phần mềm:


• Theo IEEE:
▪ Chất lượng phần mềm là mức độ mà một hệ thống, thành phần
hệ thống hay tiến trình đáp ứng được yêu cầu đặc tả

▪ Chất lượng phần mềm là một mức độ mà hệ thống, thành phần


hệ thống hay tiến trình đáp ứng được yêu cầu và sự mong đợi
của khách hàng hay người sử dụng
Chất lượng phần mềm (Software Quality)

• Theo ISO 9126:


Lỗi phần mềm

❖ Có rất nhiều định nghĩa về lỗi phần mềm (software error), hiểu một cách đơn
giản thì “Lỗi phần mềm là sự không khớp giữa chương trình và đặc tả của nó”.

❖ Các nguyên nhân gây ra lỗi phần mềm:

➢Do định nghĩa sai yêu cầu của khách hàng

➢Không có thông tin chính xác

➢ Hiểu nhầm

➢ Do bất cẩn, mệt mỏi, áp lực về thời gian

➢ Do thiếu kinh nghiệm


Lỗi phần mềm

❖ Các nguyên nhân gây ra lỗi phần mềm (tt):


➢Do điều kiện môi trường

➢Do lỗi trong cách sử dụng phần mềm


➢…
Lỗi phần mềm

❖ Tác hại của lỗi phần mềm:


➢Tiêu tốn thời gian, tiền bạc

➢ Ảnh hưởng đến uy tín của công ty


➢ Có thể gây ra sự bị thương hoặc cái chết

➢ ….
Lỗi phần mềm

❖ Chi phí sửa lỗi phần mềm


Historical Cases-demonstrating Failure due
to Software Failure

• Disney’s Lion King (1994-95)


• NASA- Mars Polar Lander Failure-1999
• The Y2K (Year 2000) Bug
• The Patriot Missile Failure (1991)
Kiểm thử phần mềm là gì?

❖Kiểm thử phần mềm (software testing) là hoạt động đánh giá phần mềm và các

thành phần của nó nhằm đảm bảo phần mềm đáp ứng được các yêu cầu mong

đợi.

❖Theo ISTQB (International Software Testing Qualifications Board), kiểm thử

phần mềm là quy trình bao gồm tất cả các hoạt động từ lập kế hoạch, chuẩn bị,

đánh giá hệ thống và những công việc liên quan khác để xác định hệ thống

thỏa mãn yêu cầu.


Kiểm thử phần mềm là gì?
Mục tiêu của kiểm thử phần mềm

➢ Tìm ra các lỗi (defect) và các hỏng hóc (failure) của sản phẩm, qua đó
giảm mức độ rủi ro của chất lượng phần mềm

➢ Xác minh (verify) tất cả các yêu cầu đã được đáp ứng

➢ Kiểm tra sản phẩm đã hoàn chỉnh chưa và xác thực (validate) nếu sản
phẩm hoạt động như người dùng cuối mong đợi

➢ Xây dựng sự tự tin về mức độ chất lượng của sản phẩm


Mục tiêu của kiểm thử phần mềm

➢ Cung cấp đầy đủ thông tin cho các bên liên quan giúp họ đưa ra quyết
định, đặc biệt là về mức độ chất lượng của phần mềm

➢ Tuân thủ các yêu cầu theo hợp đồng, pháp luật hoặc theo quy định và xác
minh sự tuân thủ của sản phẩm với các yêu cầu/ tiêu chuẩn đó
Lợi ích của kiểm thử phần mềm

➢Giảm mức độ rủi ro của sản phẩm, tăng chất lượng phần mềm

➢ Gia tăng sự hài lòng của khách hàng

➢ Gia tăng tính bảo mật

➢Tiết kiệm thời gian, tiền bạc


Vòng đời phát triển phần mềm (Software Development Life
Cycle – SDLC)

• Là tập hợp tất cả các hoạt động/ giai


đoạn (phase) cần phải thực hiện để phát
triển một hệ thống hay một sản phẩm
phần mềm.

• SDLC có nhiều mô hình khác nhau,


được áp dụng trong quá trình phát triển
phần mềm.
Kiểm thử trong mô hình thác nước

❖Waterfall Model
• Sản phẩm phần mềm được xây
dựng thông qua chuỗi hoạt động
có trình tự rõ ràng

• Phù hợp với những dự án ít thay


đổi yêu cầu
Kiểm thử trong mô hình chữ V

❖V-Model
• Tương tự như mô hình thác nước,
nhưng mỗi giai đoạn phát triển
phần mềm sẽ có hoạt động kiểm
thử đi kèm.
• Tiết kiệm được chi phí sửa lỗi và có
cơ hội thành công hơn mô hình
thác nước
• Độ linh hoạt ít, mức độ rủi ro cho
dự án vẫn lớn
Kiểm thử trong mô hình tăng trưởng-lặp
❖ Iterative – incremental Development model

• Việc phát triển phần mềm sẽ chia thành các giai đoạn nhỏ là các chu kỳ và phát
triển tăng dần từng chu kỳ cho đến khi hoàn thành hệ thống. Trong mỗi chu kỳ có
đầy đủ các bước phân tích, thiết kế, xây dựng và kiểm thử

• Thích hợp cho những dự án có yêu cầu phức tạp, hệ thống thường xuyên bổ
sung thêm hay thay đổi yêu cầu

• Điển hình cho mô hình tăng trưởng - lặp là các mô hình dựa trên phương pháp
Agile như Scrum.
Kiểm thử trong mô hình tăng trưởng-lặp

❖Iterative – incremental Development model


Các nguyên tắc kiểm thử phần mềm

1. Kiểm thử chỉ ra sự hiện diện của lỗi (Testing


shows presence of defects)
2. Kiểm thử toàn bộ là không thể (Exhaustive testing
is not possible)
3. Nên thực hiện kiểm thử càng sớm càng tốt (Early
testing)
4. Lỗi thường được phân bố tập trung (Defect
clustering)
Các nguyên tắc kiểm thử phần mềm

5. Nghịch lý thuốc trừ sâu (Pesticide paradox)

6. Kiểm thử phụ thuộc vào ngữ cảnh (Testing is


context dependent)

7. Quan niệm sai lầm về việc hết lỗi (Absence of


errors fallacy)
QC vs. QA

❖QA (Quality Assurance) – Đảm bảo chất lượng


• Là tập hợp các hoạt động được tạo ra nhằm đảm bảo tiến trình phát triển sản
phẩm là phù hợp, hệ thống sẽ đáp ứng mục tiêu đề ra.
• Nhiệm vụ của bộ phận QA:
✓Chịu trách nhiệm toàn bộ về tiêu chuẩn, quy trình kiểm tra để đảm bảo
chất lượng sản phẩm
✓Giám sát quy trình và tiêu chuẩn đã được định nghĩa và tuân thủ nghiêm
túc.
✓Điều chỉnh, thay đổi, cải tiến quy trình phù hợp với từng sản phẩm
✓QA không trực tiếp kiểm tra chất lượng phần mềm
QC vs. QA

❖QC (Quality Control) – Kiểm soát chất lượng

• Là tập hợp các hoạt động được tạo ra nhằm kiểm soát chất lượng sản
phẩm, đảm bảo sản phẩm đúng đặc tả yêu cầu.

• Nhiệm vụ của bộ phận QC:

✓Trực tiếp kiểm tra chất lượng của sản phẩm trước khi bàn giao cho
khách hang

✓Tuân thủ các quy trình do QA đề ra


Typical Responsibility of a Tester

➢ ??
Verification and Validation

❖Verification (xác minh)


• Là quá trình đánh giá sản phẩm công việc (work-products) của một giai
đoạn phát triển phần mềm có đáp ứng được yêu cầu đặt ra của giai
đoạn đó không.

• Trả lời cho câu hỏi: Có phải tôi đang xây dựng sản phẩm đúng cách
không?
Verification and Validation

➢Validation (xác thực)


• Là quá trình đánh giá một sản phẩm xem nó có đáp ứng được yêu cầu
nghiệp vụ hay không, có đúng với mong đợi của khách hàng hay
không.

• Trả lời cho câu hỏi: Có phải tôi đang xây dựng đúng sản phẩm?
Các thuật ngữ về lỗi phần mềm

❖ Error/ Mistake: hành vi con người

❖ Defect/ Bug: hệ quả xuất hiện trên chương trình, tài liệu

❖ Failure: sự khác biệt giữa kết quả thực tế và kết quả mong đợi khi thực
thi chương trình
Một số khái niệm khác

❖ Kiểm thử tĩnh (Static Testing)

• Là một hình thức kiểm thử phần mềm mà không thực thi chương trình
hoặc ứng dụng thực tế.

❖ Kiểm thử động (Dynamic Testing)

• Là hình thức kiểm thử phần mềm trong môi trường thực thi ứng dụng
Một số khái niệm khác
❖ Kiểm thử hộp đen (Black box testing)
• Là quá trình kiểm thử mà không cần quan tâm đến mã nguồn của chương
trình hay các hoạt động bên trong hệ thống chạy ra sao.

• Chỉ tập trung vào giá trị đầu vào và giá trị đầu ra có đúng với kết quả mong
đợi, từ đó đánh giá chất lượng của hệ thống.
Một số khái niệm khác

❖ Kiểm thử hộp trắng (White box testing)

• Là việc thực hiện kiểm thử dựa trên các dòng lệnh bên trong hệ thống.

• Đòi hỏi tester phải có kiến thức về ngôn ngữ lập trình, nghiên cứu các
dòng lệnh, những phần bên trong hệ thống để xem hệ thống có chạy
đúng không.

❖ Kiểm thử hộp xám (Gray box testing)

• Là sự kết hợp giữa kiểm thử hộp đen và kiểm thử hộp trắng
Một số khái niệm khác

❖ Kiểm thử thủ công (Manual testing)


• Kiểm thử được thực hiện bằng tay, từ việc thiết kế các trường hợp kiểm
thử đến thực thi kiểm thử.

❖ Kiểm thử tự động (Automation testing)


• Là việc sử dụng các công cụ hỗ trợ để thực thi các trường hợp thử
nghiệm
• Phải xây dựng các scripts, mã nguồn tương ứng để phục vụ cho quá
trình kiểm thử tự động.

You might also like