You are on page 1of 42

KIỂM THỬ PHẦN MỀM – SOFTWARE TESTING

CƠ BẢN VỀ KIỂM THỬ PHẦN MỀM

Đỗ Thị Thu Trang - FIT. UTEHY

1
NỘI DUNG

 Kiểm thử phần mềm là gì?


 Tại sao cần phải KTPM?
 Lỗi phần mềm và những nguyên nhân gây lỗi
 Công việc của tester?
 Bảy nguyên tắc trong KTMP
 Một số thuật ngữ liên quan

2
NỘI DUNG

 Kiểm thử phần mềm là gì?


 Tại sao cần phải KTPM?
 Lỗi phần mềm và những nguyên nhân gây lỗi
 Công việc của tester?
 Bảy nguyên tắc trong KTMP
 Một số thuật ngữ liên quan

3
Chất lượng PM dưới các góc nhìn khác
nhau
 Người dùng (User): phù hợp với yêu cầu sử dụng

 Sản phẩm (Product): đáp ứng được các thuộc tính


của một sản phẩm

 Nhà sản xuất (Manufacturer): đáp ứng được các


yêu cầu kỹ thuật

4
Tam giác chất lượng

5
Kiểm thử phần mềm là gì?

 Kiểm thử phần mềm: là quá trình thực hiện hoặc


đánh giá một hệ thống phần mềm hoặc thành phần
hệ thống bằng phương pháp thủ công hoặc tự động
để xác minh rằng nó đáp ứng các yêu cầu đặt ra
(IEEE).

11
Kiểm thử phần mềm là gì?

 Kiểm thử phần mềm: là quá trình bao gồm tất cả


các hoạt động của vòng đời phần mềm, cả tĩnh và
động, liên quan đến lập kế hoạch, chuẩn bị và đánh
giá sản phẩm phần mềm và các sản phẩm làm việc
liên quan để xác định rằng chúng đáp ứng các yêu
cầu cụ thể để chứng minh rằng chúng phù hợp với
mục đích và phát hiện các lỗi (ISTQB glossary)

12
Mục tiêu của KTPM

 Tìm được lỗi phần mềm

 Đạt được sự tin cậy về mức độ chất lượng

 Cung cấp các thông tin để đưa ra quyết định

 Ngăn ngừa lỗi

 Liên tục cải tiến quy trình kiểm thử

13
Kiểm thử giữa tưởng tượng và thực tế

Tưởng tượng Thực tế

Kiểm thử là dễ dàng Kiểm thử có thể rất khó khăn. Kiểm
thử một ứng dụng cho TH sử dụng có
thể cần số test case tối thiểu nhưng
đòi hỏi kỹ năng phân tích cao.
Bất kỳ ai cũng có thể thực hiện kiểm Kiểm thử đòi hỏi nhiều kỹ năng
thử thủ công

Kiểm thử đảm bảo 100% phần mềm Kiểm thử cố gắng tìm càng nhiều lỗi,
không còn lỗi khiếm khuyết càng tốt. Xác định tất cả
các lỗi, khiếm khuyết là điều không
thể.
Kiểm thử tự động mạnh hơn kiểm thử Kiểm thử tự động 100% không thể
thủ công thực hiện được. Kiểm thử thủ công
cũng cần thiết

14
Kiểm thử (testing) & dò lỗi (debugging)

Kiểm thử Dò lỗi

Phát hiện lỗi Sửa lỗi đó

Thực hiện bởi KTV (đội kiểm thử) Thực hiện bởi LTV (đội LTV)

Mục đích là tìm ra càng nhiều lỗi, càng Mục đích là để loại bỏ những lỗi đó
nhiều khiếm khuyết càng tốt

15
NỘI DUNG

 Kiểm thử phần mềm là gì?


 Tại sao cần phải KTPM?
 Lỗi phần mềm và những nguyên nhân gây lỗi
 Công việc của tester?
 Bảy nguyên tắc trong KTMP
 Một số thuật ngữ liên quan

16
Tại sao kiểm thử là cần thiết?

 Phần mềm có thể có lỗi.

 Để kiểm tra mức độ tin cậy của phần mềm

 Bởi vì những lỗi phần mềm có thể gây ra những lỗi


nghiêm trọng gây mất nhiều chi phí, thậm chí gây
nguy hiểm tính mạng con người.

17
Lỗi phần mềm

 Lỗi phần mềm có thể dẫn đến:


 Mất tiền

 Mất thời gian

 Mất danh tiếng kinh doanh

 Có thể gây ra hậu quả nghiêm trọng do sử dụng phần


mềm

18
Ví dụ: lỗi phần mềm

o Trò chơi “The King


Animated Storybook”,
Disney,1994 -1995

o Lỗi chia dấu phẩy


động của bộ vi xử lý
Intel Pentium, 1994

19
Ví dụ: lỗi phần mềm

o Tàu vũ trụ NASA đáp


xuống bề mặt sao hỏa
Mars, 1999
o Hệ thống phòng thủ
tên lửa Patriot, 1991
o Sự cố Y2K, 2000,
1974
o Mối nguy hiểm virus,
2004
20
Một số thuật ngữ lỗi liên quan

Error, Lỗi Lỗi do hành vi của con người tạo ra kết quả
Mistake không chính xác

Bug “Con bọ” Lỗi trong quá trình lập trình của LTV

Fault Sai sót Quá trình, bước thực hiện, hoặc định nghĩa dữ
liệu không chính xác. Kết quả của một Error.

Failure Thất bại Lỗi do hành vi của chương trình, hệ thống

Incident Sự cố Là hệ quả của chuỗi quá trình không mong đợi


với người dùng

Defect Nhược Khi người kiểm thử phát hiện ra lỗi


điểm
Problem Vấn đề

21
Mối quan hệ giữa failure, fault và error

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

26
NỘI DUNG

 Kiểm thử phần mềm là gì?


 Tại sao cần phải KTPM?
 Lỗi phần mềm và những nguyên nhân gây lỗi
 Công việc của tester?
 Bảy nguyên tắc trong KTMP
 Một số thuật ngữ liên quan

27
Lỗi phần mềm

Lỗi phần mềm là những lỗi,


khiếm khuyết xảy ra trong
quá trình xây dựng, phát triển
phần mềm, nó gây ra kết quả
không chính xác hoặc không
mong muốn cho người sử
dụng.

28
Những nguyên nhân gây lỗi

29
Những nguyên nhân gây lỗi

Những lý do liên quan đến bản đặc tả là nguyên nhân


chính làm xuất hiện lỗi specification:
 Một số bản đặc tả không viết cụ thể, không đủ kỹ
lưỡng
 Hoặc liên tục thay đổi, nhưng lại không có sự
phối hợp, trao đổi thông tin kịp thời với các đội
phát triển dự án.

30
Những nguyên nhân gây lỗi

- Lỗi là do quá trình Design:


 Bản thiết kế (design) không chi tiết
 Khi thiết kế thay đổi, nhóm phát triển chưa kịp cập nhật
 Thiết kế không đúng, dẫn đến phần mềm xây dựng sai

31
Những nguyên nhân gây lỗi

- Lỗi do quá trình viết code:


 Code không đáp ứng đúng, đủ, thừa và chưa cập
nhật yêu cầu của Spec, Design

32
NỘI DUNG

 Kiểm thử phần mềm là gì?


 Tại sao cần phải KTPM?
 Lỗi phần mềm và những nguyên nhân gây lỗi
 Công việc của tester?
 Bảy nguyên tắc trong KTMP
 Một số thuật ngữ liên quan

33
Công việc của Tester

 Mục đích của một


tester là tìm các lỗi, khiếm
khuyết của hệ thống phần
mềm nhằm đảm bảo hệ
thống hoạt động một cách
tối ưu nhất có thể, giảm chi
phí, thời gian, công sức do
lỗi của phần mềm gây ra

34
Các kỹ năng cần thiết của Tester

Những kỹ năng cần thiết để trở thành 1 tester giỏi:


 Kỹ năng cứng (Technical skills)
• Am hiểu các quy trình phát triển phần mềm, các giai đoạn
kiểm thử
• Có kinh nghiệm tạo các tài liệu kiểm thử (Test plan, Test
Design, Test Case, Test Data) và thực thi chúng
• Có kinh nghiệm sử dụng các công cụ kiểm thử tự động
• Có kiến thức về lập trình

35
Các kỹ năng cần thiết của Tester

Những kỹ năng cần thiết để trở thành 1 tester giỏi:


 Kỹ năng mềm (Soft skills)
• Có kiến thức, hiểu biết về lĩnh vực kiểm thử
• Kỹ năng đọc, hiểu tài liệu tiếng Anh
• Kỹ năng giao tiếp
• Kỹ năng làm việc độc lập, làm việc nhóm
• Kỹ năng quản lý thời gian, khả năng chịu áp lực
• Có tư duy logic, chăm chỉ, cẩn thận, tinh thần học hỏi

36
NỘI DUNG

 Kiểm thử phần mềm là gì?


 Tại sao cần phải KTPM?
 Lỗi phần mềm và những nguyên nhân gây lỗi
 Công việc của tester?
 Các kỹ năng cần thiết của tester
 Bảy nguyên tắc trong KTMP
 Một số thuật ngữ liên quan

37
Bảy nguyên tắc trong KTPM

NT1: Kiểm thử chứng minh sự hiện diện của lỗi


 Kiểm thử có thể thấy rằng PM đang có lỗi hoặc không, nhưng
không thể chứng minh rằng PM không có lỗi.
 Kiểm thử làm giảm xác suất lỗi chưa tìm thấy trong PM, nó không
phải là bằng chứng của sự chính xác.
 Ví dụ:
 We see many white swans, we cannot say 'All swans are white'.
 Otherwise, we see one black swan, we can say 'Not all swans are
white'.

38
Bảy nguyên tắc trong KTPM

NT2: Kiểm thử đầy đủ là không thể


 Kiểm thử mọi thứ là không thể thực hiện được.
 Thay vì kiểm thử toàn bộ, việc phân tích rủi ro và dựa trên mực độ
ưu tiên có thể tập trung việc kiểm thử vào một số điểm quan trọng.
 Ví dụ:
 Một chương trình phần mềm được thiết kế để đếm số ký tự nguyên
âm (a, e, i, o, u) bằng một chuỗi 5 chữ cái. Để kiểm tra chương trình
này với tất cả các đầu vào có thể, đòi hỏi 265 (11,881,376 trường
hợp)

39
Bảy nguyên tắc trong KTPM

NT3: Kiểm thử càng sớm càng tốt


 Để tìm được bug sớm, các hoạt động kiểm thử nên được bắt đầu
càng sớm càng tốt trong quy trình phát triển phần mềm hoặc hệ
thống, và nên tập trung vào các hoạt động đã định trước.
 Kiểm thử càng sớm thì chi phí tìm và sửa lỗi càng rẻ.
 Ví dụ: slide số 27

40
Bảy nguyên tắc trong KTPM

NT4: Sự tập trung của lỗi


 Nỗ lực kiểm thử nên tập trung một cách cân đối vào mật độ lỗi dự
kiến và lỗi phát hiện ra sau đó trong các module.
 Một số ít các module thường chứa nhiều lỗi không phát hiện ra
trong lúc kiểm thử trước khi phát hành, hoặc chịu trách nhiệm cho
hầu hết các lỗi hoạt động của phần mềm.

41
Bảy nguyên tắc trong KTPM

NT4: Sự tập trung của lỗi


- Nguyên tắc tổ gián: chỗ nào có 1 vài con gián thì ở đâu đó xung
quanh nó sẽ có cả tổ gián ->có rất nhiều gián>>>chỗ nào có 1 vài
con bug thì xunh quanh gần chỗ đó có nhiều bug
- Nguyên tắc 80/20: thông thường 20% chức năng quan trọng có thể
gây ra đến 80% tổng số bug phát hiện được trong c.trình đó
- Kiểm thử đầy đủ là không thể: cần phải phân tích, tính toán mức
độ ưu tiên để quyết định tập trung vào test chỗ nào.
=> Test kỹ chức năng quan trọng -> tìm bug -> test những gì liên
quan + những chức năng gần nó để tìm bug nhiều hơn.

42
Bảy nguyên tắc trong KTPM

NT5: Nghịch lý thuốc trừ sâu


 Nếu việc kiểm thử tương tự như nhau được lặp đi lặp lại nhiều
lần, thì cuối cùng sẽ có một số testcase sẽ ko còn tìm thấy bất kỳ
lỗi nào mới.
 Để khắc phục, các trường hợp kiểm thử cần phải được xem xét
và sửa đổi thường xuyên, phải viết testcase mới và khác nhau để
thực hiện nhiều phần của phần mềm để tìm ra lỗi tiềm ẩn nhiều
hơn nữa

44
Bảy nguyên tắc trong KTPM

NT6: Kiểm thử phụ thuộc vào ngữ cảnh


 Kiểm thử được thực hiện khác nhau trong các ngữ cảnh khác
nhau.
 Ví dụ: cùng kiểm tra ứng dụng nhưng chạy trên máy tính và điện
thoại phải quan tâm đến các khía cạnh khác nhau.

NT7: Phần mềm không còn lỗi - sai lầm


 Tìm và sửa lỗi hoàn thiện không chứng minh được rằng phần
mềm có thể sử dụng được và đáp ứng được nhu cầu, mong đợi
của người sử dụng.

45
NỘI DUNG

 Kiểm thử phần mềm là gì?


 Tại sao cần phải KTPM?
 Lỗi phần mềm và những nguyên nhân gây lỗi
 Công việc của tester?
 Các kỹ năng cần thiết của tester
 Bảy nguyên tắc trong KTMP
 Một số thuật ngữ liên quan

46
Một số khái niệm, thuật ngữ liên quan

 QA (Quality Assurance): Đảm bảo chất lượng PM


 QC (Quality Control): Kiểm soát chất lượng PM
 Testing: Kiểm thử phần mềm

47
Một số khái niệm, thuật ngữ liên quan

 QA là viết tắt của Quality Assuarance (tạm dịch


“Đảm bảo chất lượng”): là người chịu trách nhiệm đảm
bảo chất lượng sản phẩm thông qua việc đưa ra quy
trình làm việc giữa các bên liên quan.
 QC là viết tắt của Quality Control (tạm dịch “Kiểm
soát chất lượng”): QC bao gồm các hoạt động nhằm
xác minh một phần mềm được phát triển tuân thủ các
yêu cầu đã được liệt kê.
 Testing (tạm dịch “Kiểm thử”): Testing bao gồm các
hoạt động nhằm tìm lỗi hoặc khiếm khuyết trong sản
phẩm.

48
Một số khái niệm, thuật ngữ liên quan

50
Tài liệu tham khảo

 Bộ môn CNPM - Khoa CNTT, Đề cương Kiểm thử phần mềm, Đại
học Sư phạm Kỹ Thuật Hưng Yên.

 https://www.guru99.com/software-testing-introduction-
importance.html

 https://www.guru99.com/software-testing-seven-principles.html

 http://learntesting123.blogspot.com/2015/03/software-quality.html

 http://hockiemthu.com/su-khac-nhau-giua-qa-qc-testing/

 https://viblo.asia/p/10-dieu-ban-nen-lam-neu-muon-tro-thanh-mot-
tester-gioi-xQMkJRpLkam

51
TỔNG KẾT

QUESTION/ ANSWER

52

You might also like