Kiểm thử dựa trên mô hình đang được xem là một phương pháp kiểm thử có khả năng Các công cụ mô hình hoá như Simulink hay được dùng để thiết kế các hệ thống nhúng.. Với mục đích tìm hiểu
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Trang 2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: TS Đỗ Thị Bích Ngọc
Phản biện 1: PGS.TS Nguyễn Hà Nam
Phản biện 2: PGS.TS Trần Đăng Hưng
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc: 9 giờ 00 ngày 19 tháng 01 năm 2019
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông
Trang 3MỞ ĐẦU
Xuất hiện từ những năm đầu thập niên 1960, hệ thống nhúng đang dần trở thành một ngành phát triển mạnh mẽ trong lĩnh vực công nghệ thông tin (CNTT), với những ứng dụng rộng rãi trong công nghiệp và đời sống
Sự tăng trưởng của hệ thống nhúng trong ngành công nghiệp dẫn tới một quá trình phát triển công nghệ dựa trên mô hình (model based), mang lại nhiều thuận lợi cho sự phát triển của công nghệ tự động Các kỹ thuật dựa trên mô hình như MATLAB/ Simulink, Statemate, MatrixX hoặc LabView là những công cụ cụ thể và có cơ chế mạnh mẽ nhằm hỗ trợ xử lý các tín hiệu liên tục và các loại dữ liệu quan trọng nhất trong lĩnh vực điều khiển
tự động
Sự phát triển của hệ thống nhúng kéo theo những yêu cầu phát triển của hoạt động kiểm thử Thông thường, cách phổ biến để kiểm thử cho hệ thống nhúng nói chung là chạy giả lập phần cứng trên phần mềm mô phỏng Kiểm thử tự động là một giải pháp hữu hiệu nhằm nâng cao tính chính xác và hiệu quả, cũng như giảm kinh phí và rút ngắn thời gian trong quá trình kiểm thử các sản phẩm phần mềm nói chung và các hệ thống nhúng nói riêng Kiểm thử dựa trên mô hình đang được xem là một phương pháp kiểm thử có khả năng
Các công cụ mô hình hoá (như Simulink) hay được dùng để thiết kế các hệ thống nhúng Simulink được tích hợp vào Matlab như một công cụ để mô phòng hệ thông, giúp người sử dụng phân tích và tổng hợp hệ thống một cách trực quan Trong Simulink, hệ thống được mô tả dưới dạng sơ đồ khối Với dạng sơ đồ khối này, ta có thể quan sát các đáp ứng thời gian của hệ thống với nhiều tín hiệu vào khác nhau như: tín hiệu bậc thang, tín hiệu sinus, xung chữ nhật, tín hiệu ngẫu nhiên, bằng cách thực hiện mô phỏng Kết quả mô phỏng có thể được xem theo thời gian thực trong môi trường Simulink hoặc Matlab Tất cả
Trang 4các hàm trong Matlab đều cố thể truy cập từ Simulink, và ngược lại, các kết quả tìm được trong Simulink đều có thể sử dụng và khái thác trong mô trường Matlab
Với mục đích tìm hiểu những kỹ thuật kiểm thử mới áp dụng vào hệ thống nhúng, tôi nhận thấy việc nghiên cứu các phương pháp kiểm thử tự động dựa trên mô hình trong hệ thống nhúng là một vấn đề rất cần thiết hiện nay
Luận văn sẽ được cấu trúc với các chương như sau:
Chương 1 : Tổng quan về hệ thống nhúng và kiểm thử trong hệ thống nhúng
Chương 2 : Phương pháp kiểm thử dựa trên mô hình
Chương 3: Thử nghiệm và đánh giá
Luận văn sẽ khảo sát bài toán kiểm thử dựa trên mô hình áp dụng trong hệ thống nhúng, đề xuất một phương pháp, một mô hình kiểm thử phù hợp với quy trình hiện tại Đồng thời phương pháp đề xuất sẽ được phân tích và đánh giá bằng một số phương pháp đánh giá thông dụng trên tập dữ liệu đã có sẵn
Trang 5Hệ thống nhúng là một thuật ngữ để chỉ một hệ thống có khả năng tự trị được nhúng vào trong một môi trường hay một hệ thống mẹ Đó là các hệ thống tích hợp cả phần cứng
và phần mềm phục vụ các bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp, tự động hoá điều khiển, quan trắc và truyền tin Đặc điểm của các hệ thống nhúng là hoạt động ổn định và có tính năng tự động hoá cao
1.2 Đặc điểm của hệ thống nhúng
Hệ thống nhúng thường có một số đặc điểm chung như sau:
Các hệ thống nhúng được thiết kế để thực hiện một số nhiệm vụ chuyên dụng chứ không phải đóng vai trò là các hệ thống máy tính đa chức năng Một số hệ thống đòi hỏi ràng buộc về tính hoạt động thời gian thực để đảm bảo độ an toàn và tính ứng dụng; một số
hệ thống không đòi hỏi hoặc ràng buộc chặt chẽ, cho phép đơn giản hóa hệ thống phần cứng
để giảm thiểu chi phí sản xuất
Một hệ thống nhúng thường không phải là một khối riêng biệt mà là một hệ thống phức tạp nằm trong thiết bị mà nó điều khiển
Phần mềm được viết cho các hệ thống nhúng được gọi là firmware và được lưu trữ trong các chip bộ nhớ ROM hoặc bộ nhớ flash chứ không phải là trong một ổ đĩa Phần mềm thường chạy với số tài nguyên phần cứng hạn chế: không có bàn phím, màn hình hoặc
có nhưng với kích thước nhỏ, dung lượng bộ nhớ thấp
Với những đặc điểm như trên, việc thử nghiệm, xác định lỗi trong hệ thống nhúng gặp nhiều khó khăn Số lượng trường hợp thử nghiệm lớn, đòi hỏi phải có phương pháp và
mô hình kiểm thử phù hợp
Xu hướng phát triển của các hệ thống nhúng
Sau máy tính lớn (mainframe), PC và Internet thì hệ thống nhúng đang là làn sóng đổi mới thứ 3 trong công nghệ thông tin và truyền thông
Xu hướng phát triển của các hệ thống nhúng hiện nay là:
Trang 6Phần mềm ngày càng chiếm tỷ trọng cao và đã trở thành một thành phần cấu tạo nên thiết bị bình đẳng như các phần cơ khí, linh kiện điện tử, linh kiện quang học…
• Các hệ nhúng ngày càng phức tạp hơn đáp ứng các yêu cầu khắt khe về thời gian thực, tiêu ít năng lượng và hoạt động tin cậy ổn định hơn
• Các hệ nhúng ngày càng có độ mềm dẻo cao đáp ứng các yêu cầu nhanh chóng đưa sản phẩm ra thương trường, có khả năng bảo trì từ xa, có tính cá nhân cao
• Các hệ nhúng ngày càng có tính thích nghi, tự tổ chức cao có khả năng tái cấu hình như một thực thể, một tác nhân
• Các hệ nhúng ngày càng có khả năng tiếp nhận năng lượng từ nhiều nguồn khác nhau (ánh sáng, rung động, điện từ trường, sinh học….) để tạo nên các hệ thống tự tiếp nhận năng lượng trong quá trình hoạt động
1.3 Lý thuyết kiểm thử
1.3.1 Mục tiêu kiểm thử
Kiểm thử nhằm xác định sự khác biệt giữa các hành vi dự kiến và hành vi thực sự của một hệ thống Mục đích của kiểm thử là phát hiện lỗi, nhằm tìm ra các sự khác biệt có thể nhận diện giữa hành vi của hệ thống được cài đặt và hành vi dự định của hệ thống thử nghiệm Mục tiêu của quá trình kiểm thử được xác định nhằm:
Tìm và ngăn ngừa các lỗi
Đạt được sự tự tin và cung cấp thông tin về mức độ chất lượng
Đảm bảo rằng kết quả cuối cùng đáp ứng các yêu cầu kinh doanh và người sử dụng
Kiểm thử sẽ giúp hoàn thiện các ứng dụng phần mềm hoặc sản phẩm so với yêu cầu kinh doanh và người sử dụng Đây là giai đoạn rất quan trọng để đảm bảo hệ thống hoạt động tốt và theo các thông số kỹ thuật
1.3.2 Nguyên tắc kiểm thử
Để kiểm thử đạt hiệu quả thì khi tiến hành kiểm thử hệ thống cần phải tuân thủ một
số nguyên tắc sau:
Nguyên tắc 1: Kiểm thử chỉ ra sự hiện diện của lỗi
Nguyên tắc 2: Kiểm thử toàn bộ, đầy đủ là không thể
Nguyên tắc 3: Cần bắt đầu giai đoạn kiểm thử càng sớm càng tốt
Nguyên tắc 4: Phân nhóm lỗi để xác định một số module tập trung lỗi nhiều nhất
Nguyên tắc 5: Kịch bản kiểm thử cần được cập nhật
Trang 7 Nguyên tắc 6: Kiểm thử được thực hiện trong những bối cảnh khác nhau
1.3.3 Nội dung các nhiệm vụ trong quá trình kiểm thử
- Tổng hợp và tạo các bản kế hoạch kiểm tra
- Xem xét các kế hoạch kiểm tra
Chuẩn bị môi trường kiểm thử
- Thiết kế hệ thống kiểm thử
- Thiết kế chương trình kiểm thử và dữ liệu kiểm thử
- Thiết đặt các công cụ kiểm thử
Tiến hành kiểm thử:
Kiểm tra kết quả của kiểm thử:
Phân tích hỏng hóc, phân tích hiệu năng:
Sửa chữa và cải tiến tài liệu, chương trình gốc:
Hoàn tất quá trình kiểm thử :
- Quản lý tiến trình kiểm thử và báo cáo
- Kiểm soát dữ liệu liên quan tới hỏng hóc
- Xem lại tài liệu vận hành ngược dòng
1.4 Kiểm thử tự động
Kiểm thử tự động
Sử dụng một công cụ kiểm thử tự động để thực thi các ca kiểm thử thay cho con người được goi là kiểm thử tự động Công cụ kiểm thử tự động có thể lấy dự liệu từ file bên ngoài (excel, csv, …) nhập vào ứng dụng, so sánh kết quả mong đợi với kết quả thực tế và xuất ra báo cáo kết quả kiểm thử
Ưu điểm và nhược điểm
Ưu điểm:
- Độ tin cậy cao (Reliability)
- Khả năng lặp (Repeatability)
Trang 8- Khả năng tái sử dụng (Reusability)
- Nhanh (Fast)
- Chi phí thấp (Cost Reduction)
Nhược điểm :
- Khó mở rộng, khó bảo trì (Poor scalability and maintainability)
- Khả năng bao phủ thấp (Low coverage)
- Vấn đề công cụ và nhân lực (Technology vs people issues)
Tầm quan trọng của kiểm thử tự động
- Tiết kiệm tiền bạc và thời gian: Nhận định này đặc biệt đúng nếu xét trong giai đoạn bảo trì của các dự án lớn Mỗi tuần chúng ta phải thực hiện regression test từ 1 đến 2 lần với
số lượng test case rất lớn trong 1 đến 2 ngày Gần như không thể thực hiện cách thủ công, trong khi với kiểm thử tự động chúng ta hoàn toàn có thể với nguồn nhân lực vô cùng khiêm tốn
- Chính xác hơn: Nhờ độ ổn định cao, kiểm thử tự động có thể thực thi các ca kiểm thử với độ chính xác cao hơn
- Độ bao phủ cao: Như đã nói ở trên, khi sử dụng kiểm thử tự động, chúng ta có thể thực thi số lượng lớn các ca kiểm thử trong một thời gian ngắn Điều này giúp chúng ta tăng
độ bao phủ trong giai đoạn kiểm thử hồi quy (một ví dụ điển hình)
- Hoàn thành các công việc mà con người không thể làm được: Nếu chúng ta muốn thực thi load test, performance test, thì kiểm thử tự động là cách duy nhất
Trang 9Chương 2- PHƯƠNG PHÁP KIỂM THỬ DỰA TRÊN MÔ HÌNH
2.1 Kiểm thử dựa trên mô hình
2.1.1 Kiểm thử dựa trên mô hình
Kiểm thử dựa trên mô hình là một dạng kiểm thử dựa trên hành vi của các mô hình,
nó mã hóa các hành vi dự tính của một hệ thống thử nghiệm và/hoặc hành vi trong môi trường của nó Các trường hợp kiểm thử được tạo từ một trong các mô hình hoặc là sự kết hợp của chúng và được thực hiện trên hệ thống thử nghiệm Theo phương pháp truyền thống, quá trình kiểm thử bắt đầu bằng việc sử dụng các mô hình thường không có cấu trúc, không tái sử dụng, không được tài liệu hóa, thiếu logic hợp lý cho thiết kế kiểm thử, và dựa trên kinh nghiệm, kỹ năng của các kỹ sư Với ý tưởng các thực thể sẽ được mã hóa tường minh vào hệ thống thử nghiệm dự kiến và các hành vi môi trường khả dĩ có thể giúp giảm thiểu các vấn đề trên
Các ý tưởng về kiểm thử dựa trên mô hình được gọi là kiểm thử dựa trên đặc tả Trong thập kỷ vừa qua, ở lĩnh vực nghiên cứu và trong ngành công nghiệp,các phương pháp phát triển dựa trên mô hình và kiểm thử làm trung tâm, cũng như mức độ phát triển của công nghệ từ lĩnh vực kiểm thử đã làm tăng sự quan tâm về chủ đề Dias-Neto đã phân tích
271 tài liệu và xác định được 219 cách tiếp cận kiểm thử dựa trên mô hình Điều này cản trở việc áp dụng công nghệ kiểm thử dựa trên mô hình trong công nghiệp và hạn chế cải tiến các phương pháp tiếp cận kiểm thử dựa trên mô hình
Kiểm thử dựa trên mô hình bao gồm các quá trình và các kỹ thuật nhằm: tạo các dẫn xuất tự động của các trường hợp kiểm thử trừu tượng từ các mô hình trừu tượng, tạo ra các bài kiểm thử cụ thể từ các kiểm thử trừu tượng,và thực thi thủ công hoặc tự động các trường hợp kiểm thử cụ thể
2.1.2 Quy trình kiểm thử dựa trên mô hình
Quá trình kiểm thử dựa trên mô hình được bắt đầu bằng việc xác định yêu cầu của hệ thống từ đó xây dựng mô hình dựa vào các yêu cầu và chức năng của hệ thống Việc xây dựng mô hình còn phải dựa trên các yếu tố dữ liệu đầu vào và đầu ra Mô hình này được sử dụng để sinh ra các ca kiểm thử Chúng ta có thể biết kết quả đầu ra mong đợi từ mô hình hoặc từ quy định chuẩn Khi chạy kich bản và kết quả thu được sẽ so sánh với kết quả mong đợi từ đó quyết định hành động tiếp theo như sửa đổi mô hình hoặc dừng kiểm thử,…
Các bước để thực hiện kiểm thử dựa trên mô hình:
Trang 10- Xây dựng mô hình dựa trên các yêu cầu và chức năng của hệ thống
- Tạo đầu ra dự kiến từ mô tả của bài toán
- Chạy kịch bản kiểm thử
- So sánh kết quả đầu ra thực tế với kết quả đầu ra dự kiến
- Quyết định hành động tiếp theo (Sửa đổi mô hình, tạo thêm ca kiểm thử, dừng kiểm thử, đánh giá chất lượng phần mềm)
Trong giới hạn luận văn, học viên sẽ giới thiệu các thuật ngữ và miêu tả chung quá trình của kiểm thử dựa trên mô hình
2.1.3 Thuận lợi và khó khăn của kiểm thử dựa trên mô hình
Thuận lợi
Trong quá trình phát triển hệ thống các kiểm thử viên thường thực hiện công việc của mình bằng phương pháp truyền thống nên thường thiếu thời gian để thực hiện kiểm thử, hoặc giá thành sản phẩm khi hoàn thành thường cao Kiểm thử mô hình sẽ khắc phục được một số nhược điểm đó:
- Do quá trình sinh ca kiểm thử là tự động vì vậy mà rút ngắn thời gian phát triển
- Sớm phát hiện lỗi và sự không rõ ràng trong đặc điểm kỹ thuật và thiết kế vì vậy
sẽ tăng thời gian giải quyết vấn đề trong kiêm thử
- Tự động tạo và kiểm tra các ca kiểm thử trùng nhau hoặc không hữu hiệu
- Khi một yêu cầu của hệ thống thay đổi thì việc thay đôi các ca kiểm thử đơn giản hơn, vì chỉ cần thay đổi mô hình của hệ thống
- Trong kiêm thử dựa trên mô hình công việc quan trọng nhất là xây dựng mô
hình Việc xây dựng mô hình cần được đầu tư thời gian, trí óc và tiền bạc
Trang 112.2 Các vấn đề của quá trình kiểm thử dựa trên mô hình
Các phương pháp kiểm thử dựa trên mô hình thường bao gồm 6 vấn đề Các vấn đề phần lớn không hoàn toàn độc lập với nhau: ví dụ, nếu kiểm thử liên quan với hệ thống liên tục chứ không phải là một hệ thống rời rạc thì sẽ hạn chế lựa chọn mô hình hóa mô hình, tiêu chí lựa chọn kiểm tra và công nghệ tạo trường hợp kiểm thử
Hình 2.1: Các vấn đề của quá trình kiểm thử dựa trên mô hình
Hình 2.3 giới thiệu tổng quan về các vấn đề của kiểm thử dựa trên mô hình Các giải pháp thay thế “A/B” ở các lá cho thấy các lựa chọn thay thế lẫn nhau, trong khi các đường cong chỉ ra các lựa chọn thay thế không nhất thiết loại trừ lẫn nhau (ví dụ, một số công cụ
có thể sử dụng nhiều hơn một công nghệ để tạo kiểm thử, việc này khá phổ biến và để hỗ trợ một số loại tiêu chí lựa chọn kiểm thử)
Bước 1 (xây dựng mô hình) được thể hiện qua ba tham số trong danh mục đặc tả mô
hình: phạm vi, các đặc điểm và mô hình hóa mô hình
Bước 2 và 3 (lựa chọn tiêu chí kiểm thử và xây dựng đặc tả các trường hợp kiểm
thử) được phản ánh qua khối lựa chọn tiêu chí kiểm tra trong mục tạo kiểm thử
Bước 4 (tạo kiểm thử) được thể hiện qua khối công nghệ trong mục tạo kiểm thử
Trang 12Bước 5 (thực hiện kiểm thử) được thể hiện bởi khối on/offline của mục thực thi
kiểm thử
Các quan điểm khác nhau dẫn đến việc phân loại kiểm thử dựa trên mô hình mà không bắt đầu từ phương pháp, tất nhiên nó vẫn được chứng minh là đúng đắn Ví dụ, có thể phân loại dựa trên các đối tượng khác nhau được phát triển hoặc sử dụng trong quá trình như: các mô hình, các đặc tả kiểm thử, các trình điều khiển thử nghiệm, thuộc tính, kiểm thử, Nguyên nhân cho quyết định sử dụng phương pháp như cơ sở vì dễ dàng phù hợp với các hoạt động của phương pháp và do đó nó không phải là khái niệm phân loại đầy đủ Tất nhiên, không có nghĩa là phân loại khác cũng không có giá trị
2.3 Lập mô hình cho hệ thống
Mô hình là một sự biểu đồ hóa mô tả chi tiết hệ thống, đồng thời mô tả chi tiết các khía cạnh, các đặc tính của hệ thống Các mô hình phải nhỏ so với kích thước của hệ thống, rằng chúng ta có thể kiểm thử nó mà không mất quá nhiều chi phí, nhưng chúng phải đủ chi tiết để mô tả thực tế và các đặc điểm cần kiểm thử
Khi xây dựng mô hình chúng ta cần thêm các trường hợp kiểm thử để xác định mô hình theo yêu cầu sau đó chạy các trường hợp thử nghiệm tương tự, nhằm xác minh thêm mức độ phủ của mô hình
2.3.1 Mô hình kiểm thử trong Simulink
Mô hình kiểm thử Simulink hay còn gọi là Simulink Test cung cấp các công cụ nhằm soạn thảo, quản lý và thực hiện các thử nghiệm có hệ thống, mô phỏng dựa trên các mô hình, tạo code và mô phỏng phần cứng vật lý Nó bao gồm một khối Test Sequence cho phép xây dựng các chuỗi kiểm tra và đánh giá mức độ phức tạp và một Trình quản lý kiểm tra để quản lý và thực thi các kiểm tra
Simulink test cho phép thực hiện các chức năng tương đương bao gồm các phần mềm, bộ xử lý, và phần cứng thời gian thực trong vòng lặp Ta có thể áp dụng các tiêu chí pass/ fail bao gồm các độ phủ tuyệt đối, tương đối và có giới hạn trong vùng kiểm tra logic
và các điều kiện về thời gian.Việc thiết lập kịch bản giúp chúng ta có thể tùy chỉnh trong quá trình kiểm tra
Ta có thể tạo các bộ khai thác kiểm thử để kiểm tra các thành phần trong mô hình hệ thống hoặc trong một mô hình thử nghiệm riêng biệt Sau đó có thể lưu trữ các trường hợp thử nghiệm và kết quả của chúng, tạo ra một kho lưu trữ để xem xét và kiểm tra các lỗi, từ
Trang 13đó tạo báo cáo, lưu trữ và tra cứu lại kết quả kiểm tra, chạy lại các kiểm tra không thành công và gỡ lỗi các thành phần hệ thống đang thử nghiệm
2.3.2 Yêu cầu/ đặc tả của mô hình
Simulink cung cấp một môi trường rất mạnh trong việc mô hình hóa và mô phỏng các hệ thống và quy trình động Trong nhiều hệ thống, các chức năng và chế độ phải thay đổi phù hợp với các sự kiện có thể xảy ra và các điều kiện phát triển theo thời gian Do đó, môi trường ứng dụng cần phải đáp ứng được sự phù hợp trong ngôn ngữ theo nhiều chế độ
và điều kiện phát triển Ví dụ sau cho thấy cách để mô hình một hệ thống truyền động ô tô với Simulink
B1: Phân tích và vật lý hóa mô hình
Mô hình được thảo luận trong ví dụ này trực tiếp triển khai các khối dưới dạng các
hệ thống con Mặt khác, tính logic và các quyết định được tạo ra trong trong thiết bị điều khiển truyền dẫn được xây dựng theo các công thức chính xác Vì vậy việc giám sát trạng thái theo các sự kiện tương ứng với mối quan hệ quan trọng trong hệ thông và thực hiện các hành động thích hợp khi chúng xảy ra
Hình 2.2: Ví dụ sơ đồ khối hệ thống truyền lực
B2: Mô hình hóa
Việc mô hình hóa được thực hiện trong Matlab Các điều kiện ban đầu được tạo ra trong không gian mô hình Hình vẽ thể hiện mức cao nhất của mô hình Chạy mô phỏng mô hình, tham khảo các thành phần cấu trúc dữ liệu được tham chiếu đến