Mục tiêucủa kiểm thử phần mềm là đảm bảo rằng hệ thống phần mềm hoạt động đúng vàđáp ứng được các yêu cầu của người dùng.Quá trình kiểm thử phần mềm thường được chia thành các giai đoạn
lOMoARcPSD|39269578 BỘ CÔNG THƯƠNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI BÀI KIỂM TRA THƯỜNG XUYÊN 1 Học phần: Kiểm thử phần mềm Lớp: IT6084.3 – 20222IT6084003 Giảng viên: Hoàng Quang Huy Sinh viên: Vũ Trí Huy Mã Sinh Viên: 2020605075 Hà Nội - 2023 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Mục lục Câu 1 (L1, 4đ): 1 1 Trình bày về Kiểm thử phần mềm Nêu một số rủi ro nếu Hệ thống phần mềm, dịch vụ phần mềm không được kiểm thử đầy đủ 1 2 Các kỹ năng của người kiểm thử phần mềm: .3 Câu 2 (L1, 6đ) 4 1 Trình bày về Kiểm thử hộp trắng trong các ứng dụng / dịch vụ web .4 2 Cho 2 chương trình trong thư mục file Ex1(a) 5 3 Trình bày Kiểm thử tương thích web, cho ví dụ 6 Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Câu 1 (L1, 4đ): 1 Trình bày về Kiểm thử phần mềm Nêu một số rủi ro nếu Hệ thống phần mềm, dịch vụ phần mềm không được kiểm thử đầy đủ Khái niệm: Kiểm thử phần mềm là quá trình kiểm tra và đánh giá tính năng, chất lượng và hiệu suất của một hệ thống phần mềm hoặc dịch vụ phần mềm Mục tiêu của kiểm thử phần mềm là đảm bảo rằng hệ thống phần mềm hoạt động đúng và đáp ứng được các yêu cầu của người dùng Quá trình kiểm thử phần mềm thường được chia thành các giai đoạn khác nhau, bao gồm: 1 Kiểm thử đơn vị: Kiểm thử viên kiểm tra các đơn vị cơ bản của mã nguồn, chẳng hạn như các hàm, lớp và thành phần cụ thể khác, để đảm bảo rằng chúng hoạt động đúng cách 2 Kiểm thử tích hợp: Kiểm thử viên kiểm tra các thành phần của hệ thống phần mềm hoặc dịch vụ phần mềm được tích hợp với nhau để đảm bảo tính tương thích và tính hợp nhất của hệ thống 3 Kiểm thử hệ thống: Kiểm thử viên kiểm tra toàn bộ hệ thống phần mềm hoặc dịch vụ phần mềm để đảm bảo tính đúng đắn, hiệu quả và bảo mật của hệ thống Điều này bao gồm kiểm tra các tính năng chính của hệ thống, tương tác giữa các thành phần, hiệu suất và tính bảo mật của hệ thống 4 Kiểm thử chấp nhận: Kiểm thử viên kiểm tra hệ thống phần mềm hoặc dịch vụ phần mềm với khách hàng hoặc người dùng cuối để đảm bảo rằng hệ thống đáp ứng được các yêu cầu của người dùng và hoạt động đúng cách Trong quá trình kiểm thử phần mềm, kiểm thử viên sử dụng các kỹ thuật và công cụ phần mềm khác nhau để phát hiện và báo cáo các lỗi, vấn đề và sự cố khác trong hệ thống phần mềm hoặc dịch vụ phần mềm Khi nào bắt đầu kiểm thử? Quá trình kiểm thử phần mềm có thể bắt đầu từ giai đoạn phát triển sớm nhất của dự án phần mềm và kéo dài đến khi hệ thống phần mềm hoặc dịch vụ phần mềm được triển khai hoặc phát hành Điều này bao gồm việc kiểm thử từng phần của mã Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 nguồn, tích hợp các thành phần của hệ thống phần mềm và kiểm thử hệ thống phần mềm hoàn chỉnh trước khi đưa hệ thống vào hoạt động Tuy nhiên, việc bắt đầu kiểm thử phần mềm phụ thuộc vào nhiều yếu tố, bao gồm: 1 Yêu cầu của dự án: Kiểm thử phần mềm có thể bắt đầu từ giai đoạn phát triển sớm nhất của dự án nếu yêu cầu của dự án đòi hỏi 2 Khả năng kiểm thử: Việc bắt đầu kiểm thử phần mềm phụ thuộc vào khả năng của đội ngũ kiểm thử, bao gồm tài nguyên, kỹ năng và công cụ kiểm thử 3 Sự phát triển của mã nguồn: Việc bắt đầu kiểm thử phần mềm phụ thuộc vào sự phát triển của mã nguồn, bao gồm mức độ hoàn thiện, tính ổn định và tính đúng đắn của mã nguồn 4 Thời gian và ngân sách: Việc bắt đầu kiểm thử phần mềm cũng phụ thuộc vào thời gian và ngân sách của dự án, bao gồm thời gian để hoàn thành kiểm thử và ngân sách để đảm bảo rằng đội ngũ kiểm thử có đủ tài nguyên và công cụ để thực hiện kiểm thử Vì vậy, việc bắt đầu kiểm thử phần mềm cần được tính toán và lên kế hoạch kỹ lưỡng để đảm bảo rằng quá trình kiểm thử được thực hiện đúng thời gian và đáp ứng được yêu cầu của dự án Một số rủi ro nếu Hệ thống phần mềm, dịch vụ phần mềm không được kiểm thử đầy đủ: Nếu hệ thống phần mềm hoặc dịch vụ phần mềm không được kiểm thử đầy đủ, có thể gây ra các rủi ro và hậu quả nghiêm trọng, bao gồm: 1 Khả năng xuất hiện các lỗi, vấn đề và sự cố: Nếu hệ thống phần mềm hoặc dịch vụ phần mềm không được kiểm thử đầy đủ, có thể gây ra sự cố, lỗi hoặc vấn đề khác trong hệ thống, điều này có thể dẫn đến gián đoạn trong hoạt động của hệ thống, tiêu tốn thời gian và tài nguyên để sửa chữa 2 Ảnh hưởng đến hiệu suất của hệ thống: Nếu hệ thống phần mềm hoặc dịch vụ phần mềm không được kiểm thử đầy đủ, hiệu suất của hệ thống có thể bị giảm, gây ra tốc độ xử lý chậm, tăng thời gian đáp ứng, và dẫn đến trải nghiệm người dùng kém Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 3 Tiềm ẩn sự cố bảo mật: Nếu hệ thống phần mềm hoặc dịch vụ phần mềm không được kiểm thử đầy đủ, có thể gây ra các lỗ hổng bảo mật, đe dọa tính bảo mật của hệ thống và dữ liệu người dùng, điều này có thể dẫn đến mất cắp thông tin và ảnh hưởng đến danh tiếng của hệ thống 4 Chi phí tăng cao: Nếu hệ thống phần mềm hoặc dịch vụ phần mềm không được kiểm thử đầy đủ, có thể gây ra chi phí cao để sửa chữa và tái thiết kế hệ thống, điều này có thể ảnh hưởng đến ngân sách của dự án và đội ngũ phát triển phần mềm 5 Mất khách hàng: Nếu hệ thống phần mềm hoặc dịch vụ phần mềm không đáp ứng được yêu cầu và mong đợi của người dùng, điều này có thể dẫn đến mất khách hàng và ảnh hưởng đến danh tiếng của hệ thống Do đó, việc kiểm thử phần mềm là rất quan trọng để đảm bảo tính đúng đắn, hiệu quả và bảo mật của hệ thống phần mềm hoặc dịch vụ phần mềm Một số ví dụ thực tế về rủi ro có thể xảy ra nếu hệ thống phần mềm hoặc dịch vụ phần mềm không được kiểm thử đầy đủ: 1 Vụ việc của Boeing 737 Max: Boeing 737 Max là một loại máy bay phản lực nổi tiếng của hãng Boeing Trong khi đang sử dụng, hai chuyến bay đã bị tai nạn, toàn bộ 346 hành khách đã thiệt mạng Các điều tra sau đó đã chỉ ra rằng một lỗi trong hệ thống phần mềm điều khiển máy bay đã dẫn đến tai nạn Lỗi này chưa được phát hiện trong quá trình kiểm thử phần mềm và dẫn đến hậu quả nghiêm trọng 2 Vụ việc của Equifax: Equifax là một trong những công ty phục vụ cho ngành công nghiệp bảo mật và xử lý thông tin cá nhân Năm 2017, Equifax đã bị tấn công mạng và thông tin cá nhân của hơn 140 triệu người dùng đã bị đánh cắp Điều đáng ngạc nhiên là lỗ hổng bảo mật trong hệ thống phần mềm của Equifax đã được phát hiện và báo cáo trước đó, nhưng công ty đã không thực hiện đầy đủ các biện pháp bảo mật để khắc phục lỗi này 3 Vụ việc của Apple với FaceTime: Vào năm 2019, một lỗi trong ứng dụng FaceTime của Apple đã được phát hiện, cho phép người dùng nghe được âm thanh từ các cuộc gọi trước đó mà không cần phải chấp nhận cuộc gọi Lỗi này đã được Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 phát hiện trên iOS 12.1 và đã gây ra một số phản ứng tiêu cực từ người dùng Apple đã đưa ra một bản vá để khắc phục lỗi , nhưng vẫn là một ví dụ về rủi ro khi hệ thống phần mềm không được kiểm thử đầy đủ 4 Các kỹ năng của người kiểm thử phần mềm: Kỹ năng phi kỹ thuật Để trở thành một người kiểm thử phần mềm giỏi, cần phải có các kỹ năng sau: 1 Kỹ năng phân tích: Có khả năng phân tích sắc bén để chia nhỏ hệ thống phần mềm phức tạp thành các đơn vị nhỏ hơn để hiểu rõ hơn và tạo ra các trường hợp kiểm thử 2 Kỹ năng giao tiếp: Có khả năng giao tiếp tốt bằng lời nói và văn bản để tạo ra các tài liệu kiểm thử dễ đọc và dễ hiểu, và đối phó với các nhà phát triển và các bên liên quan khác 3 Kỹ năng tổ chức và quản lý thời gian: Có khả năng quản lý hiệu quả khối lượng công việc, có năng suất cao, và thể hiện khả năng quản lý thời gian tối ưu và kỹ năng tổ chức 4 Thái độ: Có thái độ tích cực, sẵn sàng kiểm thử để phá vỡ, định hướng chi tiết, sẵn sàng học hỏi và đề xuất cải tiến quy trình, và có thể làm việc độc lập trong việc hoàn thành nhiệm vụ được giao 5 Niềm đam mê: Có niềm đam mê với lĩnh vực kiểm thử phần mềm, và có khả năng xác định và duy trì đam mê này trong công việc kiểm thử phần mềm Ngoài ra, việc nâng cấp kỹ năng kiểm thử phần mềm kỹ thuật theo các công nghệ mới là điều cần thiết để luôn cải 琀椀ến và phát triển trong ngành công nghiệp phần mềm Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Kĩ năng kĩ thuật Kĩ năng phân 琀ch Đam mê NGƯỜI KIỂM Thái độ THỬ TỐT Năng suât Giao 琀椀ếp bằng lời nói và bằng văn bản Kỹ năng phi kỹ thuật của người kiểm thử phần mềm Kĩ năng công nghệ 1 Cơ sở dữ liệu/SQL: Kiến thức cơ bản về cơ sở dữ liệu và ngôn ngữ truy vấn SQL, bao gồm khả năng thực hiện các truy vấn SQL đơn giản hoặc phức tạp để xác thực dữ liệu trong các loại cơ sở dữ liệu như Oracle, MySQL, v.v 2 Các lệnh Linux: Kiến thức về các lệnh cơ bản trong hệ điều hành Linux, bao gồm khả năng sử dụng các lệnh để triển khai và quản lý các ứng dụng phổ biến như dịch vụ web, cơ sở dữ liệu, máy chủ ứng dụng trên môi trường Linux 3 Công cụ quản lý kiểm tra: Kiến thức và kinh nghiệm về các công cụ quản lý kiểm tra, bao gồm khả năng lập kế hoạch, tổ chức, theo dõi và báo cáo về quá trình kiểm thử phần mềm 4 Quản lý kiểm thử: Kiến thức và kinh nghiệm về các công cụ quản lý kiểm thử phổ biến như QC, Bugzilla, Jira, v.v., để lập kế hoạch, tổ chức, theo dõi và báo cáo quá trình kiểm thử phần mềm một cách hiệu quả Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 5 Theo dõi lỗi: Kiến thức và kinh nghiệm về các công cụ theo dõi lỗi như QC, Bugzilla, Jira, v.v., để quản lý các lỗi phát hiện trong quá trình kiểm thử phần mềm 6 Tự động hóa: Kiến thức và kinh nghiệm về các công cụ tự động hóa kiểm thử phổ biến như Selenium, Appium, Cucumber, v.v., để thực hiện tự động hóa các hoạt động kiểm thử phần mềm, từ đó tăng cường hiệu quả và độ chính xác của quá trình kiểm thử 7 Kiến thức về bất kỳ ngôn ngữ kịch bản nào: VBScript, JavaScript , C# luôn hữu ích với tư cách là người kiểm thử nếu bạn đang tìm kiếm một công việc về tự động hóa Rất ít công ty cũng sử dụng tập lệnh Shell/ Perl và có rất nhiều nhu cầu về người kiểm thử có kiến thức tương tự Sofware Selenium Jmeter Test Link Tes琀椀ng Apply for Permanent Jobs Apply for Freelancing Jobs Quy trình để trở thành So昀琀ware Tester Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Câu 2 (L1, 6đ) 1 Trình bày về Kiểm thử hộp trắng trong các ứng dụng / dịch vụ web Khái Niệm: Kiểm thử hộp trắng (white box testing) là một phương pháp kiểm thử phần mềm trong đó các kiểm thử viên có kiến thức về cấu trúc, thiết kế và mã nguồn của phần mềm Các kiểm thử viên sử dụng kiến thức này để tạo ra các ca kiểm thử dựa trên nội bộ của ứng dụng, bao gồm cả mã nguồn và cấu trúc dữ liệu Kiểm thử hộp trắng thường được sử dụng để đảm bảo tính logic và tính toàn vẹn của phần mềm, xác định các lỗi truy cập cơ sở dữ liệu và đảm bảo rằng mã nguồn được tối ưu hóa Phương pháp này có thể được thực hiện bằng cách sử dụng các công cụ như Debugging, Unit testing, Integration testing và Code review Các loại kiểm thử hộp trắng thường được sử dụng trong ứng dụng/dịch vụ web bao gồm: 1 Kiểm thử đơn vị (Unit Testing): Kiểm thử đơn vị là phương pháp kiểm thử phần mềm tập trung vào việc kiểm tra các đơn vị code, chẳng hạn như các phương thức hoặc hàm, để đảm bảo rằng chúng hoạt động đúng và tuân thủ các yêu cầu kỹ thuật Các framework kiểm thử đơn vị phổ biến cho ứng dụng/dịch vụ web bao gồm JUnit, NUnit và PHPUnit 2 Kiểm thử tích hợp (Integration Testing): Kiểm thử tích hợp là phương pháp kiểm thử phần mềm tập trung vào việc kiểm tra tích hợp giữa các thành phần của ứng dụng/dịch vụ web Kiểm thử tích hợp được sử dụng để đảm bảo rằng các thành phần hoạt động đúng cách khi được kết hợp với nhau Các kỹ thuật kiểm thử tích hợp phổ biến bao gồm kiểm thử top-down và kiểm thử bottom-up 3 Kiểm thử hồi quy (Regression Testing): Kiểm thử hồi quy là phương pháp kiểm thử phần mềm tập trung vào việc kiểm tra ứng dụng/dịch vụ web sau khi đã thay đổi hoặc sửa lỗi để đảm bảo rằng các tính năng cũ vẫn hoạt động đúng cách Các công cụ kiểm thử tự động phổ biến cho kiểm thử hồi quy bao gồm Selenium và Appium 4 Kiểm thử phân tích (Static Analysis Testing): Kiểm thử phân tích là phương pháp kiểm thử phần mềm tập trung vào việc kiểm tra mã nguồn và các tài liệu thiết kế Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 để phát hiện lỗi trước khi ứng dụng/dịch vụ web được triển khai Các công cụ kiểm thử phân tích phổ biến bao gồm SonarQube và Checkstyle 5 Kiểm thử bảo mật (Security Testing): Kiểm thử bảo mật là phương pháp kiểm thử phần mềm tập trung vào việc kiểm tra các lỗ hổng bảo mật trong ứng dụng/dịch vụ web để đảm bảo rằng chúng không bị tấn công hoặc bị xâm nhập bởi hacker Các công cụ kiểm thử bảo mật phổ biến bao gồm Ness Các bước để kiểm thử hộp trắng trong ứng dụng/ dịch vụ web: 1 Phân tích mã nguồn: Đọc và hiểu mã nguồn để xác định các khối mã chính và các phần cần kiểm thử 2 Thiết kế ca kiểm thử: Xác định các ca kiểm thử dựa trên phân tích mã nguồn, tạo các bộ dữ liệu kiểm thử phù hợp 3 Thực hiện kiểm thử: Chạy các ca kiểm thử đã thiết kế và ghi nhận các kết quả kiểm thử 4 Đánh giá kết quả kiểm thử: Kiểm tra kết quả kiểm thử và xác định các lỗi cần sửa chữa 5 Lặp lại các bước trên để đảm bảo kiểm thử đầy đủ Ví dụ cụ thể chi tiết: - Dùng kiểm thử hộp trắng có thể liên quan đến việc kiểm tra hàm tính tổng của hai số nguyên trong ứng dụng web Dưới đây là một đoạn mã JavaScript để tính tổng của hai số nguyên: function sum(a, b) { return a + b; } - Để kiểm thử hộp trắng cho hàm này, ta có thể sử dụng bộ kiểm thử với các giá trị đầu vào và kết quả mong đợi như sau: test("sum function adds two numbers", () => { expect(sum(1, 2)).toBe(3); expect(sum(-1, 1)).toBe(0); expect(sum(100, 200)).toBe(300); }); Trong đoạn mã trên, ta đã sử dụng thư viện Jest để viết bộ kiểm thử cho hàm sum() Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 Bộ kiểm thử bao gồm ba ca kiểm thử với các giá trị đầu vào khác nhau và kết quả mong đợi tương ứng Nếu hàm sum() hoạt động đúng, các kết quả mong đợi sẽ khớp với kết quả thực tế được trả về từ hàm Các bước kiểm thử hộp trắng cho ví dụ này bao gồm: 1 Phân tích mã nguồn của hàm sum() để xác định các chức năng và các lỗi tiềm ẩn 2 Thiết kế bộ kiểm thử bằng các giá trị đầu vào và kết quả mong đợi 3 Thực hiện kiểm thử bằng cách sử dụng bộ kiểm thử đã thiết kế 4 Đánh giá kết quả kiểm thử và sửa chữa các lỗi phát hiện được Trong ví dụ này, các bước kiểm thử hộp trắng đã được thực hiện bằng cách sử dụng Jest và các phương thức kiểm thử của nó, giúp đảm bảo tính đúng đắn và ổn định của hàm sum() 2 Cho 2 chương trình trong thư mục file Ex1(a) Giả sử ta có một đối tượng Employee như đã mô tả ở trên Một số kịch bản kiểm thử có thể được thực hiện như sau: - Kiểm tra tính chính xác của hàm calculatePay(): + Gọi hàm calculatePay() trên đối tượng vừa tạo + So sánh giá trị của các thuộc tính grossPay, tax và netPay với giá trị mong đợi dựa trên giá trị đầu vào của đối tượng Employee - Kiểm tra tính chính xác của việc tính toán giờ làm việc quá giờ và trả lương tăng ca: + Thiết lập giá trị của thuộc tính giờ làm việc để vượt qua ngưỡng 40 giờ + So sánh giá trị của thuộc tính tax và netPay với giá trị mong đợi dựa trên giá trị grossPay - Kiểm tra tính chính xác của việc tính toán thuế: + Thiết lập giá trị của thuộc tính grossPay để vượt qua ngưỡng $200 + So sánh giá trị của thuộc tính tax và netPay với giá trị mong đợi dựa trên giá trị grossPay - Kiểm tra tính chính xác của việc tính toán lương khi giờ làm việc không vượt qua Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 ngưỡng 40 giờ: + Thiết lập giá trị của thuộc tính giờ làm việc để không vượt qua ngưỡng 40 giờ + So sánh giá trị của thuộc tính grossPay, tax và netPay với giá trị mong đợi dựa trên giá trị Bảng kết quả sau khi sửa lỗi Test Name Hours Rate Gross Tax Net Pay 1 ADAMS 35 5.00 175.0 0.0 175.0 2 BAKER 40 5.00 200.0 0.0 200.0 3 CAIRNS 44 5.00 230.0 6.0 224.0 4 DONALD 20 6.00 120.0 0.0 120.0 3 Trình bày Kiểm thử tương thích web, cho ví dụ Khái niệm: Kiểm thử tương thích là một loại Kiểm thử phần mềm để kiểm tra xem phần mềm của bạn có khả năng chạy trên các phần cứng, hệ điều hành, ứng dụng, môi trường mạng hoặc thiết bị di động khác nhau hay không Tầm quan trọng của kiểm thử tương thích web: - Nó đảm bảo sự hài lòng hoàn toàn của khách hàng - Nó cung cấp dịch vụ trên nhiều nền tảng - Xác định lỗi trong quá trình phát triển Các loại kiểm thử tương thích: Giống như kiểm tra phi chức năng, kiểm thử tương thích được tách biệt thành một số loại Bao gồm các: - Kiểm thử tương thích phần cứng - Kiểm thử tương thích mạng - Kiểm thử tương thích của hệ điều hành - Kiểm thử tương thích thiết bị Downloaded by SAU SAU (saudinh1@gmail.com) lOMoARcPSD|39269578 - Kiểm thử tương thích di động - Kiểm tra khả năng tương thích của trình duyệt - Kiểm thử tương thích phần mềm - Kiểm thử tương thích phiên bản Cách thực hiện kiểm thử tương thích: - Giai đoạn ban đầu của kiểm thử tương thích là xác định tập hợp các môi trường hoặc nền tảng mà ứng dụng dự kiến sẽ hoạt động trên đó - Người kiểm thử phải có đủ kiến thức về nền tảng/phần mềm/phần cứng để hiểu hành vi dự kiến của ứng dụng trong các cấu hình khác nhau - Môi trường cần được thiết lập để kiểm thử với các nền tảng, thiết bị, mạng khác nhau để kiểm tra xem ứng dụng của bạn có chạy tốt với các cấu hình khác nhau hay không - Báo cáo các lỗi Sửa chữa các khiếm khuyết Kiểm tra lại để xác nhận Sửa lỗi Downloaded by SAU SAU (saudinh1@gmail.com)