Một kỹ sư kiểm thử phần mềm chuyên nghiệp cần am hiểu sâu sắc về SDLC (Software Development Life Cycle – Chu kỳ phát triển phần mềm). Kiểm thử phần mềm là một phần không thể thiếu và liên quan mật thiết đến SDLC, đảm bảo chất lượng và hiệu quả của sản phẩm cuối cùng.
Vòng đời phát triển phần mềm (SDLC) là một quy trình được tuân thủ trong một dự án phần mềm, trong một tổ chức phần mềm. Nó bao gồm một kế hoạch chi tiết mô tả cách phát triển, duy trì, thay đổi hoặc nâng cấp phần mềm cụ thể.
Quy trình này đóng vai trò then chốt, quyết định sự thành công của các nhà sản xuất phần mềm. Nó tạo ra một phương thức làm việc đồng bộ, giúp mọi thành viên, từ người mới đến người kỳ cựu, cả trong và ngoài công ty, dễ dàng phối hợp và xử lý công việc theo đúng vai trò và vị trí của mình.
Tìm hiểu về SDLC – Software Development Life Cycle
Tùy theo quy mô và hình thức hoạt động, các công ty phát triển phần mềm có thể điều chỉnh, gộp hoặc tách các giai đoạn của SDLC để phù hợp với nhu cầu thực tế. Tuy nhiên, quy trình tạo ra một sản phẩm phần mềm hoàn chỉnh thường bao gồm các giai đoạn chính sau:
- Pha yêu cầu
- Pha đặc tả
- Pha thiết kế
- Pha lập trình
- Pha kiểm thử
- Pha triển khai và bảo trì
Các Giai Đoạn Chính Của SDLC
1. Pha Yêu Cầu
Ở giai đoạn này, bộ phận phân tích yêu cầu sẽ trực tiếp trao đổi với khách hàng để làm rõ các chức năng và yêu cầu mong muốn tích hợp vào phần mềm. Các đơn vị phần mềm thường có sẵn bộ câu hỏi chung cho các dự án, cũng như các câu hỏi đặc thù cho từng dự án cụ thể.
Pha yêu cầu có vai trò quan trọng, ảnh hưởng trực tiếp đến quá trình xây dựng và phát triển phần mềm sau này. Đội ngũ phân tích yêu cầu thường là những người giàu kinh nghiệm, có khả năng làm rõ và hiểu đúng các yêu cầu của khách hàng, đồng thời thu thập các biểu mẫu thông tin liên quan để phục vụ cho việc phân tích ở giai đoạn tiếp theo.
2. Pha Đặc Tả
Sau khi thu thập đầy đủ yêu cầu từ khách hàng, bộ phận phân tích sẽ tiến hành làm rõ và hiện thực hóa chúng bằng một tài liệu SRS (Software Requirements Specification), hay còn gọi là “Tài liệu đặc tả”. Đây là tài liệu vô cùng quan trọng, chứa đựng tất cả các yêu cầu về sản phẩm, được sử dụng làm cơ sở để thiết kế và phát triển phần mềm trong suốt vòng đời dự án. Các bộ phận liên quan như lập trình viên, kiểm thử viên,… sẽ dựa vào tài liệu này để thực hiện công việc, trả lời cho câu hỏi “Phần mềm sẽ làm gì?”.
3. Pha Thiết Kế
Dựa trên tài liệu đặc tả, bộ phận thiết kế sẽ đưa ra giao diện tổng quan, đồng thời bộ phận lập trình sẽ thiết kế giao diện chi tiết cho từng chức năng của phần mềm. Các chức năng trong tài liệu đặc tả sẽ được hiện thực hóa thành giao diện phần mềm dạng prototype. Bản khung phần mềm này sẽ được sử dụng để trao đổi và thống nhất với khách hàng về giao diện và bố cục. Chỉ khi khách hàng đồng ý với thiết kế prototype, dự án mới chuyển sang giai đoạn tiếp theo. Nếu không, ý kiến đóng góp sẽ được ghi nhận và chỉnh sửa cho đến khi đạt được sự đồng thuận.
4. Pha Lập Trình
Đây là giai đoạn SDLC bắt đầu đi vào phát triển thực tế và sản phẩm được xây dựng. Các lập trình viên (developer) sẽ tiến hành lập trình, xử lý các chức năng và module theo yêu cầu được giao. Sau đó, sản phẩm sẽ được chuyển cho kiểm thử viên để kiểm tra theo các testcase đã được xây dựng dựa trên tài liệu đặc tả.
5. Pha Kiểm Thử
Ở giai đoạn này, các kiểm thử viên sẽ nhận bàn giao các chức năng đã được lập trình viên hoàn thiện. Họ sẽ thực hiện kiểm tra các chức năng này theo các testcase đã được xây dựng trước đó. Nếu phát hiện lỗi trong quá trình kiểm thử, kiểm thử viên sẽ báo cáo lỗi (bug) để lập trình viên sửa chữa.
Quá trình kiểm thử chức năng, kiểm tra lại, báo cáo lỗi và sửa lỗi sẽ lặp đi lặp lại cho đến khi các chức năng hoạt động đúng theo tài liệu đặc tả và yêu cầu của khách hàng. Sau khi hoàn thiện và đạt yêu cầu về kiểm thử, phần mềm sẽ được triển khai thử nghiệm trên môi trường của khách hàng. Nếu có yêu cầu chỉnh sửa, đội ngũ phát triển sẽ thực hiện bổ sung và sửa lỗi để nghiệm thu phần mềm.
6. Pha Triển Khai và Bảo Trì
Sau khi được kiểm thử kỹ lưỡng và sẵn sàng, sản phẩm sẽ được phát hành chính thức ra thị trường. Đôi khi, việc triển khai sản phẩm có thể diễn ra theo từng giai đoạn, tùy thuộc vào chiến lược kinh doanh của tổ chức. Trong quá trình khách hàng sử dụng phần mềm, công ty phát triển phần mềm sẽ có trách nhiệm hỗ trợ và xử lý các lỗi phát sinh. Có hai khái niệm quan trọng cần lưu ý:
- Software repair (bảo trì sửa lỗi): Chỉnh sửa các lỗi phát sinh trong quá trình sử dụng phần mềm.
- Software update (bảo trì cập nhật):
- Bảo trì hoàn thiện: Sửa đổi phần mềm theo yêu cầu của khách hàng.
- Bảo trì thích nghi: Sửa đổi để phần mềm tương thích với môi trường mới.
Các Mô Hình SDLC Phổ Biến
Có nhiều mô hình vòng đời phát triển phần mềm khác nhau, mỗi mô hình tuân theo các bước riêng để đảm bảo thành công trong quá trình phát triển. Dưới đây là một số mô hình SDLC quan trọng và phổ biến nhất:
1. Mô Hình Thác Nước (Waterfall)
Tìm hiểu về SDLC – Software Development Life Cycle
Mô hình này bao gồm các giai đoạn xử lý nối tiếp nhau:
- Phân tích yêu cầu và tài liệu đặc tả (Requirements and Specifications): Xác định các yêu cầu về chức năng và phi chức năng mà hệ thống phần mềm cần đáp ứng. Giai đoạn này đòi hỏi sự tham gia tích cực của khách hàng và kết thúc bằng tài liệu “Bản đặc tả yêu cầu phần mềm” (SRS).
- Phân tích hệ thống và thiết kế (System Analysis and Design): Xác định cách hệ thống phần mềm đáp ứng các yêu cầu đã được xác định trong tài liệu SRS.
- Lập trình (Coding and Unit Test): Hiện thực hóa các thiết kế đã được định ra trong giai đoạn “Phân tích hệ thống và thiết kế”.
- Kiểm thử (Test): Bao gồm kiểm thử tích hợp các thành phần và kiểm thử toàn hệ thống. Nghiệm thu (acceptance test) thường được thực hiện với sự tham gia của khách hàng để xác định xem hệ thống phần mềm có đáp ứng yêu cầu của họ hay không.
- Cài đặt và bảo trì (Deployment and Maintenance): Cài đặt, cấu hình, đào tạo cho khách hàng, sửa chữa lỗi (nếu có) và phát triển các thay đổi mới theo yêu cầu của khách hàng.
2. Mô Hình Chữ V (V-Model)
Tìm hiểu về SDLC – Software Development Life Cycle
- Trong mô hình Waterfall, kiểm thử được thực hiện trong một giai đoạn riêng biệt. Với mô hình chữ V, toàn bộ quy trình được chia thành hai nhóm giai đoạn tương ứng nhau: phát triển và kiểm thử. Mỗi giai đoạn phát triển sẽ kết hợp với một giai đoạn kiểm thử tương ứng.
- Tinh thần chủ đạo của V-model là các hoạt động kiểm thử phải được tiến hành song song (theo khả năng có thể) ngay từ đầu chu trình cùng với các hoạt động phát triển. Ví dụ, các hoạt động cho việc lập kế hoạch kiểm thử toàn hệ thống có thể được thực hiện song song với các hoạt động phân tích và thiết kế hệ thống.
3. Mô Hình Xoắn Ốc (Spiral Model)
Tìm hiểu về SDLC – Software Development Life Cycle
-
Trong mô hình xoắn ốc, quy trình phát triển phần mềm được thực hiện như một vòng xoáy ốc. Mỗi vòng xoắn ốc biểu diễn một hoạt động trong tiến trình phát triển phần mềm.
-
Dựa trên ý tưởng tối thiểu hóa rủi ro, bằng việc phân tích yếu tố rủi ro ở mỗi bước lặp và sử dụng phương pháp làm bản mẫu. Quá trình phát triển được chia thành nhiều bước lặp lại, mỗi bước bắt đầu bằng việc lập kế hoạch, phân tích rủi ro, tạo bản mẫu, hoàn thiện và phát triển hệ thống, duyệt lại, và cứ thế tiếp tục. Nội dung gồm 4 hoạt động chính:
- Lập kế hoạch: Xác định mục tiêu, giải pháp và ràng buộc.
- Phân tích rủi ro: Phân tích các phương án, xác định và giải quyết rủi ro.
- Phát triển và kiểm định: Phát triển sản phẩm “mức tiếp theo”, xây dựng một hoặc một số biểu diễn của ứng dụng.
- Lên kế hoạch cho chu kỳ lặp tiếp theo: Kiểm duyệt tất cả các kết quả của các giai đoạn con xảy ra trước đó và lập kế hoạch cho chu kỳ lặp tiếp theo.
-
Với mỗi lần lặp vòng xoắn ốc (bắt đầu từ tâm), các phiên bản được hoàn thiện dần. Tại một vòng xoắn ốc, phân tích rủi ro phải đi đến quyết định “tiến hành tiếp hay dừng”. Nếu rủi ro quá lớn, có thể đình chỉ dự án hoặc thay đổi yêu cầu cho phù hợp. Mô hình này thích hợp để phát triển các hệ thống quy mô lớn.
4. Mô Hình Agile: Quy Trình Scrum
Tìm hiểu về SDLC – Software Development Life Cycle
Sprint là chu trình nhỏ để phát triển sản phẩm. Trong Sprint, nhóm dự án sẽ tập trung phát triển những chức năng cụ thể và hoàn thiện nó vào cuối mỗi sprint. Mỗi Sprint có thời gian thống nhất, thường là 1 hoặc 2 tuần và thường không quá 4 tuần.
-
Trước khi cả nhóm thực hiện các sprint, đội sản xuất cùng họp với Product Owner để lập kế hoạch cho từng Sprint (gọi là Scrum Meeting). Kết quả của buổi lập kế hoạch là Sprint Backlog, chứa các công việc cần làm trong suốt một Sprint.
-
Trong suốt quá trình phát triển, nhóm sẽ phải cập nhật Sprint Backlog và thực hiện họp hằng ngày (Daily Scrum) để chia sẻ tiến độ công việc cũng như các vướng mắc. Nhóm được trao quyền để tự quản lý và tổ chức công việc để hoàn thành Sprint.
-
Buổi họp Sơ kết Sprint (Sprint Review) ở cuối Sprint sẽ giúp khách hàng thấy được nhóm đã có thể chuyển giao những gì, còn những gì phải làm hoặc cần thay đổi/cải tiến. Sau khi kết thúc việc đánh giá Sprint, Scrum Master và nhóm cùng tổ chức họp Cải tiến Sprint (Sprint Retrospective) để tìm kiếm các cải tiến trước khi Sprint tiếp theo bắt đầu, giúp nhóm liên tục học hỏi và trưởng thành qua từng Sprint.
-
Các Sprint sẽ được lặp đi lặp lại cho tới khi các hạng mục trong Product Backlog đều được hoàn tất hoặc khi Product Owner quyết định có thể dừng dự án căn cứ tình hình thực tế. Do quy trình luôn luôn được cải tiến, nhóm Scrum thường có năng suất lao động rất cao. Đây là hai lợi ích to lớn mà Scrum mang lại cho tổ chức.
-
Scrum định nghĩa quy tắc cho bốn sự kiện chủ chốt (các cuộc họp) nhằm tạo môi trường và quy cách hoạt động và cộng tác cho các thành viên trong dự án. Các lễ nghi này diễn ra trước khi Sprint bắt đầu (Sprint Planning), trong khi Sprint diễn ra (Daily Scrum) và sau khi Sprint kết thúc (Sprint Review và Sprint Retrospective).
-
Trong Scrum, đội ngũ tham gia phát triển phần mềm được phân chia ra ba vai trò với trách nhiệm rõ ràng để đảm bảo tối ưu hóa các công việc đặc thù. Ba vai trò này bao gồm: Product Owner (chủ sản phẩm), Scrum Master và Development Team (Đội sản xuất hay Nhóm Phát triển).
- Product Owner: Là người chịu trách nhiệm về sự thành công của dự án, người định nghĩa các yêu cầu và đánh giá cuối cùng đầu ra của các nhà phát triển phần mềm.
- Scrum Master: Đảm bảo các sprint được hoàn thành đúng mục đích, bảo vệ đội làm việc và loại bỏ các trở ngại.
- Development Team: Thường từ 5-9 người, tùy theo quy mô dự án có thể có nhiều đội, nhiều người tham gia.
