Tải bản đầy đủ (.pdf) (54 trang)

Bài giảng Kiểm thử phần mềm - Trường ĐH Thương mại

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.06 MB, 54 trang )

21/07/2020

Chương 1. Tổng quan về
kiểm thử phần mềm
1.1. Khái niệm phát triển phần mềm
1.1.1. Khái niệm phần mềm
1.1.2. Vòng đời phát triển phần mềm
1.1.3. Các mơ hình phát triển phần mềm

1.2. Khái niệm kiểm thử phần mềm
1.2.1. Khái niệm kiểm thử
1.2.2. Đảm bảo chất lượng
1.2.3. Kiểm soát chất lượng sản phẩm

Bộ môn Công nghệ thông tin
Trường Đại học Thương mại

1.3. Các nguyên tắc kiểm thử
1.4. Vai trò kiểm thử phần mềm
4

1.1.1. Khái niệm phần mềm

Tài liệu tham khảo
10th

Ian Sommerville, Software Engineering,
Edition, 2016.
Glenford J. Myers, Tom Badgett, Todd M.
Thomas, Corey Sandler, The Art of Software
Testing, 2011.



Ron Patton, Software Testing, Second Edition,
Sam Publishing, 2009.
 /> /> />
Khái niệm phần mềm
Một phần mềm gồm 3 thành phần:




Chương trình máy tính: mã nguồn, mã máy
Cấu trúc dữ liệu: cấu trúc làm việc (bộ nhớ trong) và cấu trúc
lưu trữ (bộ nhớ ngoài)
Các tài liệu liên quan: tài liệu hướng dẫn sử dụng (dành cho
người dùng), tài liệu phát triển (dành cho người phát triển
hệ thống), tài liệu tham khảo kỹ thuật (dành cho người bảo
trì)

Phần mềm được coi là tất cả các kỹ thuật

ứng dụng để thực hiện những dịch vụ chức
năng cho mục đích nào đó bằng phần cứng,
làm cho sử dụng phần cứng máy tính đạt
hiệu quả cao.

2

5

1.1.1. Khái niệm phần mềm


Nội dung
Chương 1. Tổng quan về kiểm thử
phần mềm
Chương 2. Quy trình kiểm thử phần
mềm
Chương 3. Các công cụ kiểm thử phần
mềm
Chương 4. Thiết kế ca kiểm thử
3

6

1


21/07/2020

Nhóm kỹ thuật, phương pháp luận
Các khái niệm và trình tự cụ thể hóa
một hệ thống

1.1.2. Vịng đời phát triển PM

Các phương pháp tiếp cận giải quyết
vấn đề

Là khoảng thời gian tính từ khi phần
mềm được đề xuất cho đến khi bỏ đi:
cụ thể là từ khi được đặt hàng, phát

triển, sử dụng đến khi bị loại bỏ.

Các trình tự thiết kế và phát triển
được chuẩn hóa
Các phương pháp đặc tả yêu cầu, thiết
kế hệ thống, thiết kế chương trình,
kiểm thử, tồn bộ quy trình quản lý
phát triển phần mềm.
7

Vịng đời phần mềm được phân chia
thành các pha chính như xác định yêu
cầu, triển khai, kiểm thử, bảo trì (vận
hành)... Phạm vi, thứ tự các pha khác
nhau tùy theo từng mơ hình, dự án cụ
thể
10

Nhóm chương trình

1.1.2. Vịng đời phát triển PM

 Là phần giao diện với phần cứng, tạo thành từ các nhóm

lệnh chỉ thị cho máy tính biết trình tự thao tác xử lý dữ
liệu
 Phần mềm cơ bản: với chức năng cung cấp môi trường
thao tác dễ dàng cho người sử dụng nhằm tăng hiệu năng
xử lý của phần cứng (ví dụ như OS là chương trình hệ
thống)

 Phần mềm ứng dụng: dùng để xử lý nghiệp vụ thích hợp
nào đó (quản lý, kế tốn, . . .), phần mềm đóng gói, phần
mềm của người dùng, . . .

Tùy mơ hình áp dụng mà việc phân
chia các pha, các bước có thể có sự
khác nhau: từ 3 đến 20 pha.
Xác định yêu cầu

Triển khai

Kiểm thử

(VËn hµnh) Bảo trì

Vịng đời phần mềm

11

8

1.1.2. Vịng đời phát triển PM

Nhóm các tư liệu
Những tư liệu hữu ích, có giá trị cao và
rất cần thiết để phát triển, vận hành và
bảo trì phần mềm
Để xây dựng phần mềm với độ tin cậy
cao cần tạo ra các tư liệu chất lượng
cao: đặc tả yêu cầu, mô tả thiết kế từng

loại, điều kiện kiểm thử, thủ tục vận
hành, hướng dẫn thao tác, …
9

 Các giai đoạn phát triển phần mềm
1.

Phân tích tính khả thi và đặc tả yêu cầu

2. Phân tích
3. Thiết kế
4. Mã hóa
5. Kiểm thử
6. Cài đặt
7. Bảo trì

12

2


21/07/2020

Phân tích tính khả thi
3. Đặc tả yêu cầu: Pha này sẽ tư liệu hố những thơng tin thu thập được.
Có hai loại u cầu cần được xác định:

Phân tích tính khả thi
Xác định vấn đề cần giải quyết
Xem xét các giải pháp và kỹ thuật khác nhau


(đánh giá ưu nhược điểm của từng giải
pháp)
Đánh giá về thời gian, giá thành, nguồn tài
nguyên cần thiết
Sản phẩm: tài liệu phân tích

* Yêu cầu của người sử dụng: là những yêu cầu bằng ngôn ngữ tự nhiên bổ
sung thêm cho các biểu đồ của các dịch vụ mà hệ thống cung cấp và các
ràng buộc vận hành của nó. Kiểu yêu cầu này được viết bởi người sử
dụng.
* Yêu cầu hệ thống: là những tài liệu có cấu trúc mơ tả chi tiết về các chức
năng, dịch vụ và các ràng buộc vận hành của hệ thống. Yêu cầu hệ thống
sẽ định nghĩa những gì cần phải xây dựng, cho nên nó có thể trở thành
bản hợp đồng giữa khách hàng và nhà thầu.

4. Đánh giá yêu cầu: pha này sẽ kiểm tra lại các yêu cầu xem chúng có
đúng thực tế hay khơng, có thống nhất khơng, có đầy đủ khơng. Nếu
phát hiện ra lỗi thì ta phải chỉnh sửa các lỗi này.

13

16

Đặc tả yêu cầu

Đặc tả yêu cầu
 Phân tích và đặc tả yêu cầu

Xác định nhu cầu của khách hàng/người sử


dụng


Xác định bài tốn, chứ khơng phải là giải pháp

Khó khăn



Khách hàng khơng biết rõ cái họ cần
Khách hàng khơng trình bày rõ cái họ muốn thay đổi

Sản phẩm: tài liệu đặc tả yêu cầu

14

17

Đặc tả yêu cầu

Thiết kế phần mềm

 Đặc tả yêu cầu (hay còn gọi là kỹ thuật xác định yêu cầu) là quy

 Thiết kế phần mềm là quá trình thiết kế cấu trúc phần mềm dựa trên

trình tìm hiểu và định nghĩa những dịch vụ nào được yêu cầu
và các ràng buộc trong quá trình vận hành và xây dựng hệ
thống.

 Quy trình xác định yêu cầu bao gồm bốn pha chính:
1. Nghiên cứu khả thi: Nghiên cứu khả thi giúp xác định
những yêu cầu của người sử dụng có thoả mãn những cơng
nghệ hiện tại hay khơng. Về góc độ kinh doanh, nghiên cứu
khả thi nhằm xác định hệ thống đưa ra có mang lại lợi
nhuận không. Việc nghiên cứu khả thi nên được thực hiện
một cách nhanh chóng và khơng q tốn kém. Kết quả của
việc nghiên cứu khả thi sẽ xác định có nên tiếp tục xây dựng
hệ thống nữa hay khơng.
2. Phân tích và rút ra các u cầu: đây là quy trình đưa ra các
u cầu hệ thống thơng qua một số phương pháp như: quan
sát hệ thống hiện tại, phỏng vấn và thảo luận với người sử
dụng, phân tích nhiệm vụ, phân tích tài liệu hoặc hệ thống
cũ … Trong pha này, chúng ta có thể phải xây dựng một hoặc
nhiều mơ hình hệ thống và các mẫu thử.

15

những tài liệu đặc tả. Hoạt động thiết kế bao gồm những cơng việc
chính sau:
 Thiết kế kiến trúc: Các hệ thống con cấu thành lên hệ thống cần xây dựng

và mối quan hệ giữa chúng được xác định và tư liệu hoá.

 Đặc tả trừu tượng: với mỗi hệ thống con, phải có một bản đặc tả về các

dịch vụ của nó và những ràng buộc khi nó vận hành.

 Thiết kế giao diện: với mỗi hệ thống con, các giao diện của nó với những


hệ thống con khác phải được thiết kế và tư liệu hoá.

 Thiết kế thành phần: các dịch vụ cung cấp cho các thành phần khác và các

giao diện tương tác với chúng phải được thiết kế.

 Thiết kế cấu trúc dữ liệu: cấu trúc dữ liệu được sử dụng để cài đặt hệ

thống phải được thiết kế một cách chi tiết và cụ thể.

 Thiết kế thuật toán: Các thuật toán được sử dụng để cung cấp các dịch vụ

phải được thiết kế chi tiết và chính xác.

18

3


21/07/2020

Phân tích

Mã hóa và gỡ rối
Mã hóa và gỡ rối
Mã hóa: cài đặt các thiết kế bằng ngơn ngữ

lập trình khơng đơn thuần chỉ là lập trình







Viết tài liệu
Chuẩn lập trình
Lập trình theo cấp
Cơng cụ
Quản lý phiên bản

Gỡ rối: phát hiện các lỗi trong quá trình lập

trình
Sản phẩm: chương trình

22

19

Thiết kế phần mềm

Kiểm thử

Các công việc trong thiết kế phần mềm

Kiểm thử - Đánh giá phần mềm hay
còn gọi là thẩm tra và đánh giá (V&V Verification and validation) được sử
dụng để chỉ ra rằng hệ thống đã thực
hiện theo đúng các đặc tả và thoả mãn
mọi yêu cầu của khách hàng.

Kiểm thử bao gồm các công đoạn:
kiểm tra, xem xét lại, và kiểm thử hệ
thống. Kiểm thử hệ thống tức là cho hệ
thống thực hiện trên những trường
hợp có dữ liệu thật được lấy từ tài liệu23
đặc tả hệ thống. Quy trình kiểm thử

20

Thiết kế phần mềm

Bảo trì hệ thống

Các phương pháp thiết kế



Bảo trì hệ thống:

Hướng chức năng
Hướng đối tượng

Bảo đảm chương trình vận hành tốt
Cài đặt các thay đổi
Cài đặt các yêu cầu mới
Xử lý các lỗi khi vận hành
Sản phẩm: chương trình

21


24

4


21/07/2020

1.1.3. Các mơ hình phát triển PM

Bảo trì hệ thống
Cải tiến phần mềm
Khi các yêu cầu hệ thống thay đổi theo sự

thay đổi của các yêu cầu nghiệp vụ thì phần
mềm phải cải tiến và thay đổi để hỗ trợ
khách hàng. Thơng thường chi phí để bảo trì
và cải tiến thường đắt hơn nhiều so với chi
phí xây dựng phần mềm.

Hiện nay có rất nhiều mơ hình phát
triển phần mềm, và thường được phân
thành 2 loại: mơ hình tuyến tính và mơ
hình lặp.
Mơ hình tuyến tính: các bước được thực

hiện tuần tự, khơng lặp lại.



Mơ hình thác nước

Mơ hình V…

Mơ hình lặp: các bước có thể thực hiện song

song, có thể lặp lại một số bước.



25

1.1.2. Vòng đời phát triển phần mềm



Mơ hình tiến hóa
Mơ hình xoắn ốc
Mơ hình hợp nhất…

28

a. Mơ hình Thác nước
Mơ hình thác nước (Water Fall Model)

29

26

1.1.2. Vòng đời phát triển phần mềm
 Kiểm thử cần thực hiện trong suốt
vịng đời của phần mềm

Kiểm thử khơng tồn tại độc lập.
Các hoạt động của kiểm thử luôn gắn liền với

các hoạt động phát triển phần mềm.
Các mô hình phát triển phần mềm khác nhau
cần các cách tiếp cận test khác nhau.

27

a. Mơ hình Thác nước
Các pha của mơ hình thác nước bao
gồm:
Phân tích và xác định các yêu cầu
Thiết kế hệ thống và phần mềm
Cài đặt và kiểm thử đơn vị
Tích hợp và kiểm thử hệ thống
Vận hành và bảo trì.

30

5


21/07/2020

b. Mơ hình V

a. Mơ hình Thác nước

Bảo trì


Là mơ hình cổ điển
Phân tích u
cầu

Phương pháp áp dụng 1 lần
Điều khiển hiệu quả

Kiểm thử chấp
nhận

Thiết kế hệ
thống

Phạm vi giới hạn của vịng lặp
Vịng đời dài
Khơng thích hợp với các hệ thống
khơng rõ ràng

Kiểm thử hệ
thống
Kiểm thử đơn vị và
tích hợp

Thiết kế
chương trình

Lập trình
34


31

b. Mơ hình V

Ứng dụng
Trong mơ hình thác nước, năm pha trên phải
được thực hiện một cách tuần tự; kết thúc pha
trước, rồi mới được thực hiện pha tiếp theo. Do
đó, nhược điểm chính của mơ hình thác nước là
rất khó khăn trong việc thay đổi các pha đã được
thực hiện. Giả sử, pha phân tích và xác định yêu
cầu đã hoàn tất và chuyển sang pha kế tiếp, nhưng
lúc này lại có sự thay đổi yêu cầu của người sử
dụng; thì chỉ cịn cách là phải thực hiện lại từ đầu.
Mơ hình này chỉ thích hợp khi các yêu cầu đã
được tìm hiểu rõ ràng và những thay đổi sẽ được
giới hạn một cách rõ ràng trong suốt q trình
thiết kế. Tuy nhiên, trong thực tế có rất ít những
hệ thống nghiệp vụ có các u cầu ổn định.

Trong mơ hình V:
Các tiến trình kiểm thử được thêm vào
Kết nối kiểm thử với phân tích và thiết kế
Thích hợp với những trường hợp bài tốn

khơng nhất qn

32

35


b. Mơ hình V

Nhận xét
Ưu điểm:

Tồn bộ qui trình được chia thành hai nhóm giai
đoạn tươngứng nhau: phát triển và kiểm thử.Mỗi
giai đoạn phát triển sẽ tiến hành song song với một
giai kiểm thử tương ứng => các lỗi được phát hiện
sớm ngay từ đầu

Chỉ phù hợp với các dự án nhỏ hoặc
Yêu cầu xác định

Nhược điểm:

Tinh thần chủ đạo của V-model là các hoạt động kiểm
thử phải được tiến hành song song (theo khả năng có
thể) ngay từ đầu chu trình cùng với các hoạt động phát
triển. Ví dụ, các hoạt động cho việc lập kế hoạch kiểm
thử toàn hệ thống có thể được thực hiện song song với
các hoạt động phân tích và thiết kế hệ thống.

Khơng phù hợp với dự án lớn
Thời gian thực hiện lâu

33

36


6


21/07/2020

b. Mơ hình V

c. Mơ hình bản mẫu

 Giai đoạn phát triển:
 Xác định yêu cầu và đặc tả (Requirement & Specification): Xác định
yêu cầu cần thiết mà hệ thống địi hỏi, đưa ra bản đặc tả.
 Phân tích hệ thống (System Analysis): Phân tích các yêu cầu mà hệ
thống cần có và đưa ra giải pháp tích hợp các yêu cầu đó vào hệ thống.
 Thiết kế chi tiết (Detailed Design): Chi tiết hóa các bước thực hiện xây
dựng hệ thống (Về cả giao diện và nội dung).
 Phát triển (Development ): Thực hiện việc viết code
 Giai đoạn kiểm thử:
 Kiểm tra từng thành phần và tích hợp (Unit & Intergration Test): Kiểm
tra các module của hệ thống tương ứng với pha thiết kế chi tiết.
 Kiểm thử toàn hệ thống (System Test): kiểm thử hoạt động của hệ thống
(về chức năng, giao diện).
 Nghiệm thu (Accepted Test): Kiểm tra lần cuối cùng và nghiệm thu sản
phẩm đưa vào sử dụng.
37

b. Mơ hình V

Mục đích

Xem xét u cầu người sử dụng ở giai đoạn

ban đầu
Giảm bớt rủi ro và không chắc chắn
Kiểm chứng thiết kế và thực thi

Nên thường xuyên trả lời các câu hỏi
chuyên biệt; mục đích phải được xác
định.
40

Lợi ích của bản mẫu

 Với V model thì cơng việc test được tham gia ngay từ đầu, từ

lúc lấy yêu cầu là có thể "test" bằng cách review tài liệu yêu
cầu, rồi cho tới review đặc ta chi tiết, các bản thiết kế,... review
code rồi cuối cùng là test ở mức thấp nhất - từng module, chức
năng, màn hình,... đến test tích hợp rồi kiểm thử hệ thống.
 So với mơ hình khác thì ở mơ hình này, công việc test đi sát
hơn và ngay từ đầu khi bắt đầu phát triển. Chắc chắn chất
lượng dự án sẽ tốt hơn. Nhưng tại sao người ta vẫn tiếp tục đưa
ra mơ hình phát triển khác? Vì ở mơ hình chữ V này người ta
vẫn phát triển cùng lúc cả hệ thống (nhiều yêu cầu, chức năng
cùng lúc) mà rủi ro (risk) về thay đổi yêu cầu là rất lớn. Nên
mơ hình này vẫn có thể gặp rắc rối khi khách hàng thường
xuyên thay đổi yêu cầu.

Học bằng cách làm việc
Tăng cường giao tiếp

Tăng sự tham gia của người dùng vào
dự án
Làm rõ các yêu cầu chỉ biết một phần

41

38

c. Mơ hình bản mẫu

Tuần tự làm bản mẫu
Tập hợp yêu cầu

Nghe Khách
trình bày

Thiết kế nhanh

Tạo / sửa
bản mẫu

Xây dựng bản mẫu
Đánh giá của khách hàng
Làm mịn

Khách kiểm tra
bản mẫu

Quay lại thiết kế nhanh để điều chỉnh
Xây dựng sản phẩm


Mô hình bản mẫu (Prototyping model)

39

42

7


21/07/2020

Đánh giá

d. Mơ hình xoắn ốc

Ưu điểm: phù hợp với
Hệ thống rủi ro cao

Lập kế hoạch

Yêu cầu không chắc chắn

Phân tích rủi ro

Giao tiếp

Giao diện chưa rõ ràng

khách hàng


Khái niệm

Chiến lược cài đặt chưa rõ ràng

Thiết kế

Làm mới
Nâng cấp

Khách hàng

Hạn chế:
Khách hàng có thể cho rằng nguyên mẫu là

hệ thống thực

Mong đợi không thực tế về tiến triển của dự án

Chi phí tăng thêm

Xác định mục đích,
lựa chọn và ràng
buộc

Đánh giá lựa chọn;
xác định và giải
quyết rủi ro

Phân tích

rủi ro
Phân tích
rủi ro
Phân tích
rủi ro

Người phát triển có sự chọn lựa không tốt
Phù hợp cho nguyên mẫu, nhưng không phù hợp cho hệ
thống thực

Lập kế hoạch
u cầu

Ngun mẫu khơng giống hồn tồn hệ

Lập kế hoạch
phát triển

thống cuối cùng


46

d. Mơ hình xoắn ốc
(Boehm 1987)

Đánh giá




Xuất xưởng

Mơ hình xoắn ốc (spiral)

43



Xây dựng &

đánh giá

Bảo trì

Bản mẫu

Kế hoạch kiểm
thử và tích hợp

Khách hàng sẽ có các phản ứng khác nhau

Kế hoạch cho giai đoạn tiếp

44

Chức năng

Yêu cầu phần
mềm


Kiểm thử yêu
cầu

Thiết kế
hệ
thống

Thiết kế
chi tiết

Lập
trình

Kiểm thử
thiết kế
Kiểm thử
chấp nhận

Bản mẫu
Bản mẫu

Tích hợp và
kiểm thử

Kiểm
thử
đơn vị

Phát triển và kiểm
chứng sản phẩm

mức tiếp theo

47

Ứng dụng

d. Mơ hình xoắn ốc

Mơ hình bản mẫu thường được sử dụng
khi:

 Trong mơ hình xoắn ốc, quy trình phát triển phần mềm

Khi mới rõ mục đích chung chung của phần

mềm, chưa rõ chi tiết đầu vào hay xử lý ra sao
hoặc chưa rõ yêu cầu đầu ra
Dùng như “Hệ sơ khai” để thu thập yêu cầu
người dùng qua các thiết kế nhanh
Các giải thuật, kỹ thuật dùng làm bản mẫu có
thể chưa nhanh, chưa tốt, miễn là có mẫu để
thảo luận gợi yêu cầu của người dùng
45

được biểu diễn như một vòng xoắn ốc. Các pha trong quy
trình phát triển xoắn ốc bao gồm:
 Thiết lập mục tiêu: xác định mục tiêu cho từng pha của dự án.
 Đánh giá và giảm thiểu rủi ro: rủi ro được đánh giá và thực hiện các

hành động để giảm thiểu rủi ro.


 Phát triển và đánh giá: sau khi đánh giá rủi ro, một mô hình xây

dựng hệ thống sẽ được lựa chọn từ những mơ hình chung.

 Lập kế hoạch: đánh giá dự án và pha tiếp theo của mơ hình xoắn ốc

sẽ được lập kế hoạch.

48

8


21/07/2020

d. Mơ hình xoắn ốc

Đánh giá

Nhấn mạnh việc đánh giá các rủi ro

Ưu điểm

Phần mềm được xây dựng theo nhiều
chu kỳ. Mỗi chu kỳ tương ứng với một
sản phẩm của 1 giai đọan phát triển
Xác định các mục tiêu, giải pháp, ràng buộc
Đánh giá các giải pháp, xác định các nguy cơ


và tìm cách giải quyết chúng
Phát triển và kiểm thử sản phẩm của chu kỳ
này
Lập kế hoạch cho chu kỳ tiếp theo
49

Hạn chế rủi ro sớm
Nhận được phản hồi ( feedbacks) từ khách

hàng sớm

Dễ kiểm soát các mạo hiểm ở từng mức tiến hóa

Hạn chế
Khó thuyết phục khách hàng là phương pháp tiến hóa

xoắn ốc có thể kiểm sốt được
Chưa được dùng rộng rãi như các mơ hình tuyến tính

hoặc chế thử.
52

d. Mơ hình xoắn ốc (tiếp)

Ứng dụng
Mơ hình xoắn ốc phù hợp với

 Giao tiếp khách hàng: giữa người phát triển và khách

Các hệ phần mềm quy mô lớn, các dự án lớn,


hàng để tìm hiểu yêu cầu, ý kiến
 Lập kế hoạch: Xác lập tài nguyên, thời hạn và những
thơng tin khác
 Phân tích rủi ro: Xem xét mạo hiểm kỹ thuật và mạo
hiểm quản lý
 Thiết kế: Xây dựng một hay một số biểu diễn của
ứng dụng

phức tạp

Hệ thống cần phát triển nhiều phiên bản
Các hệ thống có u cầu chưa xác định rõ ràng

50

d. Mơ hình xoắn ốc (tiếp)

53

e. Mơ hình hợp nhất
 Mơ hình hợp nhất sử dụng Các kỹ thuật thế hệ 4

Xây dựng và xuất xưởng: xây dựng, kiểm thử,
cài đặt và cung cấp hỗ trợ người dùng (tư liệu,
huấn luyện, . . .)
Đánh giá của khách hàng: Nhận các phản hồi
của người sử dụng về biểu diễn phần mềm trong
giai đoạn kỹ nghệ và cài đặt


51

(Fourth generation techniques): Tập hợp các cơng cụ
cho phép xác định đặc tính phần mềm ở mức cao, sau
đó tự động sinh mã nguồn dựa theo đặc tả đó.
 Các cơng cụ 4GT điển hình: ngơn ngữ phi thủ tục cho
truy vấn CSDL, tạo báo cáo, xử lý dữ liệu, tương tác
màn hình, tạo mã nguồn, khả năng đồ họa bậc cao, khả
năng bảng tính, khả năng giao diện Web.
 Từ thu thập yêu cầu cho đến sản phẩm: đối thoại giữa
khách và người phát triển là quan trọng.
 Không nên bỏ qua khâu thiết kế: 4GT chỉ áp dụng để
triển khai thiết kế qua ngôn ngữ lập trình thế hệ 4
(4GL- Fourth-generation programming language).
54

9


21/07/2020

e. Mơ hình hợp nhất

e. Mơ hình hợp nhất
Tiến trình hợp nhất có thể được nhìn
dưới hai góc nhìn khác nhau

Góc nhìn kỹ thuật

Góc nhìn quản lý: quan tâm đến lĩnh vực


kinh tế, chiến thuật, con người.


Tiến trình gồm 4 giai đoạn.

Góc nhìn kỹ thuật: quan tâm đến cơng nghệ,

kiểm tra chất lượng, phương pháp.


Tiến trình gồm nhiều bước lặp.

55

58

e. Mơ hình hợp nhất

e. Mơ hình hợp nhất
Góc nhìn quản lý

Kết hợp hai góc nhìn

56

e. Mơ hình hợp nhất

59


e. Mơ hình hợp nhất

Góc nhìn kỹ thuật: các bước lặp

Mơ hình hợp nhất và UML

Mỗi bước lặp gồm các hoạt động







Đặc tả
Phân tích
Thiết kế
Mã hóa
Kiểm thử
Cài đặt

Mỗi bước lặp là một tiến trình thác đổ

57

60

10



21/07/2020

e. Mơ hình hợp nhất

f. Mơ hình Agile: quy trình Scrum

Ưu điểm: giảm thời gian phát triển và
tăng năng suất lao động.
Nhược điểm: 4GT khó dùng hơn ngơn
ngữ lập trình, mã khó tối ưu và khó
bảo trì cho hệ thống lớn  cần kỹ
năng của kỹ sư phần mềm
Trong tương lai: kết hợp 4GT với mơ
hình hướng thành phần.

Scrum là một quy trình phát triển phần mềm theo
mơ hình linh hoạt (agile). Vì thế, nó tn thủ các
ngun tắc của Agile
Scrum rất linh hoạt như các phương pháp Agile
khác. Nhờ đó nó mang lại tính thích nghi rất cao.
Dựa trên các thơng tin minh bạch hóa từ các q
trình thanh tra và làm việc, Scrum có thể phản hồi
lại các thay đổi một cách tích cực, nhờ đó mang
lại thành cơng cho dự án.

61

f. Mơ hình Agile: quy trình Scrum
 Agile là một phương pháp phát triển phần mềm linh hoạt để


làm sao đưa sản phẩm đến tay người dùng càng nhanh càng tốt
càng sớm càng tốt.
 Đặc trưng Agile:
 ◦Tính lặp (Iterative): Dự án sẽ được thực hiện trong các phân

đoạn lặp đi lặp lại. Các phân đoạn (được gọi là Iteration hoặc
Sprint) này thường có khung thời gian ngắn (từ 1 – 4 tuần). Trong
mỗi phân đoạn này, nhóm phát triển thực hiện đầy đủ các cơng
việc cần thiết như lập kế hoạch, phân tích yêu cầu, thiết kế, triển
khai, kiểm thử (với các mức độ khác nhau) để cho ra các phần
nhỏ của sản phẩm.
 ◦Các phân đoạn (Sprint) lặp đi lặp lại trong Agile: Các phương

pháp Agile thường phân rã mục tiêu thành các phần nhỏ với quá
trình lập kế hoạch đơn giản và gọn nhẹ nhất có thể, và khơng thực
hiện việc lập kế hoạch dài hạn.

62

f. Mơ hình Agile: quy trình Scrum
 Đặc trưng Agile:
 ◦Tính tiệm tiến (Incremental) và tiến hóa (Evolutionary): Cuối các

phân đoạn (Sprint), nhóm phát triển thường cho ra các phần nhỏ của sản
phẩm cuối cùng. Các phần nhỏ này thường là đầy đủ, có khả năng chạy
tốt, được kiểm thử cẩn thận và có thể sử dụng ngay (gọi là potentially
shippable product increment of functionality). Theo thời gian, phân đoạn
(sprint) này tiếp nối phân đoạn (sprint) kia, các phần chạy được này sẽ
được tích lũy, lớn dần lên cho tới khi toàn bộ yêu cầu của khách hàng
được thỏa mãn.

 ◦Tính thích ứng (hay thích nghi – adaptive): Do các Sprint chỉ kéo dài
trong một khoảng thời gian ngắn, và việc lập kế hoạch cũng được điều
chỉnh liên tục, nên các thay đổi trong quá trình phát triển (yêu cầu thay
đổi, thay đổi công nghệ, thay đổi định hướng về mục tiêu v.v.) đều có
thể được đáp ứng theo cách thích hợp. Theo đó, các quy trình Agile
thường thích ứng rất tốt với các thay đổi.
63

64

f. Mơ hình Agile: quy trình Scrum
 Các cơng cụ (artifacts) Scrum
 Product backlog: Đây là danh sách ưu tiên các tính năng

(feature) hoặc đầu ra khác của dự án, có thể hiểu như là
danh sách yêu cầu (requirement) của dự án. Product Owner
chịu trách nhiệm sắp xếp độ ưu tiên cho từng hạng mục
(Product Backlog Item) trong Product Backlog dựa trên các
giá trị do Product Owner định nghĩa
 Sprint backlog: Đây là bản kế hoạch cho một Sprint; là kết
quả của buổi họp lập kế hoạch (Sprint Planning). Với sự kết
hợp của Product Owner, nhóm sẽ phân tích các u cầu theo
độ ưu tiên từ cao xuống thấp để hiện thực hóa các hạng mục
trong Product Backlog dưới dạng danh sách công việc
(TODO list).
65

f. Mơ hình Agile: quy trình Scrum
Product Owner tạo ra Product Backlog chứa các yêu
cầu của dự án với các hạng mục được sắp theo thứ tự

ưu tiên. Đội sản xuất sẽ thực hiện việc hiện thực hóa
dần các yêu cầu của Product Owner với sự lặp đi lặp
lại các giai đoạn từ 1 đến 4 tuần làm việc (gọi là
Sprint) với đầu vào là các hạng mục trong Product
Backlog, đầu ra là các gói phần mềm hồn chỉnh có
thể chuyển giao được (Potentially Shippable Product
Increment)
Đội sản xuất cùng họp với Product Owner để lập kế
hoạch cho từng Sprint. Kết quả của buổi lập kế hoạch
(theo cách làm của Scrum) là Sprint Backlog chứa các
công việc cần làm trong suốt một Sprint.
66

11


21/07/2020

f. Mơ hình Agile: quy trình Scrum
Các Sprint sẽ được lặp đi lặp lại cho tới
khi nào các hạng mục trong Product
Backlog đều được hồn tất

f. Mơ hình Agile: quy trình Scrum
 Scrum định nghĩa quy tắc cho bốn sự kiện chủ chốt (các cuộc họp)

nhằm tạo môi trường và quy cách hoạt động và cộng tác cho các thành
viên trong dự án. Các lễ nghi này diễn ra trước khi Sprint bắt đầu
(Sprint Planning), trong khi Sprint diễn ra (Daily Scrum) và sau khi
Sprint kết thúc (Sprint Review và Sprint Retrospective):

 1.Sprint Planning (Họp Kế hoạch Sprint): Nhóm phát triển họp với
Product Owner để lên kế hoạch làm việc cho một Sprint. Công việc lập
kế hoạch bao gồm việc chọn lựa các yêu cầu cần phải phát triển, phân
tích và nhận biết các công việc phải làm kèm theo các ước lượng thời
gian cần thiết để hoàn tất các tác vụ. Scrum sử dụng cách thức lập kế
hoạch từng phần và tăng dần theo thời gian, theo đó, việc lập kế hoạch
không diễn ra duy nhất một lần trong vòng đời của dự án mà được lặp
đi lặp lại, có sự thích nghi với các tình hình thực tiễn trong tiến trình đi
đến sản phẩm.

67

f. Mơ hình Agile: quy trình Scrum
 Trong suốt q trình phát triển, nhóm sẽ phải cập nhật Sprint

Backlog và thực hiện công việc họp hằng ngày (Daily Scrum)
để chia sẻ tiến độ công việc cũng như các vướng mắc trong quá
trình làm việc cùng nhau. Nhóm được trao quyền để tự quản lí
và tổ chức lấy cơng việc của mình để hồn thành cơng việc
trong Sprint.
 Khi kết thúc Sprint, nhóm tạo ra các gói phần mềm có chức
năng hồn chỉnh, sẵn sàng chuyển giao (shippable) cho khác
hàng. Buổi họp Sơ kết Sprint (Sprint Review) ở cuối Sprint sẽ
giúp khách hàng thấy được nhóm đã có thể chuyển giao những
gì, cịn những gì phải làm hoặc cịn gì phải thay đổi hay cải
tiến. Sau khi kết thúc việc đánh giá Sprint, Scrum Master và
nhóm cùng tổ chức họp Cải tiến Sprint (Sprint Retrospective)
để tìm kiếm các cải tiến trước khi Sprint tiếp theo bắt đầu, điều
này sẽ giúp nhóm liên tục học hỏi và trưởng thành qua từng
68

Sprint.

f. Mơ hình Agile: quy trình Scrum
Quy trình Scrum được vận hành thế
nào?

70

f. Mơ hình Agile: quy trình Scrum
 2. Daily Scrum (Họp Scrum hằng ngày):Scrum Master tổ chức cho

Đội sản xuất họp hằng ngày trong khoảng 15 phút để Nhóm Phát
triển chia sẻ tiến độ cơng việc. Trong cuộc họp này, từng người trong nhóm phát
triển lần lượt trình bày để trả lời 3 câu hỏi sau:
 Hơm qua đã làm gì?
 Hơm nay sẽ làm gì?
 Có khó khăn trở ngại gì khơng?

 3. Sprint Review (Họp Sơ kết Sprint): Cuối Sprint, nhóm phát

triển cùng với Product Owner sẽ rà sốt lại các cơng việc đã hoàn tất
(DONE) trong Sprint vừa qua và đề xuất các chỉnh sửa hoặc thay đổi
cần thiết cho sản phẩm.
 4. Sprint Retrospective (Họp Cải tiến Sprint): Dưới sự trợ giúp
của Scrum Master, nhóm phát triển sẽ rà sốt lại tồn diện Sprint vừa
kết thúc và tìm cách cải tiến quy trình làm việc cũng như bản thân
sản phẩm.
71

f. Mơ hình Agile: quy trình Scrum

 Trong Scrum, đội ngũ tham gia phát triển phần mềm được

phân chia ra ba vai trò với trách nhiệm rõ ràng để đảm bảo
tối ưu hóa các cơng việc đặc thù. Ba vai trị này bao
gồm: Product Owner (chủ sản phẩm), Scrum Master
và Development Team (Đội sản xuất hay Nhóm Phát
triển).
 Product Owner: Là người chịu trách nhiệm về sự thành công

của dự án, người định nghĩa các yêu cầu và đánh giá cuối cùng
đầu ra của các nhà phát triển phần mềm.
 Scrum Master: họ phải đảm bảo các sprint được hoàn thành
đúng mục đích, bảo vệ đội làm việc và loại bỏ các trở ngại.
 Development Team: thường từ 5-9 người, tùy theo quy mơ dự
án nó có thể có rất nhiều đội, nhiều người tham gia.
69

72

12


21/07/2020

Kiểm thử trong mơ hình Agile
 Ko thực hiện đưa toàn bộ yêu cầu/ nghiệp vụ của hệ thống vào

code và testing cùng 1 lúc ( như quy trình truyền thống) mà sẽ
chia các Yêu cầu ra làm theo từng giai đoạn. Mỗi 1 giai đoạn chỉ
làm 1 số lượng yêu cầu nhất định

 Chia thành nhiều giai đoạn nhỏ để thực hiện hay còn gọi là
Sprint
 Mỗi 1 sprint thường kéo dài từ 1 tuần đến 4 tuần ( ko dài hơn 1
tháng)
 Đầu sprint sẽ lên kế hoạch làm những yêu cầu nào. Sau đó, sẽ
thực hiện code và test. Cuối sprint là 1 sản phẩm hoàn thiện cả
code lẫn test có thể demo và chạy được.
 Hồn thành sprint 1, tiếp tục làm sprint 2, sprint... cho đến khi
hồn thành hết các u cầu.

 Lựa chọn mơ hình
Phụ thuộc vào bài tốn, vào mơi
trường cụ thể
u cầu rõ ràng: =>

Mơ hình thác nước

 u cầu chưa rõ ràng, độ phức tạp cao

 Yêu cầu có khả năng thay đổi
 Khơng chắc chắn về tính hiệu quả, tính khả thi
=> Làm bản mẫu, mơ hình xoắn ốc, Agile
76

73

Kiểm thử trong mơ hình Agile
 Trong mỗi 1 sprint thì sẽ có họp hàng ngày – daily meeting. Cả team

sẽ đứng họp thành 1 vòng tròn, thường chỉ họp ngắn từ 15 – 20 phút.

Mỗi thành viên sẽ báo cáo: hơm qua tơi đã làm gì? Hơm nay tơi sẽ
làm gì? Có gặp khó khăn gì ko?
 Trong mỗi 1 sprint thì các thành viên của dự án phải tạo task cho
code và test,1 task code xong là phải có task test liền ngay đó. Do
thời gian làm ngắn ngày nên hiệu quả làm việc phải cao, đúng tiến
độ để đảm bảo cuối sprint là hoàn thành được cả test. ( ý này nếu bị
hỏi mới kể)
 Ưu điểm của quy trình này là phù hợp với những yêu cầu/ nghiệp vụ
hay thay đổi, hoặc hệ thống nghiên cứu do làm theo từng giai đoạn
ngắn ngày, có thể nhìn thấy những rủi ro hay những điểm chưa phù
hợp để thay đổi ( ý này nếu bị hỏi mới kể)
 Điều hành đội dự án sẽ là ơng scrum master, cịn có product owner là
người đánh giá phần mềm làm đã theo đúng nghiệp vụ/ yêu cầu chưa
( ý này nếu bị hỏi mới kể)
74

Kết luận

Có thể tổ hợp các mơ hình để đem lại hiệu quả

77

 Lặp tiến trình:

Đối với Hệ thống phức tạp, cần chia dự

Mỗi phần của tiến trình được lặp theo 2
cách tiếp cận

án thành các hệ thống con



 Tổ hợp các mơ hình:

Một số lưu ý

Trong thực tế, người ta thường kết
hợp nhiều mơ hình cho một dự án



Một số lưu ý

Áp dụng mơ hình xoắn ốc hay mơ hình hợp nhất cho
tồn bộ dự án.
Mỗi hệ thống con có thể áp dụng một mơ hình khác nhau
 Áp dụng mơ hình ngun mẫu cho các hệ thống con phức
tạp
 Áp dụng mơ hình thác nước cho các hệ thống con khác

• Phát triển gia tăng
• Phát triển xoắn ốc

75

78

13



21/07/2020

1.2. Khái niệm kiểm thử phần mềm
Một số lưu ý

Kiểm thử phần mềm là quá trình khảo sát

một hệ thống hay các thành phần dưới
những điều kiện xác định; quan sát, ghi
lại kết quả, và đánh giá một khía cạnh nào
đó của hệ thống hay thành phần đó. (Theo
IEEE Standard Glossary of Software
Engineering Terminology).
Kiểm thử là giai đoạn quan trọng đảm bảo
chất lượng phần mềm.

 Chuẩn hóa tiến trình:
Tăng năng lực của tổ chức phát triển phần
mềm

• ISO 9000-03 (International Standards Organization )
• CMM (Software Engineering Institute)

79

82

1.2.1. Khái niệm kiểm thử
Một số lưu ý


Kiểm thử là tiến trình xem xét, kiểm

 Giảm chi phí phát triển:
Sử dụng các phương pháp, cơng cụ tiên tiến

• tái sử dụng: thư viện thương mại,...
• tự sinh mã: cơng cụ tạo giao diện,...
• hướng đối tượng: kế thừa, bảo trì
• ngơn ngữ bậc cao: năng lực biểu diễn cao

80

tra lại đặc tả, phân tích, thiết kế và
mã hoá nhằm phát hiện lỗi phần
mềm, xác minh phần mềm có đúng
đặc tả, thiết kế; có đáp ứng nhu cầu
người dùng, có hoạt động hiệu quả
khơng .
Kiểm thử thành công khi phát hiện
ra lỗi; kiểm thử không phát hiện ra
lỗi là kiểm thử dở (Theo Sue
A.Conger- The New SE)

83

1.2.1. Khái niệm kiểm thử
Một số lưu ý

 Software Testing là một quá trình thực thi một chương


trình với mục đích tìm lỗi.

 Thực hiện các pha phát triển:
 Pha xác định yêu cầu và thiết kế có vai trò quyết định

đến chất lượng phần mềm, chiếm phần lớn cơng sức so
với mã hóa, kiểm thử.
 Khi chuyển tiếp giữa các pha phát triển phải thẩm định
để đảm bảo lỗi không ảnh hưởng đến pha sau.
 Tài liệu tạo ra ở mỗi pha không chỉ dùng cho pha kế
tiếp mà còn dùng để đảm bảo chất lượng của phần
mềm và dùng trong khâu bảo trì.
 Cần chuẩn hóa mẫu biểu, cách thức ghi chép, tạo tài
liệu nhằm đảm bảo chất lượng phần mềm.
81

 Quality Testing = Verification + Validation (Xác minh

và Thẩm định)
 Là hoạt động kiểm tra xem phần mềm có chạy chính xác

hay khơng (Verification) và có thoả mãn yêu cầu của
khách hàng hay không (Validation) nhằm hướng tới mục
tiêu chất lượng của phần mềm.

84

14



21/07/2020

1.2.1. Khái niệm kiểm thử

1.2.2. Đảm bảo chất lượng

 Kiểm thử là một quá trình đánh giá một hệ thống hay là

 QA: Giám sát, quản lý và đảm bảo chất lượng

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ử như một q
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.

 QA ( Quality Assurance ), là những cơng việc đảm bảo chất

 QA có nhiệm vụ giám sát để bảo đảm các tiêu chuẩn và quy trình sản

85

88


1.2.1. Khái niệm kiểm thử

lượng của việc xây dựng hệ thống, quy trình sản xuất của cơng
ty theo một chuẩn mực. Giám sát chặt chẽ và đo lường việc
thực hiện các chuẩn chất lượng trong các giai đoạn từ nghiên
cứu thị trường, thiết kế… cho đến sản xuất và bán hàng, chăm
sóc khách hàng.
xuất PM được định nghĩa và tuân thủ nghiêm túc, hướng đến mục
tiêu các sản phẩm (SP) trung gian cũng như SP sau cùng của dự án
thỏa mãn các tiêu chuẩn và yêu cầu đã định trước đó. Cơng việc của
QA liên quan đến quy trình (process).

1.2.2. Đảm bảo chất lượng
 Thơng thường, trong một dự án PM, khách hàng chỉ
trả tiền cho lưc lượng sản xuất trực tiếp như developer
và tester, do đó đầu tư vào lực lượng QA là một đầu tư
mang tính nội bộ và nền tảng, giúp cơng ty cải tiến và
kiểm sốt các quy trình đảm bảo chất lượng
Một khi quy trình sản xuất được tuân thủ nghiêm túc,
lỗi xuất hiện ở các khâu sản xuất sẽ được nhận diện và
ngăn chặn sớm, SP sau cùng (ở chặng kiểm định) sẽ ít
lỗi và khả năng thành cơng của dự án được bảo đảm
hơn, do đó tổng chi phí sẽ thấp hơn.
86

1.2.1. Khái niệm kiểm thử
2 mục đích chính của hoạt động
kiểm thử:
Kiểm tra xem phần mềm làm ra có đúng


đặc tả (u cầu, phân tích, thiết kế) hay
khơng.
Kiểm tra xem phần mềm có đáp ứng yêu
cầu người dùng hay khơng.

Đây chính là 2 hoạt động cốt yếu để
đảm bảo chất lượng phần mềm, diễn
ra trong suốt quá trình phát triển
phần mềm.
87

89

1.2.2. Đảm bảo chất lượng
 Quy trình bao gồm các biểu mẫu, các bước và hướng dẫn cụ thể giúp

thành viên dự án thực hiện một công việc nào đó một cách nhất qn
và có kiểm sốt. Có rất nhiều quy trình khác nhau được thiết kế tùy
theo nhu cầu của một dự án như Quy trình phát triển yêu cầu SP
(Requirement); Quy trình thiết kế SP (Design); Quy trình triển khai
và viết code (Coding); Quy trình kiểm định SP (Testing); Quy trình
cài đặt và hỗ trợ (Delivery); Quy trình bảo trì SP (Maintenance); Quy
trình quản trị dự án (Project management); Quy trình quản lý cấu
hình (Coonfiguration management); Quy trình đảm bảo chất lượng
(Quality Assurance).

90

15



21/07/2020

1.2.2. Đảm bảo chất lượng

1.2.3. Kiểm soát chất lượng phần mềm

 QA là người tham gia phát triển quy trình hoạt động ở cấp

 QC (Quality Control) là những công việc liên quan
đến kiểm soát, kiểm tra, đánh giá chất lượng của sản
phẩm. QC là một trong những khâu trong quy trình
sản xuất rất quan trọng, được tiến hành xen kẽ trong
những công đoạn sản xuất, tạo ra những sản phẩm có
chất lượng theo yêu cầu. QC thường hoạt động trong
những nhà máy sản xuất theo quy trình, những quy
trình công nghệ hiện đại, trong các lĩnh vực về kĩ
thuật, lập trình, may mặc. QC kiểm tra chất lượng của
sản phẩm, đảm bảo chất lượng của sản phẩm trường
khi đưa ra thị trường sử dụng.

công ty và ở cấp dự án, đánh giá các tài liệu. Ngồi ra, họ
cịn phải giám sát và kiểm tra (audit) các hoạt động được
thực hiện trong dự án xem chúng có tuân thủ các quy trình
(process) đã được định ra; xác định các điểm khơng tương
thích với quy trình (process noncompliance – gọi tắt là
NC) và báo cáo cho những người liên quan và các cấp
quản lý đồng thời giám sát để bảo đảm chúng được giải
quyết đến khi hoàn tất.

 Nhân sự QA cũng có thể phản hồi về những bất cập của
quy trình và đề xuất cải tiến quy trình.
 QA cũng hay gọi là PQA ( Process Quanlity Assurance –
Cán bộ quản lý chất lượng quy trình).
91

Quy trình đảm bảo chất lượng
1.

2.

3.
4.
5.

Đề xuất, đưa ra quy trình phát triển (development process)
sản phẩm phù hợp với yêu cầu cụ thể của từng dự án. Các quy
trình này có thể được phát triển dựa trên V-model hay Agile
(đa số là Scrum hoặc Lean Development) hay thơng qua việc
áp dụng những quy trình quản lý sẵn có như ISO hay CMMI.
Đưa ra những tài liệu, biểu mẫu, hướng dẫn để đảm bảo chất
lượng của sản phẩm cho tất cả các bộ phận trong nhóm phát
triển sản phẩm.
Kiểm tra, audit việc thực thi quy trình của các bộ phận trong
nhóm làm sản phẩm có đúng quy trình QA đã đề ra khơng.
Nhắc nhở đội ngũ phát triển sản phẩm việc tuân thủ theo quy
trình làm việc đã đưa ra.
Điều chỉnh, thay đổi quy trình phù hợp với từng sản phẩm mà
các team đang thực hiện.
92


1.2.3. Kiểm soát chất lượng phần mềm
 QC = Quality Control
QC chính là Tester. Nhiều cơng ty gọi là QC chứ
khơng phải là tester.
Quality Control: Điều khiển chất lượng
 Tập hợp các hoạt động được tạo ra nhằm đánh

giá chất lượng sản phẩm, bảo đảm sản phẩm
đúng đặc tả yêu cầu
 Trực tiếp kiểm tra chất lượng của sản phẩm
 Có nhiệm vụ khảo sát, chạy thử và báo cáo lỗi
93

94

Quy trình Kiểm sốt chất lượng
1.

2.
3.
4.
5.

Tìm hiểu hệ thống, phân tích tài liệu mô tả về
hệ thống và thiết kế test case, thực hiện việc
test phần mềm trước khi giao cho khách hàng
hay đưa ra thị trường.
Lên kế hoạch kiểm thử phần mềm
Viết Script cho automation test

Sử dụng các test tool để tạo và thực hiện các
test case/script chi tiết.
Phối hợp với nhóm lập trình trong việc fix bug
và báo cáo chi tiết cho Project Manager hoặc
các bên liên quan tuỳ từng dự án, sản phẩm.
95

1.2.3. Kiểm soát chất lượng phần mềm
QA: là người người đặt ra các quy định cho dự
án như: đề xuất đưa ra quy trình phát triển dự
án, giám sát, quản lý và ban hành chất lượng.
Mục đích để đảm bảo rằng quy trình phát triển
hoặc bảo trì chắc chắn sẽ đáp ứng được các mục
tiêu hệ thống đã đề ra.
QC: Là người thi thành các quy định, nguyên tắc
để đảm bảo sản phẩm cuối cùng thực hiện đúng
các quy định, nguyên tắc mà QA đặt ra. Cũng là
người kiểm thử, tìm các trường hợp cịn thiếu
sót hay lỗi so với yêu cầu được đặt ra bởi khách
96
hàng.

16


21/07/2020

QA

QC


QA bao gồm các hoạt động đảm bảo và thực
hiện quy trình, trình tự và tiêu chuẩn trong nội
dung kiểm thử phần mềm đã phát triển và những
yêu cầu đặt ra

QC/Tester bao gồm các hoạt động để đảm bảo
việc kiểm tra một phần mềm đã đáp ứng yêu cầu
trong tài liệu yêu cầu (đảm bảo việc phát hiện
lỗi/bug trong phần mềm)

Tập trung vào quy trình và tuần tự hơn là quản
lý việc test thực tế trên hệ thống

Tập trung vào việc test thự tế trên phần mềm
nhằm phát hiện lỗi trong quá trình phát triển
hệ thống

Đảm bảo chất lượng là quy trình định hướng

Kiểm sốt chất lượng là định hướng sản phẩm

Mục tiêu của đảm bảo chất lượng phần mềm là
phòng tránh lỗi trong ứng dụng phần mềm giúp
cải thiện quá trình phát triển và kiểm thử

Mục tiêu của kiểm soát chất lượng phần mềm là
xác định, phát hiện các lỗi trong khi phát triển
ứng dụng phần mềm


Không liên quan đến việc thực thi chương
chình, code

Liên quan đến việc thực thi chương trình, code

Xác định điểm yếu trong các quy trình phát triển Xác định các lỗi cần sửa
để cải thiện
Đây là tập hợp con của vòng đời phát triển phần Testing là tập hợp con của Quality Control
mềm (SDLC)
(Quản lý chất lượng)
Được thực hiện trước khi kiểm soát chất lượng

Được thực hiện chỉ sau khi hoạt động Đảm bảo
Chất lượng được hoàn thành
97

1.3. Các nguyên tắc kiểm thử
(4) Dữ liệu thử cho kết quả bình thường

thì khơng có ý nghĩa nhiều, cần có những
dữ liệu kiểm thử phát hiện ra lỗi phần
mềm.
(5) Khi thiết kế trường hợp thử, không chỉ
dữ liệu kiểm thử nhập vào, mà phải thiết kế
trước cả dữ liệu kết quả sẽ có.
(6) Khi phát sinh thêm trường hợp thử thì
nên thử lại những trường hợp thử trước đó
để tránh ảnh hưởng lan truyền sóng khi
kiểm thử.
100


1.4. Vai trò kiểm thử phần mềm
 Kiểm thử phần mềm (software testing) là hoạt động nhằm tìm

kiếm, phát hiện các lỗi của phần mềm
 Kiểm thử phần mềm đảm bảo sản phẩm phần mềm đáp ứng

98

chính xác, đầy đủ và đúng theo yêu cầu của khách hàng, yêu
cầu của sản phẩm đề đã đặt ra.
 Kiểm thử phần mềm tạo điều kiện cho bạn tận dụng tối đa tư
duy đánh giá và sáng tạo để bạn có thể phát hiện ra những điểm
mà người khác chưa nhìn thấy.
 Software testing cũng có thể xem như là q trình thẩm định và
thẩm tra (validating and verifying) phần mềm/chương trình/ứng
dụng/sản phẩm để:
 Đáp ứng được các yêu cầu công việc và kỹ thuật đã được
quy định trong thiết kế và trong lúc phát triển
 Làm việc như mong đợi

101

1.3. Các nguyên tắc kiểm thử
(1) Chất lượng phần mềm do khâu thiết
kế quyết định là chủ yếu, chứ không
phải khâu kiểm thử.
(2) Tính dễ kiểm thử phụ thuộc vào cấu
trúc chương trình.
(3) Người kiểm thử và người xây

dựng phần mềm nên khác nhau.
99

BÀI TẬP CHƯƠNG 1
1.
2.

3.
4.
5.

6.

Khái niệm phần mềm, vòng đời phát triển phần mềm.
Trình bày các mơ hình phát triển phần mềm. Theo anh
chị mơ hình phát triển nào hiện đang được triển khai
phổ biến các công ty phát triển phần mềm.
Khái niệm kiểm thử phần mềm, đảm bảo chất lượng
phần mềm.
So sánh hoạt động kiểm thử phần mềm và kiểm sốt
chất lượng phần mềm.
Phân tích các ngun tắc kiểm thử phần mềm. Theo
anh chị, những nguyên tắc nào đảm bảo chất lượng
phần mềm.
Phân tích vai trị kiểm thử phần mềm trong quá trình
phát triển phần mềm.
102

17



21/07/2020

CHƯƠNG 2. QUY TRÌNH KIỂM
THỬ PHẦN MỀM

2.1. Các giai đoạn kiểm thử phần mềm

2.1. Các giai đoạn kiểm thử phần mềm
2.2. Nội dung kiểm thử

Bắt đầu

2.2.1. Kiểm thử đơn vị
2.2.2. Kiểm thử tích hợp
2.2.3. Kiểm thử hệ thống
2.2.4. Kiểm thử chấp nhận



Mẫu test
Các thủ tục Test

Lập kế hoạch Test



Thiết kế Test
Cài đặt và chuẩn bị
Test


Test hệ thống

2.3.1. Kiểm thử chức năng
2.3.2. Kiểm thử phi chức năng

Xem xét và Đánh giá
kết quả test

Tổng hợp, báo cáo

2.4. Công việc của người kiểm thử



Test tích hợp



Lỗi
Biên bản test

2.3. Các hình thức kiểm thử

Kế hoạch test

Mã nguồn Test
Dữ liệu test
Môi trường




Báo cáo kết quả
test, đề xuất giải
pháp



Hồ sơ báo cáo tổng
hợp test

Kết thúc

103

2.1. Các giai đoạn kiểm thử phần mềm

106

2.1. Các giai đoạn kiểm thử phần mềm

Các giai đoạn kiểm thử phần mềm

Initiation

Bắt đầu

Definition

Lập kế hoạch Test


Xác định yêu cầu

Solution

Thiết kế kiến trúc
Thiết kế Test

Construction

Cài đặt và chuẩn bị
Test

Lập trình

Construction

Thử nghiệm

Test tích hợp
Test hệ thống

Xem xét và Đánh giá
kết quả test

(khởi động)

Definition (Xác định yêu cầu)

Solution (Thiết kế kiến trúc)


Construction (Xây dựng)
Coding (lập trình)

Testing (thử nghiệm)

Tổng hợp, báo cáo
Transition

Kết thúc

(Triển khai)

Termination

(Kết thúc)

104

2.1. Các giai đoạn kiểm thử phần mềm

Lập kế hoạch Test

Cài đặt và chuẩn bị
Test

Test tích hợp

Test
Test hệ thống


Xem xét và Đánh
giá kết quả test

Các u cầu test

• Phương thức thực hiện
Cáchồn
rủi rothành
liên quan
đến test
• Tiêu
việc test,
đánh
2. Đánh giá rủi ro và lập mức
ưu chuẩn
giá chất
lượng
sản
phẩm
• Dựa
trên
cáccầu
sảntest
phẩm
tiên cho các u cầu
Các
u
đượcphân
xác tích

định
•• Số
kỹ
năng
Cácngười,
tố
cần
chú cái
ý gì?
•yếu
Xácmức
định:
test
độ ưu
tiên
• Mơi• trường
test:
phần
cứng…
Xác định:
giới
hạnmềm,
cơng việc,
thời
cụPhương
test lực
thức thực hiện
3. Xác lập chiến lược test • Cơng
gian,
nguồn

• Dữ liệu test
Tiêu chuẩn đánh giá

Thiết kế Test

Chuẩn bị

CÁC HOẠT ĐỘNG - Lập kế hoạch test
1. Xác định yêu cầu cho test

Bắt đầu

Lập kế hoạch

107

Các yếu tố cần chú ý
• Xác định nguồn lực

Phân tích kết quả

Tổng hợp, báo cáo

105

TN Test

TN Test

Các nguồn lực

4. Xác định nguồn lực và mơi
• Lịch trình test
trường
• Các mốc chính
Lịch trình test
5. Lập lịch trình test

TN Test

6. Tổng hợp thông tin, lập KH test Kế hoạch test

TN Test

7. Xem xét và thông qua KH test

Kết thúc

TN Test,
CBT

Kế hoạch test được phê duyệt

TN Test
QTDA

108

18



21/07/2020

CÁC HOẠT ĐỘNG - thiết kế test

CÁC HOẠT ĐỘNG - test hệ thống

•Dựa trên các sản phẩm của:
• Phân tích
• bước lập KH test
1. Lập danh sách các loại test, đảm
Danh• sách
loại các
test test case
TN Test,
Xác định
bảo cho việc xác lập tính đúng đắn &
CBT
• Mơ tả test case: vào, ra, điều kiện
thỏa mãn yêu cầu của sản phẩm

1. Nhận bàn giao với đội lập trình

2. Xây dựng tình huống test (test
case)

Thiết kế test, các mẫu mã sử
dụng, yêu cầu về dữ liệu test

3. Cài đặt


3. Xây dựng và tổ chức thủ tục test
(test procedure)
4. Xem xét tình huống test và thủ tục
test, đánh giá tỷ lệ yêu cầu của khách
hàng (hoặc tình huống sử dụng) sẽ
được test dựa trên thiết kế test đã lập

Các thủ tục test
TN Test,
CBT
• Dựa vào: các test case

Xác
định
các
test
procedure
Biên bản xem xét
QTDA, Cán
• Xác lập mối quan hệ và thứ tự
bộgiữa
lập trình
• Các test procedure với nhau
• Các test procedure - Test cases

5. Thơng qua thiết kế Test

Thiết kế test được thông qua

TN Test,

CBT

QTDA

CÁC HOẠT ĐỘNG - Cài đặt và chuẩn bị test

Test script
1.Lập các test script để thực hiện các
tình huống test/thủ tục test (nếu cần)

• Các
lệnh dùng để tự động hố TN
các Test/
thủ
Test
scipts
tục test
CBT

2. Chuẩn bị dữ liệu test

Dữ liệu test

CBT

3. Chuẩn bị môi trường

Môi trường sẵn sàng cho
việc thực hiện test


CBT

4. Kiểm tra các cơng cụ test

Biên bản kiểm tra cơng cụ
test

CBT



Lập trình, sử dụng cơng cụ test tự động

5. Xem xét môi trường, điều kiện và dữ Môi trường và dữ liệu test
được kiểm tra
liệu test

TN Test/
CBT

CÁC HOẠT ĐỘNG - test tích hợp

2. Chỉnh sửa thiết kế test

4. Thực hiện test và ghi nhận lỗi

Các sản phẩm cần test được tiếp

nhận
• Kiểm

tra và cập nhật:
Test
Thiết• kế
test,case
test script, dữ liệu test
được•cập
nhật
Test
procedure
Chương
trìnhscript
được cài đặt
• Test
Test
Biên•bản
testdata

CBT
TN Test
CBT
CBT

Danh sách lỗi phát hiện

5. Xử lý lỗi

Biên bản test

Danh sách lỗi phát hiện
• Khi hệ thống

thoả mãn các
Kếtra
quả test được xem xét
6. Xem xét các kết quả test và
việc
tiêu
chuẩn đặt

thực hiện khắc phục lỗi

7. Kết quả test được xem xét

Xác nhân sản phẩm đủ tiêu chuẩn
phát hành

TN Test, CBT
TN Test,QTDA,
CBT, CBCL
(nếu cần)
QTDA, CBCL,
TN Test

CÁC HOẠT ĐỘNG - xem xét và đánh giá kết quả
test

1. Phân tích lỗi và đưa ra đề xuất

Báo cáo kết quả test

TN Test


Đề xuất

2. Đánh giá tỷ lệ test, đánh giá mức Báo cáo kết quả test
độ đạt được các tiêu chí để hoàn
thành test
3. Xem xét báo cáo kết quả test

Báo cáo kết quả test được xem
xét

• Phân tích lỗi dựa:
• mức độ lặp lại
• Dựa trên tỷ lệ
YCnghiêm
được test/tổng
• độ
trọng
số YC cần test• Thời gian sửa lỗi…

TN Test

QTDA,
CBCL

CÁC HOẠT ĐỘNG - tổng hợp, báo cáo

• Tài liệu
• Gói phần mềm
•…

Các sản phẩm cần test được tiếp

CBT

Hệ thống để test sẵn sàng

CBT

3. Thực hiện test và ghi nhận lỗi

Biên bản test

CBT

4. Xử lý lỗi

Danh sách lỗi phát hiện

1. Nhận bàn giao với đội lập trình
2. Cài đặt

• Dựa trên thiết kế test
nhận
• Ghi nhận lỗi vào DMS

• Phối hợp với đội lập trình
• Test lại -> Ghi nhận lỗi mới
5. Xem xét các kết quả test và việc Biên bản test
thực hiện khắc phục lỗi


TN Test,
CBT

1. Tập hợp các dữ liệu, kết
quả test

Dữ liệu, kết quả test

2. Lập báo cáo tổng hợp test Báo cáo tổng hợp test
3. Tổ chức lưu trữ tài liệu, hồ Hồ sơ, files


CBT
TN Test
CBT

TN Test,
QTDA,
CBT, CBCL
(nếu cần)

19


21/07/2020

HOẠT ĐỘNG – xác định test
case

CÁC HOẠT ĐỘNG

Vấn đề của thiết kế test

Phân hoạch tương đương - Equivalence partitioning

Xác định các test case

Ví dụ:

Phân hoạch tương đương
Đường đi trong mơ đun

Hàm tính trị tuyệt đối
- miền dữ liệu = 0
- miền dữ liệu < 0

Mô tả các test case

Input

Expected
Output

100

100

-20

20


0

0

115

CÁC HOẠT ĐỘNG – mô tả test case
 Tên mô đun/chức năng muốn kiểm thử
 Dữ liệu vào

HOẠT ĐỘNG – xác định test case
Phân hoạch tương đương - Equivalence partitioning
Mở rộng test case:

- dữ liệu thơng thường: số, xâu kí tự, file,...
- môi trường thử nghiệm: phần cứng, OS,...
- thứ tự thao tác (khi kiểm thử giao diện)

Tạo test case cho các trường hợp đặc biệt
- biên của số trong máy tính
(vd. 32767, -32768)
- số không (0)
- số âm, số thập phân
- dữ liệu sai kiểu
- dữ liệu ngẫu nhiên

 Kết quả mong muốn
- thơng thường: số, xâu kí tự, file,...
- màn hình, thời gian phản hồi


 Kết quả thực tế

116

119

HOẠT ĐỘNG – xác định test case

HOẠT ĐỘNG – xác định test
case

Phân hoạch tương đương - Equivalence partitioning
 Không thể kiểm thử mọi trường hợp
 Chia dữ liệu thành các miền có cùng hành vi
 Tạo một test case cho từng miền
 Tạo test case cho biên của các miền

Đường đi trong mơ đun
 Phân tích mơ đun để xác định đường đi
 Đường đi là thứ tự thực hiện các lệnh từ điểm
bắt đầu đến điểm kết thúc của mô đun
 Thiết kế các test case để kiểm thử mọi đường đi

- nhiều lỗi xuất hiện với giá trị biên

117

20



21/07/2020

HOẠT ĐỘNG – xác định test
case
Đường đi trong mô đun – Xác định đường đi


Đánh số các khối lệnh

- có ít nhất một cặp khối lệnh (một cạnh của đồ thị)
chưa xuất hiện trong các đường đi đã có

 Bộ các đường đi độc lập là một tập hợp thỏa mãn

- các khối tuần tự được tích hợp thành một khối
- tích hợp khối tuần tự vào câu lệnh điều kiện
kế tiếp

- mọi khối lệnh đều được thực hiện ít nhất một lần
- mọi điều kiện đều được kiểm thử với hai trường hợp
true và false

HOẠT ĐỘNG – xác định test
case
Đường đi trong mô đun – Xác định đường đi
Start 0
1

Ví dụ:


HOẠT ĐỘNG – xác định test
case
Đường đi trong mơ đun – Đường đi độc lập
1

Ví dụ:

2

9

2

4

3

11

4
5

6
7

8
9

10


HOẠT ĐỘNG – xác định test
case
Đường đi trong mô đun – Xác định đường đi
1

Ví dụ:

 Khơng thể chọn mọi đường đi
- chọn các đường đi độc lập

gọn flow chart (đồ thị)

End

Đường đi trong mô đun – Đường đi độc lập

 Đường đi độc lập

- đánh số các khối lệnh, câu lệnh điều kiện
- đánh số các hợp điểm của luồng lệnh
 Rút

HOẠT ĐỘNG – xác định test
case

5

3

6

7

1-9
1-2-3-8-1-9
1-2-4-6-7-8-1-9
1-2-4-5-7-8-1-9

8

HOẠT ĐỘNG – xác định test
case
Đường đi trong mơ đun – Đường đi độc lập
 Có thể tồn tại nhiều bộ đường đi độc lập

2

9
4
5

3
6

7

đường đi:
1-2-3-8-1-9
1-2-4-6-7-8-1-9

 Đường đi tối thiểu cần kiểm tra

= độ phức tạp thuật toán

8

21


21/07/2020

HOẠT ĐỘNG – xác định test
case
Đường đi trong mô đun – Độ phức tạp thuật toán

2.2. Nội dung kiểm thử
Tiến hành ở mọi giai đoạn phát triển
phần mềm:
 Đặc tả

Độ phức tạp V(G) của flow chart G:

- xét duyệt đặc tả yêu cầu

 Phân tích

1.

Số miền của đồ thị G
2. V(G) = E - N + 2
E: số cạnh
N: số đỉnh

3. V(G) = P + 1
P: số các nút điều kiện

- xét duyệt đặc tả phân tích

 Thiết kế
- xét duyệt đặc tả thiết kế
 Mã hóa
- kiểm thử mơ đun chương trình
130

HOẠT ĐỘNG – xác định test
case

2.2. Nội dung kiểm thử


Đường đi trong mô đun – Độ phức tạp thuật tốn
1

Ví dụ:

Số cạnh E = 11
Số đỉnh N = 9
Số điều kiện = 3
Số miền = 4

2

9

4
5

3

6
7

Độ phức tạp: 4



Trong môi trường của đội phát triển dự án
– Kiểm thử đơn vị
– Kiểm thử tích hợp
– Kiểm thử hệ thống phần mềm
– Kiểm thử chấp nhận
Trong môi trường của khách hàng
– Kiểm thử alpha
– Kiểm thử beta
– Kiểm thử hệ thống thông tin

8
131

HOẠT ĐỘNG – xác định test
case
Độ phức tạp lớn thì xác suất xuất hiện lỗi cao




khơng nên tạo các mơ đun có độ phức tạp > 10
• phân rã mô đun
(tạo các mô đun thứ cấp để giảm độ phức tạp)

2.2. Nội dung kiểm thử
Khảo sát phần mềm

Kiểm thử chấp nhận

Đặc tả chức năng/
Phân tích

Kiểm thử hệ thống

Thiết kế

Kiểm tích hợp

Lập trình/
và đặc tả mơđun

Kiểm thử
hồi quy

Kiểm đơn vị

Mã hố mơđun CT

Nội dung kiểm thử phía phát triển dự án


132

22


21/07/2020

4.1.2. Nội dung kiểm thử
Tên kiểm thử
Kiểm thử đơn vị
(Unit test/Module
test)

Kiểm thử tích hợp
(Integration test)

Nội dung kiểm thử

2.2. Nội dung kiểm thử

Người thực hiện

Yêu cầu đối với kiểm thử:

Kiểm tra 1 module Đội dự án test
(hàm, thủ tục, đoạn (tester)
code, component…)
dựa vào tài liệu thiết
kế chi tiết


 Tính lặp lại
- kiểm thử phải lặp lại được (kiểm tra xem lỗi đã
được sửa hay chưa)

Kiểm tra sự tương Đội dự án test
tác giữa các module (tester)
dựa vào tài liệu thiết
kế tổng thể

- dữ liệu/trạng thái phải mơ tả được
 Tính hệ thống
- đảm bảo kiểm tra hết các trường hợp
 Được lập tài liệu
- kiểm sốt tiến trình/kết quả

Nội dung kiểm thử phía đội phát triển dự án
136

4.1.2. Nội dung kiểm thử
Tên kiểm thử
Kiểm thử hệ thống
(System test)

Kiểm thử chấp nhận
(Acceptance test)

Nội dung kiểm thử

2.2.1. Kiểm thử đơn vị


Người thực hiện

Kiểm tra toàn bộ hệ Đội dự án test (tester)
thống dựa vào tài liệu
đặc tả yêu cầu phần
mềm: kiểm tra sự hoạt
động tổng thể hệ thống,
kiểm tra tính đúng đắn
của giao diện, tính đúng
đắn với đặc tả, và tính
dùng được. Chủ yếu sử
dụng kiểm thử chức
năng.
Dựa vào yêu cầu Thành viên đội dự án
nghiệp vụ của khách và Khách hàng
hàng.

1. UnitTesting : test ở mức cơ bản, test
từng module nhỏ trong hệ thống do lập
trình
viên thực hiện. Là kiểu white box testing
Mục đích: để xác nhận rằng mỗi thành
phần của phần mềm thực hiện đúng với
thiết kế

Nội dung kiểm thử phía đội phát triển dự án

137


4.1.2. Nội dung kiểm thử

2.2.1. Kiểm thử đơn vị

Nội dung kiểm thử phía khách hàng:
 Kiểm thử alpha: kiểm thử được tiến hành bởi một nhóm

nhỏ người sử dụng dưới sự hướng dẫn của người phát
triển, sử dụng các dữ liệu thực, thẩm định tính dùng
được của hệ thống.
 Kiểm thử bê ta: là mở rộng của kiểm thử alpha, được tiến

hành với một số lớn người sử dụng khơng có sự hướng
dẫn của người phát triển, kiểm tra tính ổn định, điểm tốt
và khơng tốt của hệ thống.

 kiểm thử đơn vị có các nội dung sau :
 kiểm thử giao diện
 khám nghiệm cấu trúc dữ liệu cục bộ.
 kiểm thử với các điều kiện biên.
 Các đường Độc lập.
 Các đường xử lý sai.

 Kiểm thử hệ thống: mở rộng phạm vi kiểm thử, xem xét

phần mềm như một thành phần trong HTTT phức tạp.
Kiểm tra các yếu tố: khả năng phục hồi sau lỗi, độ an
toàn, hiệu năng và giới hạn của phần mềm.
135


138

23


21/07/2020

2.2.2. Kiểm thử tích hợp
Là kiểm thử tích hợp 1 nhóm các module

riêng lẻ với nhau. Một dự án phần mềm bao
gồm nhiều module phần mềm, được code
bởi nhiều người khác nhau. Tích hợp thử
nghiệm tập trung vào kiểm tra truyền dữ liệu
giữa các module (tích hợp các hàm lại với
nhau, tích hợp các màn hình lại với nhau
theo từng module hay dựa theo chức năng)
Mục đích: mục đích để tìm ra lỗi trong q
trình tích hợp các thành phần, module lại với
139
nhau.

2.2.2. Kiểm thử tích hợp


Kiểm thử tích hợp (integration testing) nhằm nhận
được một phần hay toàn bộ hệ thống như mong
đợi. Khi tích hợp các thành phần có thể gặp các
sai:
Dữ liệu bị mất khi đi qua một giao diện.

Hiệu ứng bất lợi 1 mơđun vơ tình gây ra đối các môđun
khác.
 Sự kết hợp các chức năng phụ có thể khơng sinh ra
chức năng chính mong muốn.
 Sự phóng đại các sai sót riêng rẽ có thể bị đến mức
không chấp nhận được.
 Vấn đề của cấu trúc dữ liệu tồn cục có thể để lộ ra.



140

2.2.2. Kiểm thử tích hợp
Kiểm thử tích hợp là một lỹ thuật có tính hệ thống
để xây dựng cấu trúc chương trình (ngay khi
đang tiến hành kiểm thử để phát hiện sai liên kết
với giao diện).
 Mục đích là tận dụng các môđun đã kiểm thử
đơn vị và xây dựng cấu trúc chương trình sao cho
nó đảm bảo tn theo thiết kế.
 Có hai hướng tích hợp chương trình





Tích hợp dần
Tích hợp đồng thời 1 lúc: “big bang”

2.2.2. Kiểm thử tích hợp

 Mục đích
- kiểm tra giao diện giữa các unit
- kiểm tra tính đúng đắn so với đặc tả
- kiểm tra tính hiệu quả
 Thường sử dụng kiểm thử chức năng

1. Kiểm thử top – down
2. Kiểm thử bottom – up
3. Kiểm thử quay lui (regression)
142

2.2.2. KIỂM THỬ TÍCH HỢP –
Top-down testing
 Các mô đun mức trên được kiểm thử
trước
 Các mô đun thuộc cấp được thay bằng
bằng các mô đun tạm thời (stub
function)
 có cùng tên với mơ đun thật
 có cùng giao diện
 trả lại kết quả với một hoặc một vài
bộ dữ liệu chuẩn

2.2.2. KIỂM THỬ TÍCH HỢP –
Top-down testing
Ví dụ về stub fuction:
Kiểm thử mơ đun calender() có gọi đến mơ đun tính ngày
trong tuần calc_day()chưa được phát triển.

calender()


đã phát triển, cần kiểm thử

calc_day()

chưa phát triển

141

24


21/07/2020

2.2.2. KIỂM THỬ TÍCH HỢP –
Top-down testing

2.2.2. KIỂM THỬ TÍCH HỢP –
Top-down testing

Ví dụ về stub fuction:

Ưu điểm:

Mơ đun tính ngày trong tuần calc_day():
- input: ngày, tháng, năm
- output: trả xâu kí tự là thứ của ngày đã cho

 Phát hiện sớm các lỗi thiết kế (lỗi cấu trúc)
 Có sớm phiên bản thực hiện được

Nhược điểm:
 Nhiều mô đun cấp thấp rất khó mơ phỏng

String calc_day(Date d)
{
return "Sunday";
}

- thao tác

với cấu trúc dữ liệu phức tạp
- trả lại kết quả phức tạp (con trỏ, ảnh, ...)

2.2.2. KIỂM THỬ TÍCH HỢP –
Top-down testing

2.2.2. KIỂM THỬ TÍCH HỢP –
Bottom-up testing

Ví dụ về stub fuction:

 Các mô đun cấp thấp được kiểm thử trước

Để tăng độ thích nghi, có thể thay thế dữ liệu cố định
bằng cách nhập kết quả trực tiếp từ bàn phím.

 Mơ đun mức trên được thay thế bằng mơ
đun điều khiển (test driver), có chức năng
gọi mơ đun cần thử nghiệm
 truyền dữ liệu

 hiển thị kết quả

String calc_day(Date d)
{
String s;
cout << ”Enter day_of_week of ”<< d;
cin >> s;
return s;
}



 Thay thế dần các driver

2.2.2. KIỂM THỬ TÍCH HỢP –
Top-down testing
A

B

F

2.2.2. KIỂM THỬ TÍCH HỢP –
Bottom-up testing
Ví dụ Test driver Thử nghiệm calc_day()

Top module được kiểm thử trước
với các stubs

void calc_day_test_drive()

{
Date d;
String s;
while (1) {
cout << ”Enter date: ”);
cin >> d;
s = calc_day(d);
cout << s << endl;
}
}

G

Các stubs được thay thế từng cái một
C

D

E

Mỗi khi một module mới được tích hợp
một số ca kiểm thử được thực hiện lại
(kiểm thử quay lui)

147

25



×