Kiểm thử phần mềm: Quản lý kiểm thử (Phần 1)
Tiếp tục series tóm tắt từ cuốn sách: FOUNDATIONS OF SOFTWARE TESTING ISTQB CERTIFICATION của tác giả Dorothy Graham, Erik van Veenendaal, Isabel Evans và Rex Black và một số kinh nghiệm của cá nhân trong quá trình làm việc nhằm cung cấp cho các bạn một cái nhìn tổng quan về kiểm thử phần mềm và các kiến thức cơ bản về kiểm thử, các kỹ thuật dùng trong kiểm thử và các công cụ hỗ trợ.
Để tiếp nối nội dung từ bài viết Kiểm thử phần mềm: , trong bài viết lần này, mình sẽ giới thiệu Cách tổ chức kiểm thử và cách lập kế hoạch kiểm thử
1. Cách tổ chức kiểm thử
Trong phần này chúng ta sẽ tìm hiểu tại sao phải tổ chức kiểm thử trong 1 dự án. Bắt đầu sẽ xem xét giá trị mà kiểm thử độc lập mang lại và thảo luận các khả năng tiềm ẩn rủi ro mà kiểm thử độc lập mang lại. Chúng ta sẽ kiểm tra các thành viên của các nhóm kiểm thử khác nhau với các loại kiểm tra khác nhau mà chúng ta muốn có trong nhóm, tự bản thân chúng ta làm quen với các nhiệm vụ điển hình được thực hiện bởi các nhà lãnh đạo và người kiểm thử. Khi kết thúc phần này chúng ta sẽ hiểu được các thuật ngữ: người kiểm thử, lãnh đạo kiểm thử, quản lý kiểm thử.
1.1. Kiểm thử độc lập và tích hợp
- Trong những chương trước, chúng ta đã nói đến kiểm thử độc lập mang quan điểm tâm lý của cá nhân người kiểm thử và chúng ta cũng đã biết trong 1 dữ án, không chỉ có duy nhất Tester người kiểm thử, các developer, người review... cũng có tham gia kiểm thử và ở mỗi vị trí khác nhau thì quan điểm kiểm thử cũng khác nhau theo đó. Các Developer họ sẽ kiểm tra những phần việc mà họ phát triển, sự tích hợp của các thành phần đó trong hệ thống, họ có thể phát hiện những sai lầm mắc phải, khắc phục trước khi người khác phát hiện ra. Họ cũng có thể giúp kiểm tra phần việc của những người khác trong team (review chéo) hoặc tham gia vào các buổi họp để review nhóm (Review Meeting). Cũng tương tự như vậy, các tài liệu, sản phẩm khác trong dự án cũng cần được kiểm tra trước hết bởi chính người thực hiện, sau đó nhờ tới sự giúp đỡ của các thành viên khác trong dự án để review. Tuy nhiên, chúng ta đều biết rằng, rất khó có để tìm ra sai lầm cá nhân. Vì vậy việc nhờ một người khác giúp kiểm tra sản phẩm của mình là một cách hữu hiệu để phát hiện những sai lầm tồn tại và đưa ra sản phẩm cuối cùng hoàn thiện (chính là để tester vào kiểm tra phần mềm)
- Ý nghĩa của "Độc lập" việc tách biệt trách nhiệm của tester ra khỏi phần việc của developer được thực hiện nhằm tập trung năng lực và để cung cấp những lợi ích của nguồn lực kiểm thử chuyên nghiệp được đào tạo. Trong các dự án, unit test được thực hiện bởi nhóm developer, còn các bước sau được làm độc lập bởi nhóm test team hoặc bởi khách hàng.
- Ưu điểm của kiểm thử độc lập:
- Đối với các dự án quan trọng, lớn, phức tạp hoặc an toàn kiểm thử độc lập là phương án tốt nhất để có nhiều nhiều cấp độ kiểm thử với một hoặc tất cả các mức độ thực hiện.
- Nhìn thấy các lỗi khác nhau, khách quan, không thiên vị.
- Một kiểm thử độc lập có thể xác minh các giả định về người kiểm thử thực hiện trong các đặc tả kỹ thuật hay hệ thống.
- Nhược điểm của kiểm thử độc lập:
- Mất thời gian tìm hiểu
- Gây cảm giác bị cô lập.
1.2. Test leader (Trưởng nhóm kiểm thử)
- Tham gia vào việc lập kế hoạch, giám sát và kiểm soát các hoạt động kiểm thử
- Phối hợp với các bên liên quan khác đưa ra mục tiêu kiểm thử, chính sách kiểm tra trong nhóm (tổ chức) (nếu chưa có), chiến lược và kế hoạch kiểm thử
- Ước tính việc thực hiện kiểm thử và đàm phán với ban quản lý để có các nguồn lực cần thiết, xác nhận loại kiểm thử thích hợp qua đó sẽ lên kế hoạch, lựa chọn công cụ và đào tạo đội kiểm thử.
- Tham khảo ý kiến với các nhóm khác ví dụ: lập trình viên,.. để có thể dẫn dắt, hướng dẫn và giám sát việc phân tích, thiết kế, hoàn tất và thực thi các testcase, đảm bảo việc quản lý cấu hình đúng của các chương trình test.
- Khi việc thực thi kiểm thử sắp được tiến hành, test leader đảm bảo môi trường kiểm thử được đưa ra trước khi thực hiện kiểm thử
- Quản lý quá trình thực hiện kiểm thử, lên kế hoạch kiểm thử, sau đó giám sát, đo lường, kiểm soát, báo cáo tiến độ kiểm thử, chất lượng sản phẩm, kết quả kiểm tra, thích ứng với kế hoạch và bù đắp khi cần thiết để điều chỉnh cho phù hợp với các điều kiện tiến triển
- Trong quá trình thực thi và khi kết thúc dự án viết báo cáo tóm tắt về tình trạng kiểm thử.
1.3. Người kiểm thử
- Hiểu được các yêu cầu của dự án.
- Chuẩn bị / Cập nhật tài liệu trường hợp thử nghiệm để thử nghiệm các ứng dụng từ tất cả các khía cạnh.
- Chuẩn bị các thiết lập thử nghiệm. ( môi trường test, thiết bị test, dữ liệu test...)
- Triển khai xây dựng trong các thiết lập cần thiết. ( Database, software điều kiện tiền đề)
- Xây dựng các trường hơp kiểm tra và thực hiện các trường hợp thử nghiệm.
- Cập nhật các tài liệu kết quả thử nghiệm.
- Tham dự các cuộc meeting của khách hàng thường xuyên.
- Log các defect lên công cụ theo dõi bug ( Bug tracking tool / bug report).
- Kiểm tra các defect.
- Thảo luận nghi ngờ / truy vấn với đội phát triển / Client.
- Tiến hành đào tạo nội bộ trên các sản phẩm khác nhau.
1.4. Các kỹ năng kiểm thử mà một nhân viên kiểm thử cần có
- Cần có những hiểu biết cơ bản về kiểm thử cũng như trình độ xã hội: trình độ học vấn, khả năng chuẩn bị, đưa ra bằng văn bản, báo cáo bằng lời nói, khả năng giao tiếp hiệu quả …
- Phải hiểu được các hành vi có chủ định, các vấn đề hệ thống sẽ giải quyết, các quy trình sẽ được tự động để phát hiện ra các hành vi không đúng trong khi kiểm thử và xác nhận các chức năng, tính năng đã làm
- Nhận thức được các vấn đề, hạn chế, khả năng của công nghệ thực thi đã chọn để có thể tìm ra các vấn đề, nhận ra các chức năng, tính năng có thể bị lỗi
- Phải biết và tuân thủ theo đề mục kiểm thử để thực hiện các nhiệm vụ kiểm thử được phân công một cách hiệu quả.
2. Kế hoạch kiểm thử, dự kiến và chiến lược
2.1 Mục đích và nội dung của kế hoạch kiểm thử
Mục đích của việc lập kế hoạc kiểm thử
- Viết kế hoạch test để mô tả lại suy nghĩ của người kiểm thử thành một hướng dẫn, để các thành viên cùng có thể theo dõi và hiểu
- Viết kế hoạch test để tập trung vào 1 chủ đề quan trọng
- Cung cấp thông tin về quy trình kiểm thử sẽ xảy ra trong tổ chức kiểm thử
- Cho mỗi thành viên trong đội kiểm thử có hướng đi đúng
- Gán các trách nhiệm rõ ràng cụ thể cho mỗi thành viên đội kiểm thử
- Có lịch biểu làm việc rõ ràng và các thành viên có thể làm việc với nhau tốt hơn
Nội dung kiểm thử
Một kế hoạch kiểm thử cần có các nội dung sau
- Phạm vi/mục tiêu kiểm thử
- Các chiến lược được dùng
- Các tài nguyên phần cứng và phần mềm phục vụ kiểm thử
- Các nhu cầu về nhân viên và huấn luyện nhân viên
- Các tính chất cần được kiểm thử
- Các rủi ro và sự cố bất ngờ
- Lịch kiểm thử cụ thể
- Các kênh thông tin liên lạc
- Cấu hình cho từng phần tử như kế hoạch kiểm thử, testcase, thủ tục kiểm thử...
- Môi trường kiểm thử
- Tiêu chí đầu vào và tiêu chí dừng kiểm thử
- Các kết quả phân phối
2.2 Cách tiếp cận để lập kế hoạch kiểm thử
- Một kế hoạch kiểm thử tốt cần ngắn gọn và tập trung đúng trọng tâm, đáp ứng mục đích kiểm thử
- Cần lựa chọn chiến lược phù hợp
- Phân chia công việc kiểm thử thành các mức độ khác nhau phù hợp (Kiểm thử thành phần, kiển thử tích hợp...). Trong lúc lập kế hoạch nên phối hợp các mực độ kiểm thử để tránh có khoảng chống hoặc chồng chéo khi kiểm thử
- Cần phải lập kế hoạch để tích hợp và điều phối tất cả các công việc kiểm thử được thực hiện với phần còn lại của dự án
- Cần có một danh sách gợi ý chỉ định ai sẽ làm gì, khi nào và như thế nào.
- Xác định rõ nguồn lực được yêu cầu để thực hiện công việc. Để xác định được nguồn lực cần có sự đồng thuận trong nhóm, bao gồm cả với người quản lý dự án
- Cần kế hoạch cho việc lưu trữ tài liệu, đưa ra các mẫu cho người kiểm thử (VD: Mẫu testcase..). Nếu muốn sử dụng công cụ quản lý tài liệu cần lên kế hoạch sử dụng công cụ gì
- Xác định các tiêu chuẩn đầu vào và tiêu chuẩn đóng
- Tiêu chuẩn đầu vào: Là các yếu tố đầu vào như: Sự sẵn sàng về nhân sự, công cụ, tài liệu; các mục cần kiểm thử, ..
- Tiêu chuẩn đóng: là các tiêu chí dừng vào cuối dự án. Tuy nhiên, cần nhớ: một dự án thành công là khi có sự cân bằng giữa chất lượng, ngân sách, kế hoạch và các tính năng quan trọng.
2.3 Ước tính lợi ích và chi phí kiểm thử
- Như đã tìm hiểu qua các chương trước, chúng ta đã biết quy trình kiểm thử bao gồm: lập kế hoạch và kiểm soát, phân tích và thiết kế, thực hiện và thi hành, đánh giá báo cáo và tiêu chuẩn để dừng và kiểm tra việc kết thúc. Trong mỗi giai đoạn, chúng ta cần xác định các hoạt động và trong mỗi hoạt động xác định các nhiệm vụ và có cả nhiệm vụ phụ bằng cách làm ở cả 2 hướng: phía trước và phía sau.
- Làm việc từ hướng phía trước có nghĩa là bắt đầu từ khâu lập kế hoạch và từng bước di chuyển đến các hoạt động tiếp theo.
- Làm việc từ hướng phía sau có nghĩa là chúng ta xem xét từ các rủi ro đã được xác định trong quá trình phân tích rủi ro, đối với những rủi ro dự định giải quyết trong quá trình kiểm thử, hãy tự đưa ra những câu hỏi "Vậy những hoạt động và nhiệm vụ nào được yêu cầu trong từng giai đoạn kiểm thử để giải quyết rủi ro".
- Xác định cấu hình môi trường kiểm thử như mô phỏng hiệu suất dựa trên thiết kế môi trường thực để tìm ra các lỗi tắc nghẽn tiềm ẩn, nhận đúng phần cứng, phần mềm, công cụ và thiết lập phần cứng, phần mềm và công cụ phù hợp
- Lập kế hoạch kiểm thử hiệu năng là một hoạt động trong giai đoạn lập kế hoạch kiểm thử cần ước tính thời gian cần thiết để soạn thảo, xem lại và hoàn thiện một kế hoạch kiểm thử hiệu năng.
- Khi phân chia công việc, phải nhớ rằng cần ước tính ngay từ đầu và theo dõi, kiểm soát, để đảm bảo tính chính xác của việc ước tính
- Kiểm soát đảm bảo rằng nên chia nhỏ công việc một cách phù hợp. Điều này có nghĩa là các nhiệm vụ phải ngắn gọn nếu nhiệm vụ dài dòng thì các rủi ro càng cao và sẽ sảy ra phức tạp của các nhiệm vụ con ẩn trong các nhiệm vụ lớn
2.4 Các kỹ thuật dùng để ước tính
Các kỹ thuật dùng để ước tính:
-
Tư vấn cho những người sẽ thực hiện và những người khác có chuyên môn về các công việc phải làm: Yêu cầu các cá nhân đóng góp và các chuyên gia liên quan đến làm việc với các nhân viên có kinh nghiệm để phát triển cấu trúc phân rã công việc cho dự án, cùng nhau làm việc để hiểu, mỗi nhiệm vụ, từng sự nỗ lực, thời hạn, sự phụ thuộc, sự tin tưởng và các yêu cầu về tài nguyên. Sử dụng công cụ Microsoft project hoặc Whiteboard và sticky notes sau đó có thể dự đoán được ngày kết thúc và các mốc quan trọng. Kỹ thuật này thường được gọi là ước lượng từ dưới lên “Bottom up” bởi vì bắt đầu ở mức thấp nhất từ việc phân cấp trong cấu trúc phân rã công việc, nhiệm vụ, thời hạn, sự cố gắng, sự tin tưởng và nguồn tài nguyên được tăng thêm cho mỗi nhiệm vụ.
-
Phân tích các số liệu từ các dự án trước đó và từ dữ liệu ngành: Số liệu phân tích có thể đơn giản hoặc phức tạp do mình tự làm ra nó. Cách tiếp cận đơn giản nhất là hỏi “ Thường thì có bao nhiêu người kiểm thử của mỗi nhà phát triển trên một dự án?”. Cách tiếp cận đáng tin cậy hơn bao gồm: phân loại dự án về kích thước( nhỏ, trung bình hoặc lớn), độ phức tạp( đơn giản, trung bình hoặc phức tạp) và sau đó thấy được trung bình mất bao lâu để kết hợp các dự án có các kích thước riêng biệt và độ phức tạp đã thực hiện trong quá khứ. Cách tiếp cận khác là xem xét sự cố gắng trung bình cho mỗi trường hợp kiểm thử trong các dự án tương tự đã thực hiện và sử dụng số ước tính trong các trường hợp kiểm thử để ước tính tổng sự cố gắng.
-
Ngoài ra, có cách tiếp cận phức tạp bao gồm việc xây dựng các công thức toán học trong một bảng tính mà xem xét được lịch sử và ngành công nghiệp trung bình từ các tham số chính nhất định, số lượng các kiểm thử được chạy bởi người kiểm thử mỗi ngày, số lỗi được tìm ra bởi người kiểm thử mỗi ngày… sau đó phân cách các tham số này để ước tính thời hạn và sự cố gắng cho các nhiệm vụ hoặc hoạt động chính trong dự án.
2.5 Các nhân tố ảnh hưởng đến kiểm thử
- Chất lượng tài liệu giúp người kiểm thử làm tốt hơn, hiệu quả hơn trong việc xác định các trường hợp kiểm thử. Tầm quan trọng của các đặc điểm chất lượng phi chức năng như khả năng sử dụng, độ tin cậy, bảo mật, hiệu năng cũng ảnh hưởng đến nỗ lực kiểm thử. Những mục tiêu để kiểm tra này có thể tốn kém và mất thời gian. Tính phức tạp là một nhân tố sản phẩm chính.
Ví dụ: về các cân nhắc của độ phức tạp là:
- Khó khăn trong việc hiểu rõ và xử lý chính xác các vấn đề mà hệ thống đang được xây dựng để giải quyết (ví dụ: phần mềm điện tử, phần mềm khảo sát dầu mỏ…).
- Việc sử dụng các công nghệ tiên tiến, đặc biệt là những người kéo dài thời gian và rút ngắn các bản ghi đã được chứng minh.
- Sự cần thiết của độ phức tạp và có lẽ cần nhiều cấu hình kiểm thử đặc biệt khi có sự tin tưởng vào sự xuất hiện kịp thời của các phần mềm khan hiếm, phần cứng và các nguồn cung cấp khác.
- Sự phổ biến của quy định an ninh nghiêm ngặt, quy trình quản lý chặt chẽ và các quy định khác.
Sự phân bố địa lý của nhóm, đặc biệt là nhóm vượt qua các múi giờ( như nhiều việc thuê ngoài phải nỗ lực để làm. - Mặc dù tài liệu dự án tốt là một yếu tố tích cực nhưng nếu phải đưa ra các tài liệu chi tiết chẳng hạn như các testcase được xác định tỉ mỉ, dẫn đến sự chậm trễ.trong quá trình thực thi kiểm thử, phải duy trì tài liệu chi tiết như vậy đòi hỏi nhiều nỗ lực, cũng như là làm việc với các dữ liệu dễ bị tổn hại phải được duy trì hoặc khôi phục thường xuyên trong quá trình kiểm thử.
- Cuối cùng, tăng kích thước của sản phẩm dẫn đến tăng quy mô của dự án và nhóm dự án. Sự gia tăng dự án và nhóm dự án làm tăng sự khó khăn trong việc dự báo và quản lý chúng. Điều này dẫn đến tỷ lệ không tương xứng về sự sụp đổ của các dự án lớn.
Link bài viết tiếp theo Quản lý kiểm thử (Phần 2)