1. Trang chủ
  2. » Luận Văn - Báo Cáo

Ứng dụng học máy trong kiểm thử phần mềm

63 74 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 63
Dung lượng 1,76 MB

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

Nội dung

Tối ưu hóa Kiểm thử khắc phục những hạn chế đó khi các trường hợp sẽ được đánh giá độ ưu tiên và thực hiện có tuần tự để đảm bảo các ràng buộc thời gian, chi phí và vẫn đáp ứng mục tiêu

Trang 1

LUẬN VĂN THẠC SĨ KỸ THUẬT CÔNG NGHỆ THÔNG TIN

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

- Ngô Thị Thanh Bình

ỨNG DỤNG HỌC MÁY TRONG KIỂM THỬ PHẦN MỀM

Chuyên ngành: Công nghệ thông tin

Trang 3

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh phúc

BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ

Họ và tên tác giả luận văn: Ngô Thị Thanh Bình

Đề tài luận văn: Ứng dụng học máy trong kiểm thử phần mềm

Chuyên ngành: Công nghệ thông tin

Mã số SV: CB160533

Tác giả, Người hướng dẫn khoa học và Hội đồng chấm luận văn xác nhận tác giả đã sửa chữa, bổ sung luận văn theo biên bản họp Hội đồng ngày 26/10/2019 với các nội dung sau:

# Nội dung chỉnh sửa Mục lục Trang

1 Thống nhất định nghĩa: Sửa cách dịch “agent” từ “máy”

thành “hệ thống”

2.2.2, 3.2, 3.3 29, 39,

42

2 Làm rõ đóng góp khoa học của đề tài, những khác biệt và

đóng góp thêm so với tài liệu ở mục tham khảo số [32]

trong luận văn

3 Làm rõ cấu trúc, cách hoạt động của mạng nơ-ron nhân

tạo trong mô hình đề xuất, bổ sung hình vẽ

Hình 3.1, Mục 3.3.2

43

4 Thể hiện rõ tính hiệu quả của mô hình đề xuất so với một

số mô hình truyền thống

Hình 4.3, 4.4, 4.6, Mục 4.3

49-52

5 Lỗi chính tả

Ngày tháng 11 năm 2019

Giáo viên hướng dẫn Tác giả luận văn

PSG TS Phạm Văn Hải Ngô Thị Thanh Bình

CHỦ TỊCH HỘI ĐỒNG

Trang 4

3

LỜI CAM ĐOAN

Những kiến thức trình bày trong luận văn là do tôi tìm hiểu, nghiên cứu và trình bày theo những kiến thức tổng hợp của cá nhân Kết quả nghiên cứu trong luận văn chưa từng được công bố tại bất kì công trình nào khác Trong quá trình làm luận văn, tôi có tham khảo các tài liệu có liên quan và đã ghi rõ nguồn tài liệu tham khảo Tôi xin cam đoan đây là công trình nghiên cứu của tôi và tôi không sao chép của bất kì ai

Tôi xin chịu trách nhiệm, nếu sai, tôi xin chịu mọi hình thức kỉ luật theo quy định

Hà Nội, ngày 21 tháng 11 năm 2019

Học viên

Ngô Thị Thanh Bình

Trang 5

Tôi cũng xin gửi lời cảm ơn tới các anh chị em và các bạn đã và đang theo học Cao học, Đại học tại Viện Công nghệ thông tin & Truyền thông, Đại học Bách khoa Hà Nội đã giúp đỡ tôi trong quá trình nghiên cứu và có nhiều ý kiến góp ý quý báu giúp tôi hoàn thiện luận văn

Cuối cùng, tôi xin gửi lời cảm ơn tới gia đình và bạn bè, những người luôn ở bên cạnh, động viên, giúp đỡ trong suốt quá trình nghiên cứu và thực hiện luận văn của mình

Học viên

Ngô Thị Thanh Bình

Trang 6

5

MỤC LỤC

DANH MỤC HÌNH VẼ VÀ SƠ ĐỒ 7

DANH MỤC BẢNG 8

MỞ ĐẦU 9

Lý do chọn đề tài 9

Tính cấp thiết của đề tài 9

Mục đích nghiên cứu 10

Phạm vi nghiên cứu 10

Bố cục luận văn 11

CHƯƠNG 1 NGHIÊN CỨU TỔNG QUAN 12

1.1 Giới thiệu về kiểm thử phần mềm 12

1.1.1 Kiểm thử và các phương pháp kiểm thử khác nhau 12

1.1.2 Kiểm thử tự động 14

1.2 Bài toán tối ưu trong kiểm thử phần mềm 15

1.2.1 Một số nghiên cứu 16

1.2.2 Bài toán kiểm thử phần mềm 19

1.3 Tổng kết chương 21

CHƯƠNG 2 THU THẬP DỮ LIỆU KIỂM THỬ PHẦN MỀM VÀ TỔNG QUAN VỀ HỌC MÁY 23

2.1 Môi trường thu thập và tiền xử lí dữ liệu 23

2.1.1 Thu thập và tiền xử lí 24

2.1.2 Phân tích đặc trưng dữ liệu 25

2.2 Học tăng cường 27

2.2.1 Quy trình Markov 27

2.2.2 Học máy tăng cường 29

2.2.3 Cập nhật chiến lược 30

2.2.4 Q-Learning 31

2.3 Học sâu 32

2.3.1 Mạng nơ-ron nhân tạo 32

2.3.2 Thuật toán tối ưu 34

2.3.3 Học tăng cường sâu 35

2.4 Tổng kết chương 37

CHƯƠNG 3 MÔ HÌNH HỌC MÁY CHO TỐI ƯU KIỂM THỬ PHẦN MỀM 38

3.1 Bài toán tối ưu kiểm thử 38

Trang 7

6

3.2 Mô hình học máy tăng cường cho bài toán kiểm thử 39

3.2.1 Không gian trạng thái – hành động 40

3.2.2 Hàm phần thưởng 41

3.3 Mạng học sâu 42

3.3.1 Xây dựng bộ dữ liệu học cho mạng nơ-ron 42

3.3.2 Cấu trúc mạng nơ-ron 43

3.4 Lập lịch kiểm thử và đưa vào CI 44

3.5 Tổng kết chương 44

CHƯƠNG 4 CÀI ĐẶT VÀ THỰC NGHIỆM 46

4.1 Cài đặt chương trình 46

4.1.1 Môi trường phát triển và thử nghiệm 46

4.1.2 Phương pháp đo độ chính xác 46

4.2 Dữ liệu thử nghiệm 47

4.3 Kết quả thử nghiệm 48

4.4 So sánh với nghiên cứu liên quan 52

CHƯƠNG 5 KẾT LUẬN 55

5.1 Kết quả đạt được 55

5.2 Định hướng phát triển 56

Trang 8

7

DANH MỤC HÌNH VẼ VÀ SƠ ĐỒ

Hình 2.1 Quy trình thu thập dữ liệu 24

Hình 2.2 Tương tác giữa hệ thống và môi trường 29

Hình 2.3 Biểu diễn học sâu 32

Hình 2.4 Biến thiên truyền ngược theo quy tắc chuỗi 34

Hình 2.5 Mạng tăng cường học sâu 35

Hình 3.1 Tương tác hệ thống và môi trường 39

Hình 3.2 Mô hình mạng nơ ron đề xuất 43

Hình 3.3 Kiểm thử trong quy trình CI 44

Hình 4.1 Thất bại theo trường hợp kiểm thử dữ liệu Paint Control 48

Hình 4.2 Thất bại theo trường hợp kiểm thử dữ liệu Rails 48

Hình 4.3 Kết quả trên dữ liệu thử nghiệm trên bộ dữ liệu 1 49

Hình 4.4 Kết quả trên dữ liệu thử nghiệm trên bộ dữ liệu 2 50

Hình 4.5 So sánh với phương pháp ngẫu nhiên 51

Hình 4.6 So sánh với phương pháp có sắp xếp 52

Trang 9

8

DANH MỤC BẢNG

Bảng 1.1 Ưu tiên kiểm thử dựa trên dữ liệu lịch sử 17

Bảng 1.2 Ưu tiên kiểm thử dựa trên ràng buộc thời gian 17

Bảng 2.1 Dữ liệu kiểm thử thô 24

Bảng 2.2 Thông tin chung về bộ dữ liệu 25

Bảng 3.1 Thông số cho NetworkAgent 42

Trang 10

sự phối hợp giữa thực hiện bằng các kiểm thử viên (Tester) và phần mềm còn hạn chế trong ứng dụng thực tiễn Không ngoại lệ, tại Việt Nam quy trình kiểm thử phụ thuộc nhiều vào hoạt động thủ công với thời gian, chi phí cao mà chưa đem lại hiệu

quả tương xứng [6]

Hiện nay, một số kỹ thuật trí tuệ nhân tạo và các kĩ thuật học máy thông minh đã áp dụng trong nhiều lĩnh vực khác nhau, trong đó có kiểm thử phần mềm [7] Điểm hạn chế đó là giải quyết một phần lĩnh vực kiểm thử phần mềm trong lĩnh vực hẹp Đã có nhiều công trình nghiên cứu riêng rẽ trong lĩnh vực kiểm thử và học máy Việc thiếu các nghiên cứu về ứng dụng các kĩ thuật học máy phù hợp vào mục đích kiểm thử phần mềm là mô hình đề xuất ứng dụng học máy được trình bày trong luận văn Tác giả đề xuất một phương pháp tối ưu hóa trong kiểm thử phần mềm dựa trên học máy tăng cường kết hợp mạng nơ-ron nhân tạo Kết quả sẽ được

sử dụng để tích hợp vào quy trình phát triển phần mềm thực tế

Tính cấp thiết của đề tài

Thực tế, có nhiều yếu tố tác động trong vòng đời phát triển phần mềm dẫn đến việc tiếp cận để cải thiện việc kiểm thử là khó và phức tạp [8] Các nghiên cứu

Trang 11

10

đi vào các kĩ thuật chính trong kiểm thử như Kiểm thử tất cả, Kiểm thử hồi quy có lựa chọn, Tối giản Kiểm thử và Kiểm thử Ưu tiên [9] Chiến lược Kiểm thử tất cả hiệu quả khi bộ kiểm thử nhỏ nhưng với bộ kiểm thử lớn, cần có cơ chế sắp xếp Chiến lược kiểm thử hồi quy có lựa chọn và Tối giản kiểm thử chứng tỏ được việc đảm bảo 100% độ bao phủ, nhưng lại không đảm bảo được khả năng phát hiện được lỗi như Kiểm thử tất cả và chưa đủ để đưa vào quy trình phát triển phần mềm có tích hợp liên tục Tối ưu hóa Kiểm thử khắc phục những hạn chế đó khi các trường hợp sẽ được đánh giá độ ưu tiên và thực hiện có tuần tự để đảm bảo các ràng buộc thời gian, chi phí và vẫn đáp ứng mục tiêu cuối cùng là tìm lỗi [10] [11]

Các nghiên cứu về tối ưu hóa kiểm thử hiện nay cần phải được tiếp cận theo nhiều hướng khác nhau và số lượng lớn phụ thuộc vào đặc tả phần mềm và mã nguồn Tuy nhiên, việc theo dõi mối liên hệ giữa thay đổi mã nguồn và phương án kiểm thử không phải lúc nào cũng rõ ràng hay dễ dàng tiếp cận trong hệ thống quản

lí kiểm thử độc lập [12] Do đó, vấn đề cần thiết đặt ra là tối ưu hóa kiểm thử không phụ thuộc vào đặc tả phần mềm và vẫn đảm bảo được hiệu năng phát hiện lỗi dưới ràng buộc thời gian Tác giả luận văn đề xuất mô hình để giải quyết vấn đề này

reinforcement learning)

Trang 12

11

Bố cục luận văn

Bố cục luận văn chia thành năm chương:

CHƯƠNG 1: NGHIÊN CỨU TỔNG QUAN

Trình bày kiến thức cơ sở về kiểm thử phần mềm, các kĩ thuật trong kiểm thử, các xu hướng ứng dụng trong kiểm thử tự động Cuối chương giới thiệu một số công trình liên quan và tiếp cận vấn đề bài toán tối ưu trong kiểm thử Từ đó tác giả

đề xuất mô hình toán học cho bài toán ưu tiên hóa và lựa chọn trường hợp kiểm thử CHƯƠNG 2: THU THẬP DỮ LIỆU KIỂM THỬ VÀ TỔNG QUAN HỌC MÁY

Trình bày mô tả chi tiết các bước thực hiện để tìm, tổng hợp, tiền xử lí dữ liệu Bài toán kiểm thử là một bài toán phụ thuộc rất lớn vào yêu cầu đặc tả của phần mềm do đó hai bộ dữ liệu được chọn phải đại diện được các đặc trưng về báo cáo kiểm thử thường gặp Cuối chương tiếp tục giới thiệu tổng quan về học máy, học tăng cường và mạng nơ-ron để sử dụng làm phương pháp chính trong giải quyết bài toán

CHƯƠNG 3: MÔ HÌNH HỌC MÁY CHO TỐI ƯU KIỂM THỬ PHẦN MỀM

Trình bày chi tiết mô hình ưu tiên hóa và lựa chọn trường hợp kiểm thử dựa trên kỹ thuật học tăng cường có sử dụng mạng nơ-ron làm hàm ước lượng Cấu trúc

mô hình học, tương tác máy-môi trường và cấu trúc mạng nơ-ron được trình bày trong chương này Về cơ bản, mô hình học máy này sẽ dần có được kiến thức về kiểm thử phần mềm và ra quyết định để tăng dần hiệu năng kiểm thử

CHƯƠNG 4: CÀI ĐẶT VÀ THỰC NGHIỆM

Phân tích kết quả cùng so sánh với các nghiên cứu liên quan Chương trình là

mã nguồn xây dựng trên các thư viện hỗ trợ học máy của Python Dữ liệu thử nghiệm được chọn là hai hộ dữ liệu từ hai nguồn mở là ABB Robotics Paint Control

và Rails Travis CI

CHƯƠNG 5: KẾT LUẬN

Trình bày kết luận về công trình nghiên cứu, các đóng góp chính và ý tưởng phát triển thêm trong tương lai

Trang 13

số kĩ thuật tối ưu hóa trong kiểm thử phần mềm

1.1 Giới thiệu về kiểm thử phần mềm

Phần này giới thiệu về kiểm thử phần mềm, các khái niệm xung quanh kiểm thử phần mềm và tự động hóa trong kiểm thử

1.1.1 Kiểm thử và các phương pháp kiểm thử khác nhau

Định nghĩa 1.1 Tiêu chuẩn IEEE 610 (1990) định nghĩa trường hợp kiểm thử:

 Một bộ đầu vào, điều kiện thực thi, và kết quả mong đợi được xây dựng cho một mục tiêu nhất định, như kiểm tra một đường dẫn phần mềm, hay xác minh việc tuân theo những yêu cầu cụ thể

 Các tài liệu xác định đầu vào, kết quả mong đợi và một bộ điều kiện cho một đối tượng kiểm thử

Kiểm thử phần mềm là phân tích được thực hiện để đánh giá chất lượng của

hệ thống phần mềm dưới dạng một bài kiểm tra [13] Có rất nhiều kỹ thuật kiểm thử

để đảm bảo chắc chắn rằng một bộ phận hay một hệ thống được kiểm tra sẽ đáp ứng đúng yêu cầu đặc tả Rất nhiều các phương án khác nhau được sử dụng để chọn ra

kỹ thuật kiểm thử hợp lí nhất Điều này là do khối lượng kiểm thử là rất lớn trong khi thời gian và các chi phí khác là có hạn Trong mô hình phát triển phần mềm, thời gian và tài nguyên cho kiểm thử là giới hạn Mô hình phát triển phần mềm thác nước truyền thống [14] kiểm thử chỉ diễn ra khi hệ thống đã được thiết kế và triển

Trang 14

Tiếp tục, các phương pháp kiểm thử còn được phân chia theo mức độ Thấp nhất là kiểm thử đơn vị [17] mà theo đó từng phần mã nguồn riêng rẽ cùng với dữ liệu đi kèm, thủ tục sử dụng và vận hành được kiểm thử để xác định là chúng hoạt động đúng Những bài kiểm thử này chủ yếu viết bởi người lập trình viên sau khi hoặc thậm chí trước cả khi bắt đầu viết mã nguồn phần mềm [18] nhằm khuyến khích việc thiết kế kiến trúc phần mềm đơn giản hơn Kiểm thử hộp trắng cũng liên quan trực tiếp tới mức độ kiểm thử này vì sự tương đồng về trong tính chất Mức độ thứ hai là kiểm thử kết hợp [19] là kiểm thử sự kết nối giữa các thành phần, tương tác tới các phần khác nhau trong một hệ thống đang vận hành Tiếp theo là kiểm thử

hệ thống đề cập tới hành vi của hệ thống được định nghĩa bởi phạm vi phát triển phần mềm [19] Cuối cùng là kiểm thử chấp nhận, được thực hiện từ phía khách hàng cũng tại chính môi trường mà nó sẽ được vận hành Trong đó, các trường hợp kiểm thử cũng sẽ chỉ gồm những điểm quan trọng từ điểm nhìn của khách hàng

Trang 15

14

Các kĩ thuật kiểm thử còn có thể được chia theo công cụ, phần mềm hỗ trợ Kiểm thử thủ công là các trường hợp việc kiểm thử được thực hiện mà không có sự

hỗ trợ của phần mềm tự động nào Người kiểm thử sẽ đi qua tất cả các bước trong

kế hoạch kiểm thử để đảm bảo tất cả các chức năng của hệ thống có kết quả đúng theo yêu cầu Các công đoạn này đều có thể được tự động hóa bằng phần mềm Tức

là, một phần mềm tự động được điều khiển để thực hiện theo trường hợp kiểm thử

và so sánh với kết quả đã định sẵn [20] Các cách nhìn khác nhau về phân loại kiểm thử đều có thể được kết hợp lại và trong các công ty phần mềm ngày nay, nhiều phương án kiểm thử khác nhau đang được dùng để đảm bảo chất lượng Và xu hướng hiện nay đó là đơn giản hóa việc kiểm thử tự động để làm đòn bẩy cho việc đầu tư vào kiểm thử thủ công

1.1.2 Kiểm thử tự động

Kiểm thử phần mềm về bản chất là sự lặp đi lặp lại Một danh sách các bước cần thực hiện, kiểm tra đầu ra, đưa hệ thống về trạng thái ban đầu và thực hiện lại các bước từ đầu Các nhân viên kiểm thử cùng triển khai trên một hệ thống, làm các bước giống hoặc gần giống nhau Như vậy, kiểm thử là một hoạt động tương đối chậm và tốn kém Sự thiếu khách quan của người kiểm thử có thể ảnh hưởng tới các bước quan trọng trong quy trình kiểm thử Tuy nhiên, trong kiểm thử tự động, những điểm vừa liệt kê khó có thể xảy ra

Tăng năng suất: Lý tưởng mà nói, một bộ trường hợp kiểm thử tự động nên

được chạy mà không có sự can thiệp của con người Như vậy sẽ tiết kiệm được rất nhiều tài nguyên khi để việc kiểm thử chạy tự động ban đêm không cần người giám sát [21] Kiểm thử tự động có thể làm ngắn lại vòng đời phát hành sản phẩm Những lỗi do thay đổi trong hệ thống sẽ sớm được phát hiện sớm trong quy trình phát triển phần mềm, tiết kiệm công sức và tiền bạc [22] Hơn nữa, kiểm thử tự động có thể xử lí lượng lớn dữ liệu so với kiểm thử thủ

Trang 16

15

công, ví dụ cần kiểm thử trên bộ dữ liệu gồm hàng ngàn bản ghi sẽ gặp khó khăn nếu làm thủ công trong khi khá là đơn giản nếu thực hiện tự động

Tăng độ tin cậy: thể hiện ở việc kiểm thử tự động được chạy chính xác

giống hệt nhau mỗi lần thực hiện Một hoạt động kiểm thử thủ công chắc chắc khó tránh khỏi các lỗi ở con người, nhất là ở các trường hợp lặp đi lặp lại, cần chuẩn bị nhiều, hoặc cần chú ý tới các bước phụ, nhỏ, chi tiết Hơn nữa, việc để kiểm thử chạy tự động giải thoát người kĩ sư khỏi những việc lặp đi lặp lại mà tập trung hơn vào nghiên cứu hệ thống, thiết kế kế hoạch kiểm thử hiệu quả hơn [22]

Tăng độ bao phủ: Kiểm thử tự động chạy rất tương đối nhanh Nhiều

trường hợp kiểm thử được thực thi trong thời gian ngắn hơn sẽ dẫn đến việc

có thể chạy nhiều trường hợp kiểm thử hơn, độ bao phủ phần mềm cao hơn

1.2 Bài toán tối ưu trong kiểm thử phần mềm

Kiểm thử hồi quy chiếm 80% ngân sách kiểm thử [23] Việc thực hiện yêu cầu thay đổi mới, kiểm tra lại phần mềm, sửa lỗi nhanh là phần quan trọng của kiểm thử hồi quy Kiểm thử hồi quy mất rất nhiều thời gian cùng tài nguyên bị bó buộc và thường xuyên lặp đi lặp lại Kiểm thử hồi quy thời gian thực bị hạn chế lớn về thời gian vì môi trường mô phỏng của chúng rất khắt khe và lưu trữ nhiều dự án Kiểm thử lại toàn bộ, Chọn kiểm thử hồi quy (Regression Test Selection - RTS), Giảm thiểu bộ test (Test Suite Minimization - TSM) và Ưu tiên trường hợp kiểm thử (Test Case Prioritization - TCP) là các kỹ thuật kiểm thử hồi quy chiếm ưu thế Mỗi một trong các phương pháp này đều có những ưu điểm và nhược điểm riêng Chiến lược Kiểm thử lại toàn bộ tốt khi bộ kiểm thử nhỏ Tuy nhiên, khi bộ kiểm thử tăng quy

mô, cần thiết có một cơ chế để sắp xếp chúng Trong nghiên cứu đề cập từ [9] có trình bày về một số công nghệ chọn kiểm thử hồi quy Kỹ thuật chọn kiểm thử hồi quy an toàn chọn từng trường hợp kiểm thử tìm ra ít nhất một lỗi nhưng vẫn không đảm bảo lựa chọn thực sự an toàn vì các tiêu chí lấy sự an toàn là then chốt không phải lúc nào cũng được thực hiện [24] Kỹ thuật lựa chọn trường hợp kiểm thử

Trang 17

16

không an toàn loại bỏ một số trường hợp kiểm thử, [25] đã chỉ ra rằng Giảm thiểu

bộ kiểm thử (TSM) cho thấy mức giảm rất nhỏ (2% -7%) trong tỷ lệ phát hiện lỗi

Ưu tiên trường hợp kiểm thử (TCP) khắc phục những nhược điểm của cơ chế chọn hoặc giảm bằng cách không loại bỏ các trường hợp kiểm thử Theo TCP, các trường hợp kiểm thử có mức độ ưu tiên cao hơn sẽ được thực hiện sớm hơn trong khi tiến hành kiểm thử Nếu được thực thi, TCP sẽ tiết kiệm thời gian và chi phí và sẽ không trở thành chi phí Ưu tiên trường hợp kiểm thử có thể có hai loại – ưu tiên trường hợp kiểm thử chung và ưu tiên trường hợp kiểm thử cụ thể theo phiên bản Trong

ưu tiên trường hợp kiểm thử chung, sắp xếp thứ tự ưu tiên hữu ích đối với các phiên bản sửa đổi liên tiếp của một chương trình Tuy nhiên, đối với ưu tiên trường hợp kiểm thử cụ thể, sắp xếp thứ tự chỉ có lợi cho một phiên bản cụ thể

Juristo [26] gọi Ưu tiên trường hợp kiểm thử là một cải tiến trong kiểm thử

vì nó có thể được liên kết với bất kỳ công nghệ nào khác để tăng tỷ lệ phát hiện lỗi Trong Ưu tiên trường hợp kiểm thử, các trường hợp kiểm thử được sắp xếp dựa trên một số tiêu chí Mục tiêu của ưu tiên trường hợp kiểm thử có thể đa dạng Nó giống như tăng tỷ lệ phát hiện lỗi hoặc tăng việc nắm bắt các yêu cầu ưu tiên cao hoặc giảm chi phí và thời gian của cơ chế ưu tiên Mặc dù ưu tiên trường hợp kiểm thử chủ yếu được áp dụng cho kiểm thử hồi quy, nó cũng có thể được áp dụng để bảo trì phần mềm hoặc ở giai đoạn kiểm thử ban đầu

1.2.1 Một số nghiên cứu

Phần này sẽ tóm lược ngắn gọn về một số công trình quan trọng liên quan trong lĩnh vực này Có trên dưới 100 công trình nghiên cứu đã công bố xoay quanh việc giải quyết bài toán ưu tiên kiểm thử trong khoảng năm 2001 – 2018 Nhiều nhà nghiên cứu đã giải quyết vấn đề này theo nhiều cách xong liên quan tới hướng nghiên cứu trong bài, luận văn chỉ dừng lại ở các công trình với các kĩ thuật liên quan tới dữ liệu lịch sử có ràng buộc thời gian

Trang 18

Chi phí thực hiện trường hợp kiểm thử và mức độ nghiêm trọng cảu lỗi

là yếu tố quan trọng Đo độ hiệu quả dựa trên APFDc

đó

Thực hiện tối ưu các trường hợp kiểm thử không có giải pháp cố định

Kim và Baik

(2010) [30]

FATCP (Ưu tiên trường hợp kiểm thử có nhận thức lỗi)

FATCP vượt trội so với phương pháp bao phủ nhánh và bao phủ câu lệnh

Huang và cộng

sự (2012) [31]

MCCTCP (TCP nhận thức chi phí đã sửa đổi) được sử dụng cho ưu tiên

Sử dụng giải thuật di truyền (GA)

để ưu tiên kiểm thử

Spieker và cộng

sự (2017) [32]

ATCS (TCP sử dụng dữ liệu lịch sử kết hợp ràng buộc thời gian)

Đơn giản, gọn nhẹ cho quy trình CI

Bảng 1.2 Ưu tiên kiểm thử dựa trên ràng buộc thời gian

Tác giả - Năm Kĩ thuật ưu tiên Kết quả

Walcott và cộng

sự (2006) [33]

Nghiên cứu đầu tiên quan tâm tới chi phí thời gian kiểm thử

Các thuật toán dựa trên GA thực hiện rất tốt (cải thiện lên tới 120%)

Alspaugh và Sử dụng giải thuật Hoạt động kiểm thử có thể được

Trang 19

(2011) [37]

Nghiên cứu tác động từ chi phí của từng trường hợp kiểm thử riêng rẽ

Lợi ích của việc theo dõi chi phí cho các trường hợp kiểm thử độc lập là cận biên

Có thể nhận thấy hầu hết các nghiên cứu đã tiếp cận và giải quyết bài toán theo hướng dựa vào dữ liệu từ nhiều khía cạnh của kiểm thử phần mềm rồi đưa ra kết quả ưu tiên trường hợp kiểm thử Xét về khía cạnh góc nhìn của người làm kiểm thử độc lập, có một số vấn đề như sau:

 Nhiều kĩ thuật được sử dụng phân tích mã nguồn phần mềm để có được các thông tin hữu ích về chức năng, sau đó mới đi vào ưu tiên hóa kiểm thử Trong khi thực tế cán bộ kiểm thử (Tester) không hoặc ít có khả năng tiếp cận mã nguồn

 Dữ liệu sử dụng trong các nghiên cứu là dữ liệu độc lập giữa lịch sử thực thi kiểm thử với dữ liệu về ràng buộc thời gian cũng như môi trường thực thi Thực tế hoạt động kiểm thử sẽ được tiến hành song song hoặc ngay lập tức sau khi có bản phát hành phần mềm

 Các kỹ thuật sử dụng trên bộ dữ liệu để giải quyết bài toán hầu hết là các kĩ thuật truyền thống và thường giả định rằng ràng buộc thời gian và độ nghiêm trọng của lỗi là đồng nhất

Trang 20

19

Từ những nhận xét trên, tác giả đề xuất một dạng bài toán tối ưu kiểm thử có thích nghi phù hợp hơn với bối cảnh kiểm thử độc lập tích hợp vào quy trình phát triển phần mềm liên tục, được gọi là bài toán ưu tiên và chọn lựa kiểm thử thích nghi trình bày sau đây

1.2.2 Bài toán kiểm thử phần mềm

Mô hình toán học

Trong thực tế, thực thi một bộ kiểm thử là một quy trình tốn thời gian, và đòi hỏi nhiều can thiệp thủ công mà ta cần phải ưu tiên và lên lịch để tối ưu hóa việc tìm ra lỗi Trong đó nổi bật một vấn đề sẽ hỗ trợ nhiều trong lên lịch kiểm thử: Chọn bộ trường hợp tiềm năng nhất trong hàng trăm, thậm chí hàng ngàn trường hợp có sẵn khi thực thiện Tích hợp liên tục (Continuous Integration – CI) [38] Bài toán được phát biểu như sau [32]:

Gọi 𝑇𝑖 là bộ trường hợp kiểm thử {𝑡1, 𝑡2, … 𝑡𝑁} ở chu trình 𝑖 Các trường hợp kiểm thử này sẽ được chọn lựa và lên thứ tự gọi là 𝑇𝑆𝑖(𝑇𝑆𝑖 ∈ 𝑇𝑖) Cụ thể hơn,

𝑇𝑆𝑖𝑡ổ𝑛𝑔 là bộ trường hợp kiểm thử đã được sắp xếp thứ tự khi tất cả các trường hợp kiểm thử trong bộ đều sẽ được thực thi (𝑇𝑆𝑖𝑡ổ𝑛𝑔là một hoán vị của 𝑇𝑖) Điểm khác biệt đó là 𝑇𝑆𝑖𝑡ổ𝑛𝑔quan tâm tới thứ tự thực thi các trường hợp còn 𝑇𝑖 thì không

Theo đó, có được hàm xếp hạng: 𝑟𝑎𝑛𝑘: 𝑇𝑆𝑖 → 𝑁 trong đó 𝑟𝑎𝑛𝑘(𝑡) là vị trí của trường hợp 𝑡 trong 𝑇𝑆𝑖

Với mỗi trường hợp kiểm thử, có giá trị 𝑡 𝑘𝑞𝑖 và 𝑡 𝑡𝑔𝑖 Các giá trị này sẽ

có sau khi thực thi kiểm thử Để đơn giản:

𝑡 𝑘𝑞𝑖 = {1 𝑛ế𝑢 𝑡𝑖 == 𝑝𝑎𝑠𝑠𝑒𝑑

0 𝑛ế𝑢 𝑡𝑖 == 𝑓𝑎𝑖𝑙𝑒𝑑 𝑜𝑟 𝑠𝑘𝑖𝑝𝑝𝑒𝑑

(1)

Ở đây các trường hợp có kết quả là failed (thất bại), kí hiệu 𝑇𝑆𝑖𝑓𝑎𝑖𝑙 = {𝑡 ∈

𝑇𝑖|𝑡 𝑘𝑞𝑖 = 0} sẽ được quan tâm hơn cả do việc kiểm thử thất bại khả năng cao đến

Trang 21

𝑄𝑖(𝑇𝑆𝑖) = 1

|𝑇𝑆𝑖|∑𝑡∈𝑇𝑆𝑖𝑞(𝑡) Cách chọn Q sẽ dựa theo thuật toán học, trình bày cụ thể trong mục 2.2.4

Bài toàn ưu tiên và lựa chọn kiểm thử thích nghi

Mục đích của bất cứ bài toán gợi ý kiểm thử nào cũng đều là tìm ra một trật tự tối ưu cho các trường hợp kiểm thử sao cho khi thực thi phát hiện ra lỗi sớm nhất có thể khi thực hiện kiểm thử hồi quy

Cụ thể, [39] phát biểu thành: Bài toán ưu tiên trường hợp kiểm thử (Test

Case Prioritization Problem - TCP)

Gọi 𝑇𝑆𝑖 là bộ kiểm thử, 𝑃𝑇 là tất cả các chỉnh hợp của 𝑇𝑆𝑖 với 𝑄𝑖 là hiệu

năng, thì bài toán TCP đi tìm 𝑇𝑆′𝑖 là một chỉnh hợp mà 𝑄𝑖(𝑇𝑆′𝑖) là tối đa Nói cách

khác, TCP đi tìm 𝑇𝑆′𝑖, ∀𝑇𝑆𝑖 ∈ 𝑃𝑇|𝑄𝑖(𝑇𝑆′𝑖) ≥ 𝑄𝑖(𝑇𝑆𝑖)

Đây là nền tảng để xây dựng bài toán mở rộng có quan tâm tới ràng buộc thời gian cho việc thực thi kiểm thử Dễ hiểu, bởi tất cả trường hợp sẽ không được thực thi hết khi có giới hạn thời gian Trên thực thế, việc thực thi kiểm thử còn bị ràng buộc bởi nhiều yếu tố khác chứ không phải chỉ riêng thời gian Tuy nhiên, công thức trình bày dưới hoàn toàn có thể được tùy biến dễ dàng

Bài toán ưu tiên trường hợp kiểm thử giới hạn thời gian (Time-limited Test

Case Prioritization Problem - TTCP)

Trang 22

21

Gọi 𝑀 là thời gian tối đa để thực thi kiểm thử, thì TTCP đi tìm 𝑇𝑆𝑖 với 𝑄𝑖

là tối đa trong khi tổng thời gian thực hiện nhỏ hơn 𝑀 Nói cách khác, cần đi tìm

Bài toán lựa chọn trường hợp kiểm thử thích nghi (Adaptive

Test Case Selection Problem – ATCS)

Gọi 𝑇𝑆1, … 𝑇𝑆𝑖−1 là tập hợp các bộ kiểm thử đã được thực thi trước đó Bài

toán ATCS đi tìm 𝑇𝑆𝑖 sao cho 𝑄𝑖(𝑇𝑆𝑖) tối đa trong khi ∑𝑡𝑘∈𝑇𝑆𝑖𝑡 𝑡𝑔𝑘 nằm trong giới hạn 𝑀

Như vậy, ATCS là một bài toán tối ưu lấy ý tưởng từ việc ưu tiên các

trường hợp kiểm thử có ràng buộc thời gian, lựa chọn và đánh giá hiệu năng mà chỉ dựa trên kết quả thực thi trong quá khứ

Trong kiểm thử liên tục, ta thường xuyên bắt gặp dữ liệu kiểm thử chưa đủ

để xây dựng mô hình học máy có giám sát Trong tình huống đó, việc sử dụng học tăng cường là hết sức thích hợp khi có thể bắt đầu từ rất ít dữ liệu và để mô hình tự khám phá ra quy luật bằng việc học trong quá trình tiếp tục kiểm thử

1.3 Tổng kết chương

Chương này đã trình bày các kiến thức cơ bản về kiểm thử trong ngành công nghiệp phần mềm, kiểm thử tự động, các xu hướng trong kiểm thử tự động đang được ứng dụng rộng rãi Phần cuối đi vào cụ thể hóa một bài toán hỗ trợ và tối ưu

Trang 23

22

hóa việc kiểm thử qua việc ưu tiên hóa và lựa chọn trường hợp khi thực thi hoạt động kiểm thử trong Tích hợp liên tục và các nghiên cứu liên quan Từ đó người viết đề xuất bài toán và xây dựng mô hình cho bài toán tối ưu hóa kiểm thử

Trang 24

2.1 Môi trường thu thập và tiền xử lí dữ liệu

Môi trường kiểm thử, đặc biệt là kiểm thử hồi quy thường độc lập với môi trường phát triển phần mềm và chỉ lưu trữ các thông tin liên quan tới đặc tả yêu cầu chức năng, được chuyển thành các điều kiện đầu vào kiểm thử và kết quả đầu ra cùng các dữ liệu lịch sử

Dữ liệu kiểm thử cho nghiên cứu luận văn này lấy từ dữ liệu lịch sử kiểm thử

ABB Robotics Norway, Paint Control [40], là kết quả kiểm thử rô bốt công nghiệp phức tạp và dữ liệu về kiểm thử hệ thống Rails của Travis CI [41] Quá trình thu

thập dữ liệu được diễn tả trong Hình 2.1 Cụ thể thực nghiệm và kết quả trên bộ dữ liệu sẽ được trình bày trong Chương 4

 Dữ liệu Paint Control: Dữ liệu kết quả kiểm thử cho 300 vòng CI, đã tiền

xử lí và chiết xuất

 Dữ liệu Travis CI: Dữ liệu cho 2000 vòng CI, chưa tiền xử lí

Trang 25

24

Hình 2.1 Quy trình thu thập dữ liệu

Các dữ liệu này hầu như là dữ liệu hộp đen, tức là chúng chỉ chứa các thông tin

về việc kiểm thử khi thích hợp CI mà không chỉ rõ kiểm thử cho sự thay đổi nào trong mã nguồn, kiểm thử cho mô đun nào Vì thế việc tiền xử lí và chiết xuất thông tin từ dữ liệu là rất quan trọng

2.1.1 Thu thập và tiền xử lí

Việc thu thập dữ liệu có thể được diễn tả như sau Mỗi lần có phiên bản mới của phần mềm, một bộ trường hợp kiểm thử sẽ được chọn và chạy càng nhiều càng tốt rồi lưu lại và tổng hợp kết quả trong trên một hệ thống chung Bước đầu tiên của việc thu thập dữ liệu đó là phân tích dữ liệu tổng hợp này và tìm các phần liên quan tới kết quả kiểm thử có thể sử dụng Dữ liệu thô thực tế chứa rất nhiều thông tin liên quan như mã kiểm thử, thời gian, mã bản phát hành,… nhưng chỉ những trường liên quan tới nghiên cứu được dữ lại Lưu ý rằng dữ liệu ghi lại lịch sử cho từng trường hợp kiểm thử sẽ cần phải được chiết xuất riêng (trình bày sau)

Bảng 2.1 Dữ liệu kiểm thử thô

Dữ liệu kiểm thử Tên bộ kiểm thử Thời gian

thực hiện trường Số

Mã bản

Tình trạng

Trang 26

25

hợp thất bại

Bảng 2.2 Thông tin chung về bộ dữ liệu

Bộ dữ liệu Số trường hợp kiểm thử Số vòng CI Kết quả Tỉ lệ thất bại

2.1.2 Phân tích đặc trưng dữ liệu

Dữ liệu thô đã thu thập trên cần được chiết xuất thông tin cần thiết để đưa vào

mô hình, cụ thể là dữ liệu lịch sử của các trường hợp kiểm thử và chỉ sử dụng các trường hợp chạy đã có lịch sử

Trang 27

7 limit: hằng số giới hạn chiều dài lịch sử gần nhất

8 function accumulation_result(T, limit):

Trang 28

1.6 limit: hằng số giới hạn chiều dài lịch sử tối thiểu

1.7 function test_filter(L, limit):

2.2.1 Quy trình Markov

Bài toán tối ưu hóa kiểm thử, cũng như nhiều bài toán trong thực tiễn, có thể

đưa về việc giải một quy trình quyết định Markov (Markov Decision Process -

MDP) [42] MDP là một mô hình toán học để tối ưu hóa việc ra quyết định với điều

Trang 29

28

kiện không chắc chắn Nó được cụ thể hóa trong một môi trường, trong đó mục đích của máy là đạt tới trạng thái mong muốn

Định nghĩa 2.1 Markov Decision Process – MDP: là một quá trình ngẫu nhiên

thời gian rời rạc (stochastic process) định nghĩa bởi một bộ 𝑴 = 〈𝑺, 𝑨, 𝑷, 𝑹, 𝜸〉, trong đó:

Định nghĩa 2.2 Markov Property: Hàm 𝑷: (𝑺 × 𝑨) → 𝑺 có tính chất Markov nếu:

𝑃(𝑠𝑡+1|𝑠𝑡, 𝑎𝑡, 𝑠𝑡−1, … , 𝑠0) = 𝑃(𝑠𝑡+1|𝑠𝑡, 𝑎𝑡) (1) MDP là một quy trình ngẫu nhiên, vì thế, việc chuyển từ trạng thái 𝑠 sang trạng thái tiếp theo 𝑠′ chỉ có thể xảy ra với xác suất 𝑃(𝑠′|𝑠, 𝑎)

Mỗi phần thưởng đều được đánh trọng số với 𝛾, gọi là hệ số giảm trừ (discount

factor) Về mặt toán học thuận tiện để giảm giá phần thưởng vì nó tránh được vô

hạn trong quy trình Markov theo chu kỳ Bên cạnh đó, hệ số giảm trừ có nghĩa là càng ở trong tương lai thì phần thưởng càng trở nên ít quan trọng, bởi vì tương lai thường không chắc chắn

Trang 30

29

Trong bài toán tối ưu hóa kiểm thử, đây là một bài toán MDP trong đó bộ 𝑀 sẽ

được giải thích cụ thể trong mục 3.2 Mô hình chính đằng sau việc giải quyết bài toán MDP sử dụng RL đó chính là việc học liên tục thông qua kết hợp việc khám phá (tìm ra trạng thái và hành động nào dẫn đến phần thưởng) và khai thác (cập nhật chiến lược của máy để nâng cao phần thường dự đoán trong tương lai xa)

2.2.2 Học máy tăng cường

Học tăng cường (Reinforement Learning - RL) là một lĩnh vực về các phương pháp và vấn đề học máy dựa trên ý tưởng học từ phần thưởng dạng tính toán mà máy có được qua tương tác với môi trường [43]

Như vậy, máy trong RL không có sự giám sát và không biết thông tin về môi trường Theo đó, máy vừa phải khám phá vừa phải khai thác kiến thức của nó.Trong mỗi bước, máy quan sát trạng thái của môi trường và sẽ nhận được tín hiệu phần thưởng Dựa trên trạng thái hiện tại và hàm điều khiển hành động của hệ thống – hay còn gọi là chiến lược – hệ thống sẽ chọn hành động để thực hiện

Hành động này sau đó được đưa vào môi trường, cập nhật và vòng lặp lại Chi tiết thể hiện trong Hình 2.2 [43]

Hình 2.2 Tương tác giữa hệ thống và môi trường

Trang 31

Trong luận văn này tập trung vào phương pháp không dựa mô hình đã chứng

tỏ được hiệu năng cao trên nhiều bài toán khác nhau [44] [45]

Để có thể cập nhật được chiến lược, ta có khái niệm hàm giá trị Một hàm

giá trị đánh giá môi trường với chiến lược nhất định là tốt tới đâu, hay là phần thưởng ta có thể nhận được trong tương lai nếu làm đúng theo chiến lược trong môi trường cụ thể đó

Hàm trạng thái-giá trị 𝑣𝜋(𝑠) cho chiến lược 𝜋 trong trạng thái 𝑠 được định nghĩa như sau: [43]

Tương tự, một hàm hành động-giá trị xác định giá trị của việc thực hiện

hành động 𝑎 trong trạng thái 𝑠 sử dụng chiến lực 𝜋 như sau, và đây chính là hàm giá trị Q:

Ngày đăng: 28/02/2021, 00:17

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[3] Q. T. M. Godfrey, "Growth, evolution, and structural change in open source software," in 4th international workshop on principles of softwareevolution, ACM, 2001 Sách, tạp chí
Tiêu đề: Growth, evolution, and structural change in open source software
[4] A. P. O. G. B. C. F. M. Y. Zhauniarovich, "Towards black box testing of android app," in 2015 10th International Conference on Availability, Reliability and Security (ARES), Toulouse, France, 2015 Sách, tạp chí
Tiêu đề: Towards black box testing of android app
[5] M. K. N. L. L. J. M. V. P. A. Laplante, "Building caring healthcare systems in the internet of things," EEE Systems Journal, 2017 Sách, tạp chí
Tiêu đề: Building caring healthcare systems in the internet of things
[6] K. Cường, "Tỷ lệ kỹ sư kiểm thử phần mềm ở VN còn thấp," 15 7 2011. [Online]. Available: https://vnexpress.net/so-hoa/ty-le-ky-su-kiem-thu-phan-mem-o-vn-con-thap-1513971.html Sách, tạp chí
Tiêu đề: Tỷ lệ kỹ sư kiểm thử phần mềm ở VN còn thấp
[7] "AI in Testing: The third wave of automation," CloudQA, [Online]. Available: https://cloudqa.io/ai-in-testing-the-third-wave-of-automation/. [Accessed 2019] Sách, tạp chí
Tiêu đề: AI in Testing: The third wave of automation
[8] G. G. A. P. A. Z. M. Beller, "When, how, and why developers (do not) test in their ides," in 10th Joint Meeting on Foundations of Software Engineering, 2015 Sách, tạp chí
Tiêu đề: When, how, and why developers (do not) test in their ides
[9] G. Rothermel and M. Harrold, "Analyzing regression test selection techniques," IEEE Transactions on Software Engineering , vol. 22, no. 8, pp.529 - 551, 1996 Sách, tạp chí
Tiêu đề: Analyzing regression test selection techniques
[10] G. Rothermel, R. Untch, C. Chu and M. Harrold, "Prioritizing test cases for regression testing," in Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis, Portland, Oregon, USA, 2000 Sách, tạp chí
Tiêu đề: Prioritizing test cases for regression testing
[11] A. Ansaria, A. Khanb, A. Khanc and K. Mukadam, "Optimized Regression Test using Test Case Prioritization," in 7th International Conference on Communication, Computing and Virtualization 2016, 2016 Sách, tạp chí
Tiêu đề: Optimized Regression Test using Test Case Prioritization
[12] B. Busjaeger and T. Xie, "Learning for Test Prioritization: An Industrial Case Study," in Proceedings of the 2016 24th ACM SIGSOFT InternationalSymposium on Foundations of Software Engineering, Seattle, WA, USA Sách, tạp chí
Tiêu đề: Learning for Test Prioritization: An Industrial Case Study
[13] C. Kaner, "Exploratory testing," in Quality Assurance Institute Worldwide Annual Soft-ware Testing Conference, Orlando, FL, 2006 Sách, tạp chí
Tiêu đề: Exploratory testing
[14] W. W. Royce, "Managing the development of large software systems,," Proceedings of IEEE WESCON, no. 26, pp. 1-9, 1970 Sách, tạp chí
Tiêu đề: Managing the development of large software systems
[16] M. N. Dhingra, "Contingent study of black box and white box testing techniques," International Journal of Current Engineering and Technology, 2014 Sách, tạp chí
Tiêu đề: Contingent study of black box and white box testing techniques
[20] I. C. B. M. M. H. A. Leitner, "Reconciling manual and automatedtesting: The autotest experience," in 40th AnnualHawaii International Conference, 2007 Sách, tạp chí
Tiêu đề: Reconciling manual and automatedtesting: The autotest experience
[21] R. Ramler, "Economic Perspectives in Test Automation: Balancing Automated and Manual Testing with Opportunity Cost," in International Workshop on Automation of Software Test, Shanghai, China, 2006 Sách, tạp chí
Tiêu đề: Economic Perspectives in Test Automation: Balancing Automated and Manual Testing with Opportunity Cost
[22] S. Berner, R. Weber and R. Keller, "Observations and lessons learned from automated testing," in IEEE, Saint Louis, MO, USA, USA, 2005 Sách, tạp chí
Tiêu đề: Observations and lessons learned from automated testing
[23] P. K. Chittimalli and M. J. Harrold, "Re-computing Coverage Information to Assist Regression Testing," in 2007 IEEE International Conference on Software Maintenance, Paris, France, 2007 Sách, tạp chí
Tiêu đề: Re-computing Coverage Information to Assist Regression Testing
[24] G. U. R. C. C. H. M. Rothermel, "Prioritizing test cases for regression testing," IEEE Trans. Software Eng, vol. 27, pp. 929-948, 2001 Sách, tạp chí
Tiêu đề: Prioritizing test cases for regression testing
[25] W. M. J. L. S. M. A. Wong, "Effect of test setminimization on fault detection effectiveness," Software – Practice and Experience, vol. 28, p. 347–369, 1998 Sách, tạp chí
Tiêu đề: Effect of test setminimization on fault detection effectiveness
[26] N. M. A. V. S. Juristo, "Reviewing 25 Years of Testing Technique Experiments," Empirical Software Engineering, vol. 9, pp. 7-44, 2004 Sách, tạp chí
Tiêu đề: Reviewing 25 Years of Testing Technique Experiments

TỪ KHÓA LIÊN QUAN