1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Kiểm thử phần mềm: Chương 1 - TS. Nguyễn Thanh Hùng

48 71 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 48
Dung lượng 3,89 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài giảng Kiểm thử phần mềm - Chương 1: Giới thiệu về kiểm thử phần mềm cung cấp các kiến thức giúp người đọc, các định nghĩa và chi phí của các khiếm khuyết (defect), các định nghĩa và mục tiêu của kiểm thử phần mềm, mục tiêu và quy trình làm việc của người kiểm thử... Mời các bạn cùng tham khảo.

Trang 1

Giới thiệu về kiểm thử

phần mềm

Kiểm thử phần mềm

TS Nguyễn Thanh Hùng

Bộ môn Công Nghệ Phần MềmViện Công Nghệ Thông Tin và Truyền Thông

Email: hungnt@soict.hust.edu.vn

Trường Đại Học Bách Khoa Hà Nội

Trang 2

Mục tiêu môn học

 Các khái niệm, định nghĩa về kiểm thử và chất

lượng phần mềm

 Các mức độ kiểm thử phần mềm

 Các kỹ thuật, tiến trình kiểm thử

 Hiểu và tạo được các trường hợp kiểm thử cho

các chương trình đơn giản

 Quản lý chất lượng phần mềm

Trang 3

Kiến thức cần thiết

 Ngôn ngữ (nói , hiểu, viết): tiếng việt, tiếng anh

 Cơ bản của IT

 Kỹ năng lập trình (debug và kiểm tra lỗi)

 Cơ bản của SE, quy trình phát triển phần mềm

 Ngôn ngữ mô tả lôgic ( phản ứng) : tiến trình algebra, state machines, petri nets

 Toán học:

 Logic, tập hợp

 Thống kê

Trang 4

Tài liệu tham khảo

 Ian Sommerville: “Software Engineering”, 7th

Ed., 2004

 Roger S Pressman: “Software Engineering: A

Practitioner's Approach”, 6th Ed., McGraw-Hill,

2004

 John Musa: “Software Reliability Engineering”,

McGraw-Hill

Trang 5

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

Kiểm thử phần mềm là quá trình thực thi 1 hệ

thống phần mềm để xác định xem phần mềm có

đúng với đặc tả không và thực hiện trong môi

trường như mong đợi hay không?

Trang 7

Thuật ngữ

ERROR

FAILURE FAULT

Trang 8

Chi phí thay đổi

Trang 9

Mục tiêu

 Khám phá nền tảng của kiểm thử phần

mềm để mọi người hiểu 6 ý chính sau:

1 Các định nghĩa và chi phí của các khiếm

4 Điều gì làm nên một người kiểm thử giỏi.

5 Thực tiễn của kiểm thử phần mềm.

6 Các thuật ngữ của kiểm thử phần mềm.

Trang 10

Ví dụ

 Giả sử có một hàm của một phần mềm nào đó

được xác định như sau:

nextDate (tháng, ngày, năm): hàm mà kết quả đầu ra là ngày tiếp theo của ngày đầu vào 1

≤ tháng ≤ 12, 1 ≤ ngày ≤ 31,1900 ≤ năm ≤

2060

Hàm này đã được cài đặt bởi ngôn ngữ java

 Nếu chỉ có các đặc tả và các file class, làm thế nào

có thể chắc chắn rằng hàm đó đã được cài đặt chính xác?

 Nếu đã cài đặt hàm, có nghĩa là, có các file java, làm

Trang 11

Ví dụ 1 (1)

 Nếu bạn có các đặc tả và các file.class, có lẽ có thể tiếp tục như sau:

1 Suy nghĩ một vài phút dựa trên các đặc tả và chọn ngày 2006/06/16

như là một đầu vào cho chương trình.

Trang 12

B3: Click vào nút Tell

và xem kết quả hiện lên là ngày

16/6/2006

Trang 13

B3:Click vào nút Tell

và kết quả hiện lên là 32/1/2007

Trang 14

Ví dụ 2 (1)

 Khi đã thực hiện 1 chức năng , tức là đã có mã nguồn của nó

Nhưng làm sao để biết được code đó là chính xác Hãy xem ví

dụ dưới đây :

Trang 15

Ví dụ 2 (2)

 Để kiểm tra code, thì mỗi dòng sẽ được chạy ít nhất một lần

Nhưng file Year.java chỉ là một phần của chương trình, nó không thể chạy một mình Vì vậy cần code thêm 1 đoạn để kiểm tra xem

1 năm nào đó có phải là năm nhuận hay không.

Trang 16

Kết luận

 Hai ví dụ cho ta biết được rằng chắc chắn sẽ có một số sai lầm trong chương trình Trong thử nghiệm phần mềm, đây

được gọi là một lỗi(defect).

 Những ví dụ này là hai phương pháp tiếp cận khác nhau, đều có thể áp dụng để tìm lỗi Một được gọi là kiếm tra

chức năng như trong ví dụ 1, ví dụ 2 được gọi là kiểm tra cấu trúc

 Bây giờ bạn có thể tự hỏi mình rằng là lý do tại sao chúng

ta phải tìm các lỗi(defect)?

Trang 17

Tại sao lỗi lại phát sinh trong phần mềm?

Phần mềm được tạo ra bởi chính chúng ta

 Chúng ta có thể biết nhiều thứ những chúng ta không thể biết được tất

cả mọi thứ.

 Các lập trình viên đều có kỹ năng, nhưng không phải ai cũng hoàn hảo.

 1 số lập trình viên không có những quy tắc khắt khe với các đoạn mã của mình.

 Các lập trình viên là những người dễ gây ra sai sót (lỗi).

Làm việc dưới áp lực ngày càng tăng để đảm bảo đúng thời hạn

 Không có thời gian để kiểm tra, các chức năng có thể bị làm sai.

 Hệ thống có thể không đáp ứng đầy đủ các yêu cầu ban đầu.

Phần mềm thực sự phức tạp, trừu tượng và vô hình

 Khó có thể xem phần mềm nếu nó là chưa hoàn chỉnh hoặc hoạt động thiếu chính xác.

 Khó có ai có thể hiểu hết hoàn toàn 1 hệ thống lớn.

 Quá nhiều giao diện bên ngoài không cần thiết.

Trang 18

Tại sao phải tìm kiếm các lỗi

 Phần mềm được viết bởi con người Và họ tạo ra những sai sót Chi phí của các lỗi có thể là rất cao.

 Từ góc nhìn của 1 người phát triển phần mềm:

• Phải mất rất nhiều thời gian và nỗ lực để sửa chữa các lỗi Một cuộc khảo sát cho thấy khoảng 50% thời gian làm việc của người lao động phần mềm được chi tiêu vào việc tìm kiếm và sửa lỗi.

• Càng sớm tìm ra lỗi thì chúng ta càng tiết kiệm được chi phí

• Bài giảng 11 sẽ có thông tin chi tiết hơn

 Từ góc nhìn của 1 người dùng cuối:

• Không ai thích 1 phần mềm mà sử dụng thì hay bị treo.

• Với việc sử dụng nhiều hơn và thường xuyên hơn của phần mềm trong cuộc sống hàng ngày ,chúng ta cần các phần mềm có chất lượng hơn, đáng tin cậy hơn và an toàn hơn.

Kết luận

 Phải cần kỹ thuật để tìm các lỗi và đó là mục đích của kiểm thử phần mềm

Trang 19

Nguồn gốc của các lỗi

Khâu định hướng

 Người phát triển không hiểu họ đang làm gì

 Thiếu sự đào tạo thích hợp dẫn đến lỗi trong đặc tả, thiết kế ,

coding và kiếm thử

Khâu kết nối

 Người phát triển không đủ hiểu biết và các kiến thức cần thiết.

 Thông tin không đạt được ở tất cả các bên liên quan.

 Thông tin bị mất.

Khâu giám sát

 Bỏ qua những thứ cần thiết

Trang 20

Lỗi (defect) là gì ? (1)

Định nghĩa về lỗi:

 Không có 1 định nghĩa tiêu chuẩn

 Các tổ chức khác nhau có những định nghĩa khác nhau.

 Những điều được chấp nhận bởi các chuyên gia:

1 Các phần mềm không làm được cái gì đó mà nó nên làm

2 Các phần mềm làm 1 cái gì đó mà đặc tả bảo nó không nền làm

3 Làm cái gì đó mà đặc tả không đề cập đến

4 Các phần mềm không làm 1 cái gì đó mà các đặc điểm kĩ thuật không

đề cập đến nhưng lại là nên làm

5 Phần mềm khó hiểu , khó sử dụng , chậm hoặc không đúng

Trang 21

 Điều quan trọng là phải biết chia sẽ những hiểu

biết của mình trong tổ chức hoặc nhóm làm việc

Trang 22

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

Định nghĩa kiểm thử phần mềm

 Không có định nghĩa tiêu chuẩn

 Các tổ chức khác nhau có định nghĩa khác nhau

 Dưới đây là định nghĩa được chấp nhận bởi nhiều chuyên gia

1 Myers : kiểm thử là tiến trình thực hiện 1 chương trình với mục

đích là tìm ra lỗi

2 IEEE[1990] : kiểm thử là tiến trình của hoạt động hệ thống hoặc

thành phần theo điều kiện cụ thể, quan sát hoặc ghi lại kết quả, và tạo

một đánh giá về một số khía cạnh của hệ thống hoặc một thành phần

 Chú ý :

 Testing quá trình để chứng minh phần mềm có khiếm khuyết

 Các đối tượng được thử nghiệm không chỉ bao gồm các đoạn code mà

còn là các sản phẩm sau mỗi pha phần mềm

Trang 23

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

Trang 24

Quá trình kiểm thử làm việc như thế nào?

Trang 25

25 Giới

Trang 26

Định nghĩa 1 Trường hợp kiểm thử

(Test case)

Định nghĩa:

 1 tập các bài kiểm thử đầu vào, các điều kiện thực hiện, các kết quả mong đợi được phát triển là 1 phần của 1 Trường hợp kiểm thử (Test case)

 Được cài đặt trong ngôn ngữ tự nhiên hoặc ngôn ngữ lập trình.

1 trường hợp kiểm thử chất lượng gồm 4 thuộc tính:

Hiệu quả tìm lỗi: tìm được lỗi hoặc ít nhất là khả năng tìm lỗi

Tiêu chuẩn: giảm số lượng các test case cần thiết.

Kinh tế: trong thể hiện,phân tích và gỡ rối.

Tiến hóa: hiệu quả của các trường hợp kiểm thử (Test case) cũ

sau mỗi lần thay đổi phần mềm

Trang 27

Cài đặt 1 Trường hợp kiểm thử (Test case)(1)

Trong ngôn ngữ tữ nhiên

Độ ưu tiên (Priority): P1

Phần kiểm thử (Test Item): Hàm Next Date

Các điều kiện thực hiện: 1 Chương trình có thể chạy

Quy trình kiểm thử: 1.Chạy chương trình

2.Nhập 6 vào ô Month,16 vào ô Day,2006 vào ô Year

3.Click vào nút Tell

Kết quả mong đợi: 1/1/2007

Kết quả thực hiện:

Trang 28

Cài đặt 1 Trường hợp kiểm thử (2)

 Cài đặt trường hợp kiêm thử (Test case) trong

ngôn ngữ lập trình Java sử dụng Junit frame work (www.junit.org)

 Hàm kiểm tra năm nhuận ( Leap):

Trang 29

Các yêu cầu cho nhân viên kiểm thử giỏi(1)

Hãy ghi nhớ những điều dưới đây có thể có ích:

 Nhân viên kiểm thử cần có các tính cách nghiệp vụ: thật thà, khách quan, trung thành

 Nhân viên kiểm thử cần tuyệt đối tin rằng có lỗi trong

phần mềm, và sẽ tìm ra lỗi hoặc không có lỗi

 Nhân viên kiểm thử cần phải được định hướng rõ ràng bởi vì lỗi không tự thể hiện ra

 Nhân viên kiểm thử nên có tính kiên trì Phần lớn thời gian các nhân viên phải lặp đi lặp lại 1 hành động, như nhập dữ liệu hàng nghìn lần chỉ để tìm ra 1 lỗi

 Nhân viên kiểm thử phải báo cáo lỗi không phát sinh Vì các lỗi đó có thể dẫn tới lỗi không tránh khỏi

Trang 30

Các yêu cầu cho nhân viên kiểm thử giỏi(2)

Hãy ghi nhớ những điều này có thể có ích:

 Nhân viên kiểm nên khôn khéo, có khả năng thuyết phục báo cho lập trình viên rằng có lỗi, nếu không sẽ

bị từ chối

 Nhân viên kiểm thử nên có tính tin cậy Khi quyết

định báo cáo 1 lỗi, phải bảo đảm sự tồn tại của lỗi

 Nhân viên kiểm thử phải giữ các bản báo cáo lỗi an toàn, nếu không nhiều sự nỗ lực sẽ lãng phí

Trang 31

Thực tế của việc kiểm thử phần mềm

Một nhân viên kiểm thử nên chú ý đến những điều sau đây:

 Kiểm thử không bao giờ hết hoàn toàn lỗi.

 Đã là một kiểm thử thì phải đưa ra lỗi.

 Càng xem xét kĩ các lỗi thì càng tìm ra nhiều lỗi ở đó.

 Kiểm thử không phải là bước cuối cùng.

Trang 32

 Nếu muốn kiểm thử chức năng

của máy tính bên, hãy nghĩ ra các khả

năng về đầu ra cho nó:

Vậy có vô số trường hợp xảy ra:

4 Đối với phép trừ, nhân và chia.

Không thể kiểm thử hoàn toàn 1 phần mềm (1)

Trang 33

Không thể kiểm thử hoàn toàn một phần mềm (3)

Trang 34

Kiểm thử không thể không tìm ra lỗi

Trang 35

Càng tìm càng ra nhiều lỗi

 Lập trình viên làm việc không tốt: Có những lúc không tập trung gây nên lỗi.

 Lập trình viên mắc lỗi do chủ quan.

 Tiên đề của kiểm thử là : Lỗi sau lỗi( Sau mỗi lỗi tìm thấy và được gỡ sẽ phát sinh nhiều lỗi khác).

Trang 36

Kiểm thử phần mềm không phải là bước cuối

 Kiểm thử không thể tìm tất cả lỗi.

 Kiểm thử không thể cải thiện chất lượng phần mềm: Chỉ là tìm lỗi chứ không sửa lỗi.

 Sự thành công của 1 dự án bao gồm thành

công của tất cả các pha trong xây dựng phần mềm

Trang 37

 Kiểm thử chức năng và kiểm thử hộp đen

 Kiểm thử cấu trúc và kiểm thử hộp trắng

Trang 38

Kiểm thử và gỡ rối

Kiểm thử( Testing):

 Kiểm thử là tiến trình hoạt động của một hệ thống hoặc một

thành phần với điều kiện xác định; nhằm quan sát hoặc ghi lại các kết quả, và tạo ra sự cân bằng một vài khía cạnh của hệ

Sự khác nhau và quan hệ giữa chúng:

 Kiểm thử là quá trình tìm lỗi trong khi gỡ rối để xác định vị trí và sửa lỗi.

 Qui trình làm việc: Kiểm thử: Tìm lỗi-> Gỡ rối: Định vị, sửa lỗi -> Kiểm thử xác minh xem lỗi đã được sửa chưa?.

Trang 39

Sự kiểm chứng (Validation) và sự kiểm định (Verification)

Trang 40

Kiểm thử hộp đen và hộp trắng

vi ,điều khiển dử liệu)

 Phần mềm dưới sự cân nhắc kiểm tra như

hộp đen và không có kiến thức của cấu trúc

bên trong hoặc như thế nào mà phần mềm

thực sự làm việc sử dụng trong khi kiểm thử

điều khiển logic)

 Kiểm thử dựa trên hiểu biết về cấu trúc bên trong của hệ thống và logic phần mềm

Trang 41

Mô hình chữ V

Trang 42

Các cấp độ kiểm thử khác nhau

Cấp độ đơn

 Các khối xây dựng lên của hệ thống làm việc chính

xác như qui định không?

Trang 43

Phân loại các kỹ thuật kiểm thử

Trang 44

Phân loại dựa trên việc các test được tạo

ra như thế nào?

Trang 45

Kiểm thử và đảm bảo chất lượng phần mềm

Kiểm thử

 Kiểm thử là quá trình hoạt động của hệ thống hoặc

bên dưới thành phần quy định truyền thống , quan sát

hoặc ghi lại kết quả , và tạo ra một đánh giá của 1 vài

khía cạnh của hệ thống hoặc thành phần

Đảm bảo chất lượng phần mềm

 Sự thiết lập của hoạt động thiết kế tới đánh giá quá

trình bới những người thiết kế phần mềm

 Mục tiêu của SQA là đánh giá và cải thiện tiến trình

Khác nhau và quan hệ

 Đối tượng làm việc của kiểm thử là phần mềm

 Đối tượng làm việc của quản lý chất lượng là quá

trình phát triển phần mềm

Trang 46

Tổng kết

Khiếm khuyết có thể tốn kém , tuy nhiên mục tiêu

của phần mềm là tìm kiếm khiếm khuyết

Kiểm thử phần mềm có thể chỉ đưa ra những khiếm khuyết trong phần mềm

Người kiểm thử phần mềm sử dụng các trường hợp

kiểm thử để tìm lỗi

Kiểm thử phần mềm không phải là ống cuối cùng của phần mềm

Trang 47

Đọc

Trang 48

Q&A

Ngày đăng: 11/01/2020, 19:31

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm