Thạc Sĩ Các kỹ thuật kiểm thử phần mềm nhúng và ứng dụng

Thảo luận trong 'THẠC SĨ - TIẾN SĨ' bắt đầu bởi Phí Lan Dương, 1/8/15.

  1. Phí Lan Dương

    Phí Lan Dương New Member
    Thành viên vàng

    Bài viết:
    18,524
    Được thích:
    18
    Điểm thành tích:
    0
    Xu:
    0Xu
    3


    MỤC LỤC
    LỜI CẢM ƠN . 1
    LỜI CAM ĐOAN . 2
    MỤC LỤC . 3
    DANH SÁCH CÁC BẢNG 5
    DANH SÁCH CÁC HÌNH . 6
    MỞ ĐẦU 7
    CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM 8
    1.1 Khái niệm kiểm thử phần mềm (Software Testing) 8
    1.2 Mục đích của kiểm thử phần mềm . 8
    1.3 Quy trình kiểm thử phần mềm cơ bản . 8
    1.3.1 Tình huống kiểm thử (Test Case) 8
    1.3.2 Kịch bản kiểm thử (Test Script) 9
    1.3.3 Quy trình kiểm thử phần mềm . 9
    1.3.3.1 Lập kế hoạch kiểm thử . 9
    1.3.3.2 Thiết kế kiểm thử 10
    1.3.3.3 Phát triển kịch bản kiểm thử 11
    1.3.3.4 Thực hiện kiểm thử . 11
    1.3.3.5 Đánh giá quá trình kiểm thử 12
    1.4 Các mức kiểm thử phần mềm . 12
    1.4.1 Kiểm thử đơn vị (Unit Test) 13
    1.4.2 Kiểm thử tích hợp (Integration Test) . 13
    1.4.3 Kiểm thử hệ thống (System Test) 14
    1.4.4 Kiểm thử chấp nhận (Acceptance Test) . 15
    1.4.5 Một số cấp độ kiểm thử khác . 16
    1.5 Một số chiến lược kiểm thử . 16
    1.5.1 Kiểm thử hộp trắng (White-box Testing) 16
    1.5.2 Kiểm thử hộp đen (Black-box Testing) . 17
    1.5.3 Kiểm thử hộp xám(Gray box testing) 17
    CHƯƠNG 2: CÁC KỸ THUẬT KIỂM THỬ PHẦN MỀM NHÚNG 18
    2.1 Tổng quan về hệ thống nhúng và phần mềm nhúng . 18
    2.1.1 Hệ thống nhúng 18
    2.1.2 Phần mềm nhúng . 19
    2.2 Vòng đời phát triển phần mềm nhúng . 20
    2.2.1 Giới thiệu . 20
    2.2.2 Hình thành mô hình đa chữ V (Multiple V-model) 20
    2.2.3 Kế hoạch kiểm thử tổng thể . 24
    2.2.3.1 Các thành phần của kế hoạch kiểm thử tổng thể . 24
    2.2.3.2 Hoạt động lập kế hoạch kiểm thử tổng thể 25
    2.2.4 Kiểm thử bởi lập trình viên 28
    2.2.5 Kiểm thử bởi nhóm người kiểm tra độc lập . 28 4


    2.3 Các kỹ thuật kiểm thử phần mềm nhúng . 28
    2.3.1 Chiến lược đánh giá rủi ro (Risk-base test strategy) . 28
    2.3.1.1 Giới thiệu 28
    2.3.1.2 Chiến lược kiểm thử trong lập kế hoạch kiểm thử tổng thể . 30
    2.3.1.3 Chiến lược kiểm thử cho một mức thử . 30
    2.3.1.4 Chiến lược thay đổi trong quá trình thử nghiệm . 31
    2.3.1.5 Chiến lược kiểm tra bảo trì 32
    2.3.2 Xem xét khả năng kiểm thử (Testability Review) . 32
    2.3.2.1 Giới thiệu 32
    2.3.2.2 Thủ tục 32
    2.3.3 Thanh tra (Inspections) 33
    2.3.3.1 Giới thiệu 33
    2.3.3.2 Thủ tục 33
    2.3.4 Phân tích an toàn (Safety Analysis) . 34
    2.3.4.1 Giới thiệu 34
    2.3.4.2 Các kỹ thuật phân tích an toàn 34
    2.3.5 Danh sách kiểm tra (Checklists) 35
    2.3.6 Các kỹ thuật thiết kế kiểm thử (Test Design Techniques) . 35
    2.3.6.1 Kiểm thử sự chuyển tiếp trạng thái (State Transition Testing – STT) 36
    2.3.6.2 Kiểm thử điều khiển luồng (Control Flow Test) 37
    2.3.6.3 Kiểm thử so sánh cơ bản (Elementary Comparison Test – ECT)38
    2.3.6.4 Phương pháp phân loại cây (Classification-Tree Method – kCTM)38
    2.4 So sánh các kỹ thuật kiểm thử phần mềm nhúng với kiểm thửphần mềm nói
    chung 39
    CHƯƠNG 3: THỰC NGHIỆM . 41
    3.1 Một số công cụ được dùng trong kiểm thử phần mềm nhúng . 41
    3.1.1 Giới thiệu về trình biên dịch CodeWarrior 41
    3.1.2 Giới thiệu về công cụ JTAG (Joint Test Action Group) . 42
    3.1.3 Giới thiệu về chuẩn SWD (Serial Wire Debug) 43
    3.2Tổng quan về mạch MKL46Z256 và phần mềm điều khiển chuẩn (Standard
    Software Driver - SSD) 44
    3.2.1 Tổng quan về mạch MKL46Z256 . 44
    3.2.2 Phần mềm điều khiển chuẩn cho mô-đun Flash của mạch MKL46Z256
    (Standar Software Driver – SSD) 45
    3.2.3 Thiết kế tình huống kiểm thử cho phần mềm SSD 46
    3.3 Thiết lập môi trường kiểm thử 50
    3.4 Demo chương trình . 51
    3.5 Kết quả thực hiện chương trình kiểm thử . 53
    KẾT LUẬN . 54
    PHỤ LỤC 55
    Phụ lục A: Tài liệu thiết kế chi tiết của phần mềm SSD . 55
    Phụ lục B: Danh sách test case của từng hàm trong phần mềm SSD 68
    TÀI LIỆU THAM KHẢO 72 5


    DANH SÁCH CÁC BẢNG
    Bảng 1: Các giá trị trả về của hàm FlashCommandSequence() 55
    Bảng 2: Các giá trị trả về của hàm FlashEraseAllBlock() 57
    Bảng 3: Các giá trị trả về của hàm FlashEraseSector() 58
    Bảng 4: Các giá trị trả về của hàm FlashVerifyAllBlock() 60
    Bảng 5: Các giá trị trả về của hàm FlashVerifySection() . 61
    Bảng 6: Các giá trị trả về của hàm FlashProgramCheck() 63
    Bảng 7: Các giá trị trả về của hàm FlashProgramLongword() . 65
    Bảng 8: Các giá trị trả về của hàm PFlashGetProtection() . 67
    Bảng 9: Các giá trị trả về của hàm PFlashSetProtection() 68

    6


    DANH SÁCH CÁC HÌNH
    Hình 1. 1: Một quy trình kiểm thử phần mềm cơ bản . 9
    Hình 1. 2: Thời điểm phù hợp để thiết lập các kế hoạch kiểm thử . 9
    Hình 1. 3: Các mức độ cơ bản của kiểm thử phần mềm . 13
    Hình 1. 4: Các loại kiểm thử khác nhau trong kiểm thử hệ thống 15
    Hình 1. 5: Kiểm thử hộp trắng 17
    Hình 1. 6: Kiểm thử hộp đen . 17
    Hình 2. 1: Ví dụ về ứng dụng của hệ thống nhúng . 19
    Hình 2. 2: Vòng phát triển theo mô hình đa chữ V . 21
    Hình 2. 3 : Mô hình đa chữ V lồng . 22
    Hình 2. 4 : Xác định các vấn đề liên quan trong vòng đời phát triển của mô hình 22
    Hình 2. 5: Xác định các vấn đề liên quan trong vòng đời phát triển của nguyên mẫu
    . 23
    Hình 2. 6: Xác định các vấn đề liên quan trong vòng đời phát triển của sản phẩm
    cuối cùng 23
    Hình 2. 7: Xử lý rủi ro . 30
    Hình 2. 8: Mối quan hệ giữa nguyên nhân, chức năng, chế độ thất bại và kết quả 34
    Hình 2. 9: Biểu đồ trạng thái của hệ thống Telephone cho ca “gọi điện thoại” . 37
    Hình 3. 1: Giao diện CodeWarrior 41
    Hình 3. 2: Giao diện Debugger cho CodeWarrior 42
    Hình 3. 3: Sơ đồ kiến trúc JTAG 43
    Hình 3. 4: Bản đồ bộ nhớ Flash 44
    Hình 3. 5: Sơ đồ khối Flash 45
    Hình 3. 6: Sơ đồ khối của hàm FlashEraseSector() 47
    Hình 3. 7: Thiết lập môi trường kiểm thử . 51
    Hình 3. 8: Giao diện chứa chương trình kiểm thử của phần mềm SSD . 51
    Hình 3. 9: Thiết lập kết nối để debug chương trình 52
    Hình 3. 10: Thực hiện debug chương trình kiểm thử cho hàm
    FlashProgramLongword 52
    Hình 3. 11: Kết quả thực hiện chương trình được trả về qua biến testResult . 53
    Hình A. 1: Sơ đồ khối của hàm FlashCommandSequence() 56
    Hình A. 2: Sơ đồ khối của hàm FlashEraseAllBlock() . 57
    Hình A. 3: Sơ đồ khối của hàm FlashEraseSector() . 59
    Hình A. 4: Sơ đồ khối của hàm FlashVerifyAllBlock() . 60
    Hình A. 5: Sơ đồ khối của hàm FlashVerifySection() 62
    Hình A. 6: Sơ đồ khối của hàm FlashProgramCheck() 64
    Hình A. 7: Sơ đồ khối của hàm FlashProgramLongword() 66
    Hình A. 8: Sơ đồ khối của hàm PFlashGetProtection() 67
    Hình A. 9: Sơ đồ khối của hàm PFlashSetProtection() . 68 7


    MỞ ĐẦU
    Ngày nay 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 với rất nhiều ứng dụng trong công nghiệp và đời
    sống. Từ những hệ thống phức tạp như hàng không vũ trụ, phòng thủ quân sự, máy
    móc tự động trong công nghiệp, đến những phương tiện di chuyển thông thường như
    máy bay, xe điện, xe hơi, các trang thiết bị y tế trong bệnh viện, cho tới những thiết bị
    truyền hình và điện thoại di động được sử dụng hằng ngày, đâu đâu cũng có sự hiện
    diện của hệ thống nhúng.
    Để phát triển các hệ thống nhúng thì vấn đề lập trình và kiểm thử các phần mềm
    nhúng trước khi được tích hợp vào các hệ thống nhúng là phần rất quan trọng. Việc
    kiểm thử các phần mềm nhúng đóng vai trò quan trọng trong việc đảm bảo chất lượng,
    giảm thiểu rủi ro về các lỗi, nó mang tính sống còn của sản phẩm. Đặc biệt với những
    hệ thống nhúng đòi hỏi độ tin cậy rất cao, việc kiểm thử các hệ thống này yêu cầu cẩn
    thận, tỉ mỉ hơn so với kiểm thử phần mềm thông thường.
    Hệ thống nhúng ngàycàng được nhiều các nước trên thế giới quan tâm, nghiên
    cứu và phát triển. Tuy nhiên ở Việt Nam lĩnh vực này vẫn phát triển khá khiêm tốn so
    với thế giới, đặc biệt lĩnh vực kiểm thử phần mềm nhúng lại càng khiêm tốn hơn. Các
    tài liệu liên quan đến hoạt động kiểm thử phần mềm nhúng cũng không nhiều. Nên
    việc nghiên cứu, tìm hiểu các kỹ thuật kiểm thử phần mềm nhúng là một vấn đề cần
    thiết hiện nay. Nó sẽ góp phần thúc đẩy sự phát triển của lĩnh vực hệ thống nhúng, một
    lĩnh vực giàu tiềm năng nhưng mới chỉ bước đầu phát triển tại Việt Nam.
    Mục đích của đề tài nhằm tìm hiểu, giới thiệu về quy trình kiểm thử phần mềm
    nói chung, đặc biệt là nghiên cứu các kỹ thuật kiểm thử hệ thống nhúng. Áp dụng kiểm
    thử một phần mềm nhúng, cụ thể là phần mềm điều khiển chuẩn cho mô-đun flash của
    mạch MKL46Z256. Việc kiểm thử này sử dụng công cụ biên dịch CodeWarrior chạy
    trên môi trường Windows 7. Các chương trình được viết bằng ngôn ngữ lập trình C.
    Luận văn gồm ba chương:
    - Chương 1: Trình bày tổng quan về kiểm thử phần mềm
    - Chương 2: Nghiên cứu các kỹ thuật kiểm thử phần mềm nhúng
    - Chương 3: Tiến hành thực nghiệm kiểm thử phần mềm điều khiển chuẩn
    cho mô-đun flash của mạch MKL46Z256.
    8


    CHƯƠNG 1: TỔNG QUAN VỀ KIỂM THỬ PHẦN MỀM
    Chương này tôi tập trung tìm hiểu tổng quan về kiểm thử phần mềm, khái niệm,
    mục đích của kiểm thử phần mềm, quy trình kiểm thử phần mềm cơ bản, các mức
    kiểm thử phần mềm và một số chiến lược kiểm thử.
    1.1 Khái niệm kiểm thử phần mềm (Software Testing)
    Kiểm thử phần mềm là quá trình thực thi một chương trình với mục đích tìm
    lỗi. [4]
    Kiểm thử phần mềm là một phần quan trọng tạo nên thành công của các dự án
    phần mềm, là khâu mấu chốt để đảm bảo chất lượng phần mềm, là đánh giá cuối cùng
    về các đặc tả, thiết kế và mã hóa.
    Có thể định nghĩa một cách dễ hiểu như sau: Kiểm thử phần mềm là quá trình
    chạy thử phần mềm hay một chức năng của phần mềm xem nó chạy đúng như mong
    muốn hay không.Việc kiểm tra này có thể thực hiện từng chặng, sau mỗi chức năng
    hoặc mô-đun được phát triển, hoặc thực hiện sau cùng, khi phần mềm đã được phát
    triển hoàn tất. Trong quá trình phát triển phần mềm, những người phát triển phần mềm
    và các kỹ sư kiểm thử cùng làm việc để phát hiện lỗi và đảm bảo chất lượng sản phẩm.
    Một sản phẩm phần mềm được phân phối phải có đầy đủ các chức năng yêu cầu và
    tương thích với phần cứng của khách hàng.
    1.2 Mục đích của kiểm thử phần mềm
    Kiểm thử phần mềm nhằm vào hai mục đích chính là: Đưa ra những chứng
    nhận về chất lượng và phát hiện sửa lỗi phần mềm.Thiết kế kiểm thử là một trong
    những công cụ ngăn chặn lỗi tốt nhất được biết đến. Nó có thể phát hiện và loại bỏ lỗi
    tại mọi giai đoạn của quá trình thiết kế phần mềm, từ ý tưởng đến đặc tả, thiết kế, viết
    mã và phần còn lại.
    1.3 Quy trình kiểm thử phần mềm cơ bản
    Trước khi tìm hiểu một quy trình kiểm tra phần mềm cơ bản cần hiểu hai khái
    niệm sau: tình huống kiểm thử (Test Case) và kịch bản kiểm thử (Test Script).
    1.3.1 Tình huống kiểm thử (Test Case)
    Khi lập trình một phần mềm hay bất kỳ một cái gì thì việc dự đoán trước các
    tình huống xảy ra cho chương trình đó là rất quan trọng. Vì thế khi viết chương trình
    người kiểm thửviên thường viết trước các tình huống kiểm thử để dự đoán các trường
    hợp.
    Một tình huống kiểm thử có thể coi nôm na là một tình huống kiểm tra, được
    thiết kế để kiểm thử một đối tượng có thỏa mãn yêu cầu đặt ra hay không.
    Một tình huống kiểm thử thường bao gồm ba phần cơ bản:
     Mô tả: Đặc tả các điều kiện cần có để tiến hành kiểm thử.
     Nhập: Đặc tả đối tượng hay dữ liệu cần thiết được sử dụng làm đầu vào
    để thực hiện việc kiểm thử.
     
Đang tải...