Tìm hiểu về kiểm thử tự động selenium và kiểm thử nhanh một số ứng dụng

Tài liệu nghiên cứu Tìm hiểu về kiểm thử tự động selenium và kiểm thử nhanh một số ứng dụng, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên sâu về .

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

khóa luận tốt nghiệp

2018

72
2
0

Phí lưu trữ

30 Point

Tóm tắt

I. Khám phá Kiểm thử tự động Selenium Tổng quan cho người mới

Trong bối cảnh phát triển phần mềm hiện đại, kiểm thử tự động (Automation Testing) đã trở thành một giai đoạn không thể thiếu để đảm bảo chất lượng sản phẩm trước khi đến tay người dùng. Đây là quá trình sử dụng các công cụ chuyên dụng để thực thi các kịch bản kiểm thử (test script) một cách tự động, so sánh kết quả thực tế với kết quả mong đợi. Mục tiêu chính của Automation Testing là giảm thiểu nỗ lực thủ công, tăng tốc độ kiểm thử, và cải thiện độ chính xác, đặc biệt trong các chu kỳ kiểm thử hồi quy (Regression Testing). Giữa vô số công cụ trên thị trường, Selenium nổi lên như một bộ công cụ mã nguồn mở mạnh mẽ và phổ biến nhất, chuyên dụng cho việc tự động hóa kiểm thử web. Được phát triển lần đầu bởi Jason Huggins vào năm 2004, Selenium đã phát triển thành một hệ sinh thái toàn diện, hỗ trợ nhiều ngôn ngữ lập trình như Selenium với Java, Selenium với Python, C# và hoạt động trên hầu hết các trình duyệt web phổ biến. Bộ công cụ này không chỉ là một sản phẩm đơn lẻ mà là một tập hợp các công cụ với những chức năng riêng biệt, đáp ứng các nhu cầu kiểm thử khác nhau. Việc áp dụng Selenium giúp các nhóm phát triển và kiểm thử viên xây dựng một quy trình đảm bảo chất lượng hiệu quả, từ đó rút ngắn thời gian đưa sản phẩm ra thị trường và tiết kiệm chi phí đáng kể. Tài liệu nghiên cứu của Thái Thị Hồng Hạnh (2018) đã nhấn mạnh rằng việc nắm vững lý thuyết về Selenium là mục tiêu cốt lõi để ứng dụng thành công vào kiểm thử các trang web thực tế.

1.1. Định nghĩa Automation Testing và vai trò trong phát triển

Automation Testing là phương pháp kiểm thử phần mềm sử dụng các phần mềm đặc biệt để điều khiển việc thực thi các bài kiểm tra và sau đó so sánh kết quả thực tế với kết quả dự đoán. Quá trình này giúp tự động hóa các tác vụ lặp đi lặp lại và các tác vụ khó thực hiện thủ công. Trong vòng đời phát triển phần mềm, vai trò của nó ngày càng quan trọng, giúp phát hiện lỗi sớm, đảm bảo các chức năng cũ không bị ảnh hưởng bởi thay đổi mới (kiểm thử hồi quy), và cho phép thực hiện kiểm thử giao diện người dùng (UI testing) trên nhiều nền tảng một cách nhất quán. Điều này không chỉ nâng cao chất lượng sản phẩm mà còn giải phóng thời gian cho các kiểm thử viên để tập trung vào các kịch bản phức tạp hơn.

1.2. Giới thiệu bộ công cụ Selenium và các thành phần chính

Selenium không phải là một công cụ duy nhất mà là một bộ công cụ, mỗi thành phần phục vụ một mục đích khác nhau. Các thành phần chính bao gồm: Selenium IDE, một plugin cho trình duyệt giúp ghi lại và phát lại các tương tác của người dùng, rất phù hợp cho người mới bắt đầu. Selenium WebDriver là trái tim của bộ công cụ, cung cấp một API lập trình để tạo và thực thi các ca kiểm thử một cách chi tiết và linh hoạt. Cuối cùng, Selenium Grid cho phép thực thi các bài kiểm thử song song trên nhiều máy và nhiều trình duyệt khác nhau, giúp giảm đáng kể thời gian chạy toàn bộ bộ kiểm thử. Sự kết hợp của các công cụ này tạo nên một framework kiểm thử mạnh mẽ.

II. Thách thức trong kiểm thử web Vì sao tự động hóa là tất yếu

Kiểm thử thủ công, mặc dù vẫn có giá trị trong các kịch bản thăm dò, nhưng lại bộc lộ nhiều hạn chế khi đối mặt với sự phức tạp của các ứng dụng web hiện đại. Một trong những thách thức lớn nhất là chi phí về thời gian và nhân lực. Việc thực hiện lặp đi lặp lại hàng trăm, thậm chí hàng nghìn test script cho mỗi lần thay đổi mã nguồn là một công việc tốn kém và dễ gây ra lỗi do con người. Đặc biệt, kiểm thử hồi quy, quá trình đảm bảo các tính năng hiện có vẫn hoạt động sau khi cập nhật, trở thành một gánh nặng khổng lồ nếu thực hiện thủ công. Một thách thức quan trọng khác là Cross-browser testing (kiểm thử đa trình duyệt). Người dùng ngày nay truy cập ứng dụng web từ rất nhiều trình duyệt khác nhau (Chrome, Firefox, Safari, Edge) trên các hệ điều hành khác nhau. Đảm bảo trải nghiệm người dùng nhất quán trên mọi nền tảng là yêu cầu bắt buộc, nhưng việc kiểm tra thủ công trên từng cấu hình là gần như không thể. Những vấn đề này dẫn đến chu kỳ phát hành chậm, chi phí tăng cao và nguy cơ bỏ sót lỗi nghiêm trọng. Kiểm thử tự động với các công cụ như Selenium ra đời để giải quyết trực tiếp những thách thức này, mang lại hiệu quả, tốc độ và độ tin cậy cao hơn cho quy trình đảm bảo chất lượng.

2.1. Hạn chế của phương pháp thủ công trong các dự án lớn

Trong các dự án quy mô lớn với hàng ngàn yêu cầu chức năng, phương pháp kiểm thử thủ công tỏ ra không hiệu quả. Quá trình này chậm, dễ mắc lỗi và khó mở rộng. Mỗi khi có một bản phát hành mới, đội ngũ kiểm thử viên phải thực hiện lại toàn bộ các kịch bản kiểm thử, một công việc lặp đi lặp lại và nhàm chán, làm giảm động lực và sự tập trung. Hơn nữa, việc tạo báo cáo và theo dõi lỗi cũng mất nhiều thời gian, làm chậm quá trình phản hồi cho đội phát triển. Tự động hóa kiểm thử web giúp khắc phục những nhược điểm này bằng cách thực thi các kịch bản một cách nhanh chóng và chính xác.

2.2. Vấn đề kiểm thử hồi quy và kiểm thử đa trình duyệt

Kiểm thử hồi quy là hoạt động cốt lõi để đảm bảo sự ổn định của phần mềm. Tuy nhiên, thực hiện thủ công rất tốn thời gian. Với Automation Testing, các kịch bản hồi quy có thể được chạy tự động sau mỗi lần cập nhật mã nguồn, giúp phát hiện lỗi ngay lập tức. Tương tự, Cross-browser testing là một nhiệm vụ phức tạp. Việc thiết lập nhiều môi trường và kiểm tra thủ công trên từng trình duyệt rất cồng kềnh. Các công cụ như Selenium Grid cho phép chạy cùng một kịch bản kiểm thử trên nhiều trình duyệt và hệ điều hành cùng lúc, đảm bảo tính tương thích của ứng dụng một cách hiệu quả.

III. Hướng dẫn Selenium WebDriver Xây dựng kịch bản kiểm thử

Selenium WebDriver được xem là thành phần cốt lõi và mạnh mẽ nhất trong bộ công cụ Selenium. Khác với Selenium IDE, WebDriver cung cấp một giao diện lập trình (API) cho phép người dùng viết các test script bằng nhiều ngôn ngữ lập trình phổ biến như Java, C#, Python, Ruby. Điều này mang lại sự linh hoạt và khả năng kiểm soát tối đa cho quá trình kiểm thử tự động. WebDriver tương tác trực tiếp với trình duyệt ở cấp độ hệ điều hành, giúp các kịch bản chạy nhanh hơn và ổn định hơn so với Selenium RC (phiên bản tiền nhiệm). Kiến trúc của Selenium WebDriver loại bỏ lớp trung gian, cho phép các lệnh từ kịch bản được gửi thẳng đến trình duyệt thông qua một driver riêng biệt cho từng loại trình duyệt (ChromeDriver, GeckoDriver cho Firefox,...). Để bắt đầu với WebDriver, người dùng cần thiết lập môi trường phát triển với ngôn ngữ lập trình mong muốn, thêm thư viện Selenium và tải về driver tương ứng. Quá trình xây dựng một kịch bản kiểm thử cơ bản bao gồm các bước: khởi tạo một phiên trình duyệt, điều hướng đến URL của ứng dụng, tìm kiếm các phần tử trên trang, thực hiện các tương tác (nhập liệu, nhấp chuột), và cuối cùng là xác minh kết quả. Việc sử dụng các framework hỗ trợ như TestNG, JUnit (với Java) hay PyTest (với Python) sẽ giúp quản lý và tổ chức các kịch bản một cách chuyên nghiệp hơn.

3.1. Kỹ thuật định vị phần tử XPath CSS Selector và Locators

Để tương tác với một trang web, bước đầu tiên và quan trọng nhất là xác định (định vị) các phần tử như nút bấm, hộp văn bản, liên kết. Selenium WebDriver cung cấp nhiều chiến lược định vị, được gọi chung là Locators trong Selenium. Các locators phổ biến bao gồm ID, Name, Class Name, Tag Name, Link Text. Tuy nhiên, trong các ứng dụng web phức tạp, XPathCSS Selector là hai công cụ mạnh mẽ và linh hoạt nhất. XPath cho phép điều hướng qua các phần tử và thuộc tính trong cấu trúc XML (và HTML) của trang, trong khi CSS Selector sử dụng các mẫu selector của CSS để tìm phần tử, thường có tốc độ nhanh hơn.

3.2. Tối ưu kịch bản kiểm thử với mô hình Page Object Model

Page Object Model (POM) là một mẫu thiết kế phổ biến trong kiểm thử tự động, giúp tạo ra các kịch bản dễ bảo trì và tái sử dụng hơn. Theo mô hình này, mỗi trang web trong ứng dụng sẽ tương ứng với một lớp (class) trong mã nguồn kiểm thử. Lớp này sẽ chứa tất cả các phần tử (WebElements) và các phương thức (methods) tương tác với các phần tử đó. Thay vì viết các lệnh tìm kiếm phần tử trực tiếp trong test script, kịch bản sẽ gọi các phương thức từ các lớp Page Object. Điều này giúp tách biệt logic kiểm thử khỏi logic giao diện, khi giao diện thay đổi, chỉ cần cập nhật lớp Page Object tương ứng mà không cần sửa đổi hàng loạt kịch bản.

IV. Cách tăng tốc kiểm thử Triển khai Selenium Grid song song

Khi số lượng các kịch bản kiểm thử tăng lên, thời gian cần thiết để thực thi toàn bộ bộ kiểm thử cũng tăng theo, làm chậm chu kỳ phản hồi của quy trình CI/CD. Selenium Grid ra đời để giải quyết bài toán này bằng cách cho phép thực thi kiểm thử song song. Về cơ bản, Selenium Grid là một hệ thống máy chủ thông minh, có khả năng điều phối và phân tán các yêu cầu thực thi kịch bản từ máy khách đến nhiều máy trạm (nodes) khác nhau. Kiến trúc của Grid bao gồm hai thành phần chính: Hub và Node. Hub đóng vai trò là trung tâm điều khiển, nhận yêu cầu kiểm thử và chuyển tiếp chúng đến các Node phù hợp. Mỗi Node là một máy tính (vật lý hoặc ảo) đã được đăng ký với Hub, có cài đặt sẵn các trình duyệt và driver cần thiết. Bằng cách thiết lập một Grid với nhiều Node chạy các hệ điều hành và trình duyệt khác nhau, một bộ kiểm thử lớn có thể được chia nhỏ và chạy đồng thời trên nhiều máy. Điều này không chỉ giúp thực hiện Cross-browser testing một cách hiệu quả mà còn giảm đáng kể tổng thời gian chạy. Ví dụ, một bộ kiểm thử mất 1 giờ để chạy tuần tự có thể hoàn thành chỉ trong vài phút khi chạy song song trên 10 Node. Việc triển khai Selenium Grid là một phương pháp tối ưu để mở rộng quy mô và tăng tốc độ cho hoạt động kiểm thử tự động.

4.1. Cấu hình Hub và Node để thực thi kiểm thử song song

Việc thiết lập một Selenium Grid khá đơn giản. Đầu tiên, cần tải về tệp Selenium Server (jar). Để khởi chạy Hub, chỉ cần chạy tệp jar với tham số -role hub trên một máy chủ trung tâm. Hub sẽ lắng nghe các yêu cầu trên một cổng mặc định (thường là 4444). Tiếp theo, trên mỗi máy sẽ đóng vai trò là Node, chạy cùng tệp jar với tham số -role node và chỉ định địa chỉ của Hub để đăng ký. Có thể cấu hình mỗi Node để hỗ trợ các trình duyệt và phiên bản cụ thể. Sau khi thiết lập, các test script sẽ được cấu hình để gửi yêu cầu đến Hub thay vì chạy trực tiếp trên máy cục bộ.

4.2. Tích hợp Selenium với Java TestNG JUnit và Python

Để tận dụng tối đa sức mạnh của Selenium Grid, việc tích hợp nó với các framework kiểm thử như TestNG hoặc JUnit (cho Selenium với Java) và PyTest (cho Selenium với Python) là rất quan trọng. Các framework này cung cấp các tính năng mạnh mẽ để quản lý việc thực thi song song. Ví dụ, TestNG cho phép định nghĩa việc chạy song song ở cấp độ phương thức, lớp hoặc bộ kiểm thử thông qua một tệp cấu hình XML. Bằng cách kết hợp Selenium WebDriver, Grid và một framework phù hợp, các nhóm có thể xây dựng một hệ thống tự động hóa kiểm thử web toàn diện và hiệu quả.

V. Ứng dụng thực tiễn Kiểm thử nhanh ứng dụng web Lazada

Lý thuyết sẽ không hoàn chỉnh nếu thiếu đi ứng dụng thực tiễn. Nghiên cứu của Thái Thị Hồng Hạnh (2018) đã minh họa rõ ràng cách áp dụng bộ công cụ Selenium để kiểm thử một website thương mại điện tử thực tế. Quá trình này bắt đầu bằng việc phân tích các chức năng quan trọng của ứng dụng, chẳng hạn như đăng ký, đăng nhập, tìm kiếm sản phẩm và đặt hàng. Từ đó, các kịch bản kiểm thử (test cases) chi tiết được xây dựng. Ví dụ, một test case có thể là "Đăng ký tài khoản thành công với thông tin hợp lệ" hoặc "Tìm kiếm sản phẩm 'sách' và xác minh kết quả hiển thị". Với Selenium IDE, các thao tác này có thể được ghi lại nhanh chóng để tạo ra một test script cơ bản. Kịch bản này sau đó có thể được xuất ra ngôn ngữ lập trình như C# hoặc Java để tinh chỉnh và tích hợp vào một framework kiểm thử sử dụng Selenium WebDriver. Việc áp dụng Selenium WebDriver cho phép xử lý các tình huống phức tạp hơn, chẳng hạn như chờ đợi các phần tử động tải xong, xử lý các cửa sổ pop-up, hoặc xác thực dữ liệu từ cơ sở dữ liệu. Kết quả của quá trình kiểm thử này không chỉ là phát hiện lỗi mà còn là việc xây dựng một bộ kiểm thử hồi quy tự động, có thể tái sử dụng để đảm bảo chất lượng cho các phiên bản sau này của ứng dụng.

5.1. Xây dựng kịch bản kiểm thử cho chức năng đăng ký

Trong tài liệu gốc, chức năng đăng ký được chọn làm ví dụ điển hình. Các test case được thiết kế để bao phủ các trường hợp thành công và thất bại. Ví dụ: đăng ký thành công, đăng ký thất bại do bỏ trống mật khẩu, đăng ký thất bại do xác nhận mật khẩu không khớp. Sử dụng Selenium IDE, các bước như nhập tên người dùng, email, mật khẩu và nhấp vào nút đăng ký được ghi lại. Sau đó, các lệnh xác minh (assert/verify) được thêm vào để kiểm tra thông báo kết quả trả về, đảm bảo chức năng hoạt động đúng như mong đợi. Đây là bước khởi đầu tuyệt vời cho UI testing.

5.2. Sử dụng Selenium WebDriver để kiểm thử luồng đặt hàng

Luồng đặt hàng là một chức năng phức tạp hơn, đòi hỏi sự linh hoạt của Selenium WebDriver. Kịch bản kiểm thử sẽ bao gồm các bước: đăng nhập, tìm kiếm một sản phẩm cụ thể, thêm sản phẩm vào giỏ hàng, đi đến trang thanh toán, điền thông tin giao hàng và xác nhận đơn hàng. Trong quá trình này, các Locators trong Selenium như XPathCSS Selector được sử dụng để tìm các phần tử động. Các lệnh chờ đợi (Waits) cũng rất quan trọng để đồng bộ hóa kịch bản với tốc độ tải của trang, tránh các lỗi do phần tử chưa xuất hiện. Toàn bộ kịch bản này tạo thành một bài kiểm thử giao diện người dùng (UI testing) đầu cuối quan trọng.

VI. Tương lai kiểm thử tự động Selenium và các công cụ mới

Selenium đã và đang là một thế lực thống trị trong lĩnh vực tự động hóa kiểm thử web trong hơn một thập kỷ. Sức mạnh của nó nằm ở tính linh hoạt, hỗ trợ đa ngôn ngữ, đa trình duyệt và một cộng đồng người dùng khổng lồ. Selenium WebDriver vẫn là tiêu chuẩn vàng cho nhiều tổ chức nhờ khả năng tùy biến và tích hợp sâu vào hệ sinh thái phát triển phần mềm. Tuy nhiên, thế giới công nghệ không ngừng vận động. Trong những năm gần đây, một loạt các framework kiểm thử hiện đại đã xuất hiện, mang đến những cách tiếp cận mới và giải quyết một số điểm yếu cố hữu của Selenium, chẳng hạn như việc cài đặt phức tạp và các vấn đề về độ ổn định (flakiness). Các công cụ như CypressPlaywright đang ngày càng trở nên phổ biến. Chúng được thiết kế với kiến trúc khác biệt, cho phép kiểm soát trình duyệt một cách chặt chẽ hơn, cung cấp các tính năng gỡ lỗi mạnh mẽ và cơ chế chờ đợi tự động thông minh hơn. Dù vậy, điều này không có nghĩa là Selenium sẽ sớm lỗi thời. Thay vào đó, sự cạnh tranh này thúc đẩy Selenium phải liên tục cải tiến. Tương lai của kiểm thử tự động có thể sẽ là một hệ sinh thái đa dạng, nơi các nhóm sẽ lựa chọn công cụ phù hợp nhất với nhu cầu, kiến thức và kiến trúc ứng dụng của họ.

6.1. Tổng kết ưu điểm và hạn chế của bộ công cụ Selenium

Ưu điểm lớn nhất của Selenium là mã nguồn mở, miễn phí, và có một cộng đồng hỗ trợ lớn. Nó hỗ trợ gần như tất cả các ngôn ngữ lập trình và trình duyệt phổ biến, cho phép thực thi song song với Selenium Grid. Tuy nhiên, Selenium cũng có những hạn chế. Nó đòi hỏi kiến thức lập trình tương đối cao để sử dụng hiệu quả. Việc thiết lập môi trường có thể phức tạp. Các kịch bản đôi khi không ổn định và việc xử lý các phần tử động đòi hỏi nhiều kỹ thuật chờ đợi (Waits) phức tạp.

6.2. So sánh Selenium với các framework như Cypress và Playwright

CypressPlaywright là hai đối thủ đáng gờm của Selenium. Cypress chạy trực tiếp bên trong trình duyệt, cho phép thực thi nhanh và gỡ lỗi theo thời gian thực rất hiệu quả. Tuy nhiên, nó chủ yếu hỗ trợ JavaScript/TypeScript và có một số hạn chế về kiểm thử đa tab hoặc đa trình duyệt (mặc dù đang cải thiện). Playwright, được phát triển bởi Microsoft, cung cấp API tương tự Selenium nhưng có kiến trúc hiện đại hơn, hỗ trợ chờ đợi tự động tốt hơn và có khả năng tự động hóa trên nhiều trình duyệt (Chromium, Firefox, WebKit) một cách mượt mà. Việc lựa chọn giữa Selenium, Cypress, hay Playwright phụ thuộc vào yêu cầu cụ thể của dự án.

Tóm tắt và mô tả trên trang này được tạo với sự hỗ trợ của AI. Nếu bạn thấy nội dung không chính xác hoặc có vấn đề, vui lòng Báo lỗi nội dung.

04/10/2025
Tìm hiểu về kiểm thử tự động selenium và kiểm thử nhanh một số ứng dụng

Trích đoạn nội dung tài liệu

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?

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ