Kiểm thử Agile và vai trò của kiểm thử viên Agile

  • Ngày nay, quy trình phát triển phần mềm Agile đang ngày càng khẳng định thế mạnh và tính hiệu quả của nó đối với các dự án phần mềm lớn nhỏ, nhằm nâng cao chất lượng của sản phẩm phần mềm và hỗ trợ quá trình phát triển.

  • Đi cùng song song với nhiều quy trình phát triển phần mềm khác, thì quy trình phát triển phần mềm Agile là khá tiềm năng và vượt trội. Trong phần này tôi sẽ đề cập tới những khái niệm cơ bản của kiểm thử Agile cũng như vai trò của kiểm thử viên Agile.

1. Agile là gì/Tổng quan về Agile

1.1 Agile là gì

  • Agile là tên một đội bóng bầu dục của Mĩ, vì sao lại dùng tên của đội bóng này đặt cho một quy trình làm việc?

    Bởi vì đội bóng bầu dục không chơi theo từng vị trí riêng biệt mà là tất cả cùng hỗ trợ nhau cùng tiến lên để đạt đến mục tiêu và đây cũng là tinh thần chủ đạo của quy trình phát triển phần mềm Agile.

  • Quy trình Agile ra đời từ những năm 90 với những ý tưởng khắc phục những nhược điểm của mô hình truyền thống (ví dụ mô hình thác nước)

Waterfall.png

  • Quy trình Agile với mục tiêu là phần mềm phải có khả năng biến đổi, phát triển và tiến hóa theo thời gian mà không phải phát triển lại từ đầu. Mục tiêu là làm ra những sản phẩm đơn giản đáp ứng đúng và đủ yêu cầu của khách hàng ở thời điểm hiện tại, sẵn sàng cho sự thay đổi trong tương lai.

  • Quy trình Agile cố gắng giảm thiểu rủi ro bằng cách phát triển phần mềm trong một khung thời gian ngắn và cộng tác chặt chẽ với khách hàng. Mỗi vòng lặp giống như phát triển một phần mềm hoàn chỉnh gồm có nhận yêu cầu, phân tích thiết kế hệ thống, viết tài liệu, code, test. Điểm nổi bật là khả năng sửa chữa biến đổi phần mềm ngay cả khi dự án đã bắt đầu.

Agile.png

  • Điểm khác biệt giữa Agile với các mô hình truyền thống là:

    • Mô hình truyền thống là mô hình theo kế hoạch.

    • Agile không nhất thiết phải tuân theo kế hoạch, nó có thể có những bước đột phá riêng để tạo nên một phần mềm hoàn thiện nhất.

1.2 Tổng quan về Agile

  • Thực hiện quy trình Agile bao gồm 12 nguyên tắc sau:

    • Ưu tiên cao nhất là bàn giao sản phẩm sớm và liên tục đến tay khách hàng.

    • Hoan nghênh các thay đổi từ phía khách hàng kể cả các thay đổi vào giai đoạn cuối.

    • Bàn giao sản phẩm theo chu kì ngắn từ vài tuần đến vài tháng.

    • Các nhân viên đều hiểu nghiệp vụ và các lập trình viên phải làm việc cùng nhau hàng ngày.

    • Tổ chức dự án xoay quanh các cá nhân tích cực, hỗ trợ và tin tưởng họ,

    • Phương pháp giao tiếp tốt nhất trong đội dự án là gặp trực tiếp để trao đổi và giải quyết vấn đề.

    • Các chức năng đã hoạt động là thước đo chính cho tiến độ của dự án.

    • Khuyến khích phát triển bền vững: lập trình viên, nhà quản lý, khách hàng... phải có khả năng tham gia dự án một cách liên tục.

    • Liên tục cải tiến chất lượng thiết kế và mã nguồn.

    • Tính đơn giản giữ vai trò cốt yếu: nghĩa là làm càng ít càng tốt những chất lượng vẫn đảm bảo.

    • Những yêu cầu và thiết kế tốt nhất được nảy nở từ những nhóm làm việc tự chủ.

    • Sau những khoảng thời gian nhất định, đội dự án xem xét cách thức cải tiến hiệu quả công việc.

  • Đặc điểm của quy trình Agile:

    • Phát triển dựa trên quy trình phát triển lặp.

    • Cứ mỗi khi bàn giao các phần nhỏ đã hoàn thành cho khách hàng, khách hàng có thể đưa ra thêm những yêu cầu mới hoặc những thay đổi cho dự án. Nhóm phát triển sẽ cập nhật và làm theo những yêu cầu mới mà không cần làm lại từ đầu.

    • Từng phần nhỏ sẽ được test ngay trong quá trình làm dự án bằng những kiểm thử đơn vị tương ứng bởi những lập trình viên hay các kiểm thử viên độc lập.

    • Gặp mặt, trao đổi thường xuyên và cùng bàn bạc để đi đến thống nhất nhằm hoàn thành dự án đúng thời hạn.

    • Các quá trình của Agile đều được thực hiện bởi nguồn nhân lực là những lập trình viên có kinh nghiệm trong việc lập trình và kiểm thử, cả những kiểm thử viên kinh nghiệm.

2. Ưu điểm và nhược điểm của quy trình Agile

2.1 Ưu điểm

  • Agile là sự lựa chọn rất tốt cho những dự án nhỏ bởi những dự án nhỏ thường có những yêu cầu không được xác định rõ ràng và có thể thay đổi thường xuyên.

  • Với Agile khách hàng có thể được xem trước từng phần dự án trong suốt quá trình phát triển vì Agile phát triển phần mềm theo hướng tăng dần, có thể đưa cho khách hàng xem từng phần đã thực hiện hoàn thành. Từ đó có thể bám sát dự án và luôn sẵn sàng cho bất kỳ thay đổi nào từ phía khách hàng yêu cầu về dự án.

  • Agile chia dự án thành những phần nhỏ và giao cho mỗi người, hàng ngày tất cả mọi người phải họp với nhau trong khoảng thời gian ngắn để thảo luận về tiến độ và giải quyết những vấn đề nảy sinh nếu có nhằm đảm bảo đúng quy trình phát triển dự án.

  • Tỉ lệ thành công của các dự án sử dụng Agile thường cao hơn các quy trình khác.

So sánh Agile với các phương pháp khác.jpg

2.1 Nhược điểm và khắc phục

  • Quy mô nhân lực thường giới hạn từ 7 đến 10 người, sẽ có trở ngại lớn nếu nguồn nhân lực yêu cầu vượt quá con số này ví dụ trong các cuộc họp trao đổi.

  • Số lượng yêu cầu có thể nhiều và khó quản lý nếu như nó bao gồm nhiều khía cạnh khác nhau về dự án.

  • Số lượng nhân lực càng tăng, chất lượng càng khó kiểm soát hơn. Việc kiểm tra mã thường xuyên và thiết lập các chỉ tiêu đánh giá năng lực của lập trình viên cho phép giảm thiểu nhược điểm này.

3. Những yếu tố thành công góp phần làm nên quy trình Agile

Factors 1.png

Factors 2.png

  • Kiểm thử viên là một phần trong đội dự án: bất cứ một bộ phận nào trong dự án đều có sự bình đẳng như nhau, đều có quyền và nghĩa vụ đóng góp xây dựng cho dự án đang thực hiện. Nếu thực hiện một dự án được ví như xây một tòa nhà, thì kiểm thử viên là một trong những người xây nên tòa nhà chứ không phải một cái máy cắt đá đơn thuần.

  • Tư duy của kiểm thử Agile: xóa bỏ những khuôn đóng cứng nhắc, nên hòa đồng với tất cả mọi người trong dự án và có thể chia sẻ những kinh nghiệm về dự án cho nhau. Cùng hướng đến mục tiêu hoàn thiện sản phẩm tốt nhất và coi trọng những giá trị mang lại cho khách hàng từ sản phẩm đã hoàn thiện.

  • Thực hiện kiểm thử tự động: ở mọi nơi có thể và một cách thiết thực nhất, cần sự phản hồi nhanh khi nhận những yêu cầu từ phía khách hàng.

  • Bao quát một bức tranh lớn: hợp tác tốt với những lập trình viên, tránh những mâu thuẫn không cần thiết để tập trung vào hoàn thành dự án, sử dụng ma trận kiểm thử Agile như một bản hướng dẫn để tham khảo.

  • Nền tảng từ kinh nghiệm thực tế: dựa trên những phiên kiểm thử đã thực hiện cộng với môi trường kiểm thử nhanh nhẹn, tạo nên một không gian làm việc với đầy đủ những thông tin cần thiết cho dự án.

  • Hợp tác: làm việc dựa trên sự hợp tác chặt chẽ với khách hàng và giữa những thành viên, những bộ phận trong đội dự án. Luôn bàn bạc thảo luận để giải quyết những vấn đề chung về dự án, sẵn sàng chia sẻ giúp đỡ nhau.

  • Không ngừng nâng cao: luôn trau dồi kiến thưc bản thân, luôn tìm tòi cái mới, rút kinh nghiệm từ những dự án đã làm trước đó, luôn có cái nhìn toàn diện về hệ thống.

4. Chất lượng của quy trình Agile và vai trò, hoạt động của kiểm thử viên Agile

4.1 Về chất lượng của quy trình Agile

  • Phạm vi toàn đội dự án:

    • Chất lượng không chỉ là phụ thuộc vào trách nhiệm của một kiểm thử viên.

    • Chất lượng không đơn thuần chỉ là dựa trên kết quả của việc thử nghiệm.

    • Vai trò thử nghiệm nâng cao chất lượng phần mềm xuyên suốt quá trình phát triển.

  • Tích hợp liên tục:

    • Những lập trình viên không được đưa mã lên hệ thống khi mà mã đó còn đang chứa lỗi.
  • Kiểm thử liên tục:

    • Tránh việc chậm trễ dự án bởi áp dụng kiểm thử big-bang (kiểm thử big-bang là việc ghép hết các module lại thành một sản phẩm hoàn chỉnh rồi mới thực hiện kiểm thử một cách tổng thể).

    • Phát hiện lỗi càng sớm thì việc sửa lỗi càng dễ dàng hơn.

4.2 Vai trò và hoạt động của kiểm thử viên Agile

Tester activities.png

  • Q1:

    • Đưa ra những ý tưởng kiểm thử, lập kế hoạch và thiết kế tài liệu kiểm thử.

    • Chuẩn bị cho giai đoạn kiểm thử, thiết kế test case.

    • Thực hiện kiểm thử.

  • Q2:

    • Khách hàng cung cấp tài liệu đặc tả về dự án.

    • Thiết kế test case dựa trên tài liệu đặc tả dự án và yêu cầu của khách hàng.

    • Thực hiện kiểm thử.

  • Q3:

    • Thiết kế kiểm thử chấp nhận bởi khách hàng để xem hệ thống đã đáp ứng được yêu cầu hay chưa.

    • Kiểm thử khảo sát nhằm tiếp cận hệ thống một cách tốt nhất và độc lập.

    • Kiểm thử tính khả dụng của hệ thống.

  • Q4:

    • Tạo những kịch bản kiểm thử.

    • Thực hiện kiểm thử.

    • Đưa ra những phân tích kiểm thử.

Kết luận:

  • Quy trình phát triển phần mềm Agile đưa ra một mô hình khá chung mang tính định hướng nên việc áp dụng Agile là khá linh động, tính tùy biến cao. Tuy nhiên phương pháp này không đưa ra được nhiều hướng dẫn cụ thể nên đòi hỏi người quản lý phải có kỹ năng tốt.

  • Vai trò của kiểm thử viên trong đội dự án là rất quan trọng, ngoài việc đóng góp ý kiến, bàn bạc, thảo luận và xử lý những vấn đề chung về dự án ra còn phải bao quát toàn bộ hệ thống, hiểu sâu và luôn sẵn sàng để xử lý những yêu cầu những thay đổi mới đối với dự án mà khách cung cấp. Nói một cách khác, kiểm thử viên là người chịu trách nhiệm cho việc bảo đảm chất lượng và hoàn thiện sản phẩm một cách tốt nhất.

Tài liệu tham khảo