CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI 1. Mục tiêu của đề tài - Nắm được lý thuyết kiểm thử phần mềm, kiểm thử tự động phần mềm. - Nắm được lý thuyết về công cụ kiểm thử tự động Selenium.
- Ứng dụng được công cụ Selenim IDE, Selenium RC. - Selenium Grid, Selenium Webdriver vào kiểm thử một số trang web. Giới hạn và phạm vicủa đề tài - Tập trung vào lý thuyết kiểm thử, kiểm thử tự động, công cụ Selenium. - Ứng dụng được công cụ Selenim IDE, Selenium Grid, Selenium RCSelenium Webdriver vào kiểm thử Website.
Nội dung thực hiện - Trình bày được lý thuyết kiểm thử tự động phần mềm, kiểm thử ứng dụngWebsite. - Trình bày được lý thuyết về công cụ kiểm thử tự động Selenium. - Ứng dụng được bộ công cụ kiểm thử tự động Selenium vào kiểm thử Website.Phương pháp tiếp cận - Khảo sát: Nghiên cứu các tài liệu, tìm hiểu các mô hình hệ thống bán hàng - Kế thừa: Kế thừa kết quả nghiên cứu của các giải pháp trước. - Phương pháp chuyên gia: tìm hiểu và xin ý kiến của các chuyên gia trong lĩnh vực công nghệ thông tin, các Tester có kinh nghiệm lâu năm và giảng viên có kinh nghiệm.Phần mềm là gì? Khái niệm Phần mềm là những ứng dụng chạy bên trong máy tính nhằm cung cấp các chức năng, đáp ứng các yêu cầu, công việc của người sử dụng thông qua phần cứng máy tính.
Một phần mềm thường gồm 3 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), 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, tài liệu phát triển, tài liệu tham khảo kỹ thuật… Phân loại phần mềm Dựa vào môi trường thực thi, phần mềm được chia thành các loại như sau: - Phần mềm ứng dụng giao diện hệ điều hành: Windows Form, Windows Service. - Phần mềm ứng dụng Web: Website, Web Service, Web API… - Phần mềm ứng dụng Mobile App: Android App, IOS App, Winphone App… - Phần mềm nhúng: Tivi, tủ lạnh, điều hòa… Vòng đời phát triển của phần mềm(Software Devolopment Life Cycle) Vòng đời phát triển phần mềm là thời kỳ tính từ khi phần mềm được sinh ra cho đến khi chết đi (từ lúc hình thành đáp ứng yêu cầu, vận hành, bảo dưỡng cho đến khi loại bỏ không dùng nữa).
Vòng đời của phần mềm được chia thành các phachính: phân tích, thiết kệ, chiết tạo, kiểm thử, bảo trì. Được biểu diễn ở mô hình: Phaxác định yêu cầu hệ thống: Mọi phần mềm được xây dựng, phát triển trên tài liệu đặc tả (Software Reqiment Specification). Dựa vào các đặc tả này của người dùng (khách hàng), bộ phận xây dựng phần mềm sẽ xác định yêu cầu 2 hệ thống của hệ thông phần mềm sẽ xây dựng. Xác định phần mềm thuộc loại nào: Windows Form, Web Form hay Mobile App.
Pha xác định yêu cầu phần mềm: Sau khi xác định được loại của hệ thống sẽ xây dựng, các kĩ sư phầm mềm tiếp tục khảo sát các yêu cầu sử dụng của phần mềm mà khách hàng đang mong muốn xây dựng, đây chính là pha xác định xem phần mềm sẽ có chức năng gì tương tác như thế nào? Phathiết kế căn bản: Hay còn gọi là thiết kế sơ đồ hệ thống, ở giai đoạn này kiến trúc khung của phần mềm sẽ được thiết kế (sử dụng nền tảng nào, ngôn ngữ lập trình nào, áp dụng những công nghệ gì…) Phalập trình: Đây chính là pha hiện thực hóa phần mềm dựa vào các bản thiết kế ở các pha trên. Người lập trình cần phải sử dụng những công nghệ, ngôn ngữ lập trình cũng như những nền tảng đã được xác định để tiến hành lập trình thực hiện các nghiệp vụ đã được thiết kế. Pha kiểm thử: Sau khi phần mềm đã được lập trình xong sẽ được chuyển sang pha kiểm thử nhằm đảm bảo chương tình có đầy đủ các chức năng, nghiệp vụ mà khách hàng yêu cầu cũng như tất cả các hoạt động tốt theo đúng mong muốn. Pha vận hành bảo trì: Đây là pha có thời gian dài nhất trong vòng đời của phần mềm.
Sau khi phần mềm được thiết kế, lập trình và kiểm thử xong sẽ bàn giao cho khách hàng mang vào hoạt động thực tế.Phanày sẽ kéo dài cho tới khi phần mềm không còn phù hợp nữa thì kết thúc. SUY NGHĨ MỚI VỀ VÒNG ĐỜI CỦA MỘT PHẦN MỀM - Pha xác định yêu cầu và thiết kế có vai trò quan trọng, quyết định đến chất lượng của phần mềm, chiếm phần lớn công sức so với lập trình, kiểm thử và chuyển giao phần mềm. - Pha cụ thể hóa cấu trúc phần mềm phụ thuộc nhiều vào suy nghĩ Top- down (trên xuống) và trừu tượng hóa cũng như chi tiết của người thiết kế. - Pha thiết kế, chế tạo theo chiều từ trên xuống (top-down) còn pha kiểm thử thì theo chiều từ dưới lênbottom-up).
3 - Trước khi chuyển sang phathiết kế tiếp phải đảm bảo pha hiện tại đã hoàn thành và được kiểm thử không còn lỗi. - Cần có cơ chế kiểm tra chất lượng, xét duyệt giữa các pha nhằm đảm bảo không gây lỗi cho các pha sau nó. - Tư liệu cho mỗi pha không chỉ dùng cho pha sau mà chính là đối tượng quan trọng cho kiểm tra, đảm bảo chất lượng cho từng quy trình và của chính phần mềm. - Cần chuẩn hóa các mẫu biểu, cách ghi chép tạo tư liệu cho từng pha nhằm đảm bảo chất lượng của phần mềm.
- Thao tác bảo trì phần mềm là việc quay vòng trở lại các pha trong vòng đời phần mềm nhằm biến đổi, sửa chữa và nâng cấp phần mềm. Kiểm thử phần mềm a. Khái niệm kiểm thử phần mềm Kiểm thử phần mềm là một quy trình nhằm đảm bảo độ tin cậy và chất lượng của phần mềm. Mục đích của kiểm thử phần mềm là chỉ ra phần mềm thực hiện đúng các chức năng mà khác hàng muốn.
Mục tiêu của kiểm thử phần mềm - Phát hiện ra càng nhiều lỗi càng tốt trong thời gian kiểm thử xác định trước. - Chứng minh rằng sản phẩm phần mềm phù hợp với các đặc tả yêu cầu của nó. - Tạo ra các Testcase chất lượng nhằm tìm ra lỗi(nếu có) với chi phí thấp. Ai là người Test (kiểm thử) Trong hầu hết các trường hợp, người kiểm thử (Tester) có thể là: - Software Tester- Nhân viên kiểm thử phần mềm.
- Software Develop- Nhân viên phát triển phần mềm. - Leader hoặc manager của dự án. - Product Owner- Người sỡ hữu sản phẩm (Acceptance Testing). - User- Người dùng cuối.
Phân loại Có 02 kiểm thử phần mềm - Kiểm thử phần mềm thủ công (Manual Testing). - Kiểm thử tự động (Automation Testing). Các role trong kiểm thử phần mềm - Test Manager: Là người đứng đầu bộ phận kiểm thử, quản lý về các vấn đề liên quan quy trình làm viện, nhân sự… - Test Leader: Là người trực tiếp tham gia vào quá trình kiểm thử dự án cùng với Tester,Test Leader đảm nhiệm vai trò quản lý công việc của Tester, thực hiện Verify các sản phẩm mà Tester tạo ra cũng như báo cáo Test Manager khi có yêu cầu. - Tester/QC: Là người trực tiếp thực hiện quá trình kiểm thử, đảm bảo chất lượng của sản phẩm theo những nhiệm vụ được phân công.
Tổng quan về kiểm thử a. Các mức kiểm thử Unit Test (kiểm thử ở mức đơn vị lập trình): Là mức kiểm thử tập trung vào việc xác minh trên các đơn vị nhỏ nhất của thiết kế phần mềm. Sử dụng cả mô tả thiết kế thủ tục để phát hiện lỗi trong phạm vi Module/Functions. Module/Functions (Kiểm thử mức chức năng): Là mức kiểm thử tập trung kiểm tra, xác minh xem một chức năng trong chương trình có hoạt động đúng như nó được thiết kế không? Integration Test (kiểm thử ở mức tích hợp): Là mức kiểm thử tập trung kiểm tra, xác minh các thành phần có trong phần mềm có được tương tác với nhau hay không, có hoạt động phối hợp cùng nhau hay không? System Test (kiểm thử ở mức hệ thống): Là mức kiểm thử nhằm đưa hệ thống vào vận hành thử nghiệm các môi trường khác nhau nhằm tìm ra lỗi về hệ thống tính tương thích… Accceptance Test (kiểm thử chấp nhận): Là mức kiểm thử được thực hiện ở phía người sử dụng, đây được xem là kiểm thử chấp nhận sản phẩm.
Các phương pháp kiểm thử Có 03 phương pháp kiểm thử phổ biến: Kiểm thử hộp đen (Black box): Hay còn gọi là kiểm thử hướng dữ liệu. Là phương pháp kiểm thử không quan tâm đến cấu trúc bên trong của phần mềm (Cấu trúc dữ liệu, thuật toán, xử lý…) mà chỉ kiểm tra dữ liệu đầu vào, dữ liệu đầu ra ứng với các trường hợp trong đặc tả (TestCase). Kiểm thử hộp trằng (White box): Là phương pháp kiểm thử dựa vào thuật giải cụ thể, cấu trúc dữ liệu bên trong của đơn vị phần mềm cần kiểm thử để xác định đơn vị phần mềm đó có thực hiện đúng hay không? Để thực hiện kiểm thử hộp trắng thì người kiểm thử phải có kỹ năng, kiến thức nhất định về ngôn ngữ lập trình được dùng, về giải thuật được dùng trong thành phần phần mềm để có thể thông hiểu được chi tiết về các đoạn code cần kiểm thử. Kiểm thử hộp xám (Gray box): Là phương pháp kết hợp giữa phương pháp kiểm thử hộp đen và phương pháp kiểm thử hộp trắng.
Phương pháp kiểm thử hộp đen dùng để xác định nguồn gây ra lỗi còn phương pháp kiểm thử hộp trắng xác định xem lỗi đang gặp là lỗi gì? c. Các loại kiểm thử Kiểm thử cài đặt (Installation Testing): Sau khi chương trình được lập trình xong, để đảm bảo tính toàn vẹn trong việc phân phối tới người sử dụng, chương trình cần được đóng gói thành các file cài đặt. Kiểm thử cài đặt là loại kiểm tra xem quá trình cài đặt ứng dụng từ file đóng gói (package) có làm việc được trên cấu hình phần cứng của khách hay không? Kiểm thử Smoke (Smoke Testing): Đây là loại kiểm thử sơ lược hệ thống ngay sau khi cài đặt xem có xảy ra vấn đề gì nghiêm trọng hay không? Loại kiểm thử này là kiểm thử sơ lược hệ thống, không đi sâu vào chi tiết chức năng. Kiểm thử chức năng (Function Testing): Là hoạt động kiểm thử nhằm xác minh xem các chức năng, hoạt động của chương trình có hoạt động đúng như đặc tả hay không? Phần lớn công việc của người Tester thuộc loại kiểm thử này.
6 Kiểm thử hồi quy (Regression Testing): Là loại kiểm thử tập trung vào tìm kiếm lỗi sau khi có một sự thay đổi lớn đã xảy ra nhằm khám phá hồi quy phần mềmxem các lỗi cũ có xuất hiện hay không?