**Đặt câu hỏi đóng một vai trò quan trọng trong việc kiểm thử phần mềm. Thực ra nó không hề dễ dàng chút nào, nó có thể là một trong những kỹ năng khó nhất để làm chủ được vấn đề. Nhưng những nỗ lực đều có giá trị, bạn đặt câu hỏi càng nhiều thì bạn học được càng nhiều. Kiểm thử là một quy trình đánh giá một sản phẩm bằng việc tìm hiểu về nó thông qua việc thăm dò và thử nghiệm. Sau đó tìm hiểu về thứ mà những người khác mong đợi, đó cũng là một phần của việc thăm dò. Bởi vậy, Với một kiểm thử viên, sẽ rất thông minh khi bạn biết cách để đặt ra những câu hỏi tốt.** **Tại đây,tôi sẽ chia sẻ 6 lời khuyên trong việc đặt câu hỏi có thể giúp bạn lấy được câu trả lời, giúp cho việc kiểm thử của bạn vượt qua được giới hạn chỉ hiểu vấn đề ở mức bề mặt.** ![maverick-vlog-33-qa-1.jpg](/uploads/9045368b-8b7e-4238-8cae-56fadb59b011.jpg) **1.Học từ những đứa trẻ** Đặt câu hỏi rất quan trọng nhưng mọi người thường e ngại nó,tại sao chúng ta phải quá miễn cưỡng khi đặt ra những câu hỏi. Đó là do 1 trong 2 lý do sau: - Chúng ta lo sợ rằng trông mình sẽ thật ngốc ngếch.Khi chúng ta đặt câu hỏi, chúng ta đang nói cho mọi người biết rằng chúng ta không biết một vấn đề nào đó.Đặt ra một câu hỏi có thể khiến cho bạn bị tổn thương. - Chúng ta tin rằng chúng ta “Phải” biết những thứ đó. Điều đó đặc biệt đúng với những người có nhiều kinh nghiệm. Họ thường có xu hướng đảm nhận mọi việc và nói”Tôi đã làm nghề kiểm thử phần mềm 12 năm, bản thân tôi có thể nắm được vấn đề” Trẻ con thì lại ngược lại. Chúng không quan tâm người khác nghĩ gì về chúng, chúng đặt ra những câu hỏi mà không hề thấy xấu hổ, và nếu như câu trả lời của bạn chưa thỏa mãn sự tò mò của chúng, chúng sẽ vẫn tiếp tục hỏi cho đến khi nào nhận được câu trả lời mà chúng có thể hiểu được(Hoặc cho đến khi bạn quá mệt vì việc phải trả lời chúng thì thôi). Kết quả: Bọn trẻ sẽ học những thứ mới rất nhanh. Bởi vậy hãy học lời khuyên này từ chính bọn trẻ, và đừng bao giờ bỏ qua vấn đề khi mà chúng ta cảm thấy còn lăn tăn, hãy hỏi cho đến khi bạn hiểu thì thôi. Bước đầu tiên của việc học cách đặt câu hỏi là có đủ can đảm để hỏi lại tất cả. **2. Giải quyết vấn đề tận gốc** ![31125841-3d-Illustration-de-l-homme-pla-ant-des-cubes-de-rca-analyse-des-causes-profondes-3d-personnes-de-rac-Banque-d'images.jpg](/uploads/354ed4df-389e-4252-818a-0fb5819e1c9f.jpg) Một khi bạn sẵn sàng để hỏi, bạn phải hỏi cho đúng. Thường những câu hỏi mà chúng tôi cho là nông cạn và không giải thích được nguyên nhân gốc rễ. Đặt câu hỏi như thế bạn có thể nhận được câu trả lời, nhưng nó giống như kiểu bạn đang để người bạn hỏi tìm cách giải quyết vấn đề của họ. Chứ không phải bạn đang giải quyết vấn đề của mình. Thay vào đó, hãy hình dung ra thông tin mà bạn thực sự muốn nhận được từ câu trả lời và sau đó hãy đặt câu hỏi. **3. 5W1H: who, what, when, where, why, and how.** ![Question-to-Ask.jpg](/uploads/160df578-e746-42e2-b184-15096b99695e.jpg) _**Xác định mục tiêu yêu cầu (Why)**_ Khi phải làm một công việc, điều đầu tiên mà bạn phải quan tâm là: – Tại sao bạn phải làm công việc này? – Nó có ý nghĩa như thế nào với tổ chức, bộ phận của bạn? – Hậu quả nếu bạn không thực hiện chúng? Why (tại sao?) là 1W trong 5W. Khi bạn thực hiện một công việc thì điều đầu tiên bạn nên xem xét đó chính là why với nội dung như trên. Xác định được yêu cầu, mục tiêu giúp bạn luôn hướng trọng tâm các công việc vào mục tiêu và đánh giá hiệu quả cuối cùng. _**Xác định nội dung công việc (What?)**_ 1W = what? Nội dung công việc đó là gi? Hãy chỉ ra các bước để thực hiện công việc được giao. Bạn hãy chắc rằng, bước sau là khách hàng của bước công việc trước. _**Xác định phạm vi công việc (where)**_ Where: ở đâu, có thể bao gồm các câu hỏi sau: – Công việc đó thực hiện tại đâu? – Giao hàng tại địa điểm nào? – Kiểm tra tại bộ phận nào? – Testing những công đoạn nào?… _**Xác định thời gian thực hiện công việc(when)**_ When: Công việc đó thực hiện khi nào, khi nào thì giao, khi nào kết thúc… Để xác định được thời hạn phải làm công việc, bạn cần xác định được mức độ khẩn cấp và mức độ quan trọng của từng công việc.Có 4 loại công việc khác nhau: + Công việc quan trọng và khẩn cấp. + Công việc không quan trọng nhưng khẩn cấp. + Công việc quan trọng nhưng không khẩn cấp. + Công việc không quan trọng và không khẩn cấp. Bạn phải thực hiện công việc quan trọng và khẩn cấp trước. _**Xác định ai sẽ thực thi công việc(Who)**_ Ai, bao gồm các khía cạnh sau: – Ai làm việc đó? – Ai kiểm tra? – Ai hổ trợ? – Ai chịu trách nhiệm…? **4. 5why** ![6168558483.png](/uploads/1f58d738-f8fd-4f39-ab7f-aebbcedda181.png) 5 whys là một kỹ thuật đơn giản dùng để giải quyết vấn đề, giúp người sử dụng nhanh chóng tìm ra gốc rễ thật sự.Lợi ích của 5 Whys bao gồm: • Nhanh chóng xác định nguyên nhân gốc rễ dẫn đến vấn đề. • Dễ học và dễ áp dụng . Sau đây là một ví dụ về phân tích 5 Whys như một kỹ thuật giải quyết vấn đề hiệu quả: 1. Tại sao khách hàng của chúng ta không hài lòng? Bởi vì chúng ta đã không cung cấp dịch vụ đúng thời hạn như chúng ta hứa. 2. Tại sao chúng ta không thể đáp ứng được các hợp đồng về thời gian hay tiến độ giao hàng? Vì chúng ta đã nghĩ nó không tốn nhiều thời gian như vậy. 3. Tại sao ta mất nhiều thời gian hơn dự kiến? Bởi vì chúng ta không đánh giá đúng sự phức tạp của công việc. 4. Tại sao chúng ta đánh giá thấp sự phức tạp của công việc? Bởi vì chúng ta đã vội vã ước lượng thời gian cần thiết để hoàn thành công việc, trong khi chưa liệt kê các giai đoạn cụ thể để hoàn thành dự án. 5. Tại sao chúng ta không làm vậy? Bởi vì chúng ta đang phải chạy các dự án khác. Rõ ràng, chúng ta cần phải xem xét lại việc hoạch định thời gian của mình và mô tả đầy đủ các công đoạn quan trọng. **5. Kỹ thuật gỡ rối Rubber Duck** Có một khái niệm đẹp trong lập trình được gọi là rubber duck debugging, đó là mô tả kỹ thuật giải thích từng dòng code một cho một con vịt cao su vô tri vô giác. Nó được sử dụng khi một đoạn code cụ thể bị hỏng, nhưng không có lý do rõ ràng cho nó. Khi lập trình viên đang bị mắc kẹt trong một vấn đề, anh ấy sẽ giải thích từng dòng code của anh ấy cho một con vịt cao su đặt trên bàn trong khi anh ấy đang debug code.Thường thì lập trình viên sẽ tìm được câu trả lời cho vấn đề của anh ấy khi anh ấy dành ra thời gian để giải thích vấn đề lớn cho một đối tượng vô tri vô giác một cách vô tư Mặc dù, phương pháp này đang áp dụng trong kỹ thuật lập trình, nhưng ý tưởng này mà áp dụng trong kiểm thử phần mềm là rất tốt. Đương nhiên bạn có thể giải thích vấn đề cho đồng nghiệp của bạn để tư duy lại vấn đề, nhưng khi hỏi 1 con vịt sẽ giúp bạn không làm gián đoạn bạn đồng nghiệp và nó có vẻ sẽ thú vị hơn. **6. Dừng lại và suy nghĩ** Chúng ta sẽ nói về việc ai đó đưa cho bạn 1 vấn đề, trước khi tham gia vào giải quyết nó, hãy chắc chắn rằng bạn hiểu đầy đủ điều gì đang xảy ra. Bạn hãy dùng các câu hỏi sau để tiếp cận phân tích vấn đề: - Điều đã nghe đã được truyền đạt đã đúng chưa? Nghĩa của nó có phải như những gì tôi nghĩ không? - Cái đó có phù hợp với kinh nghiệm và hiểu biết của tôi về nó không? Nó có thể là như thế nào? Có lời giải thích nào chính đáng hơn cho điều bạn đang nghe hoặc đang đọc không? - Thông tin bổ sung cho phần có thể còn thiếu là gì? Tôi có thể suy diễn ra ý nghĩa khác là gì? - Cốt yếu hay kết quả của việc giải thích này là gì? Có thể làm theo những gì? Chúng ta làm/ nói/ hỏi-tiếp theo về cái gì? Khi bạn dừng 1 giây để dùng các câu hỏi trên, cuộc hội thoại sẽ đi theo chiều hướng dễ dàng hơn và bạn có thể gộp những ý nghĩ trước đó của bạn để cố gắng đi đến cách giải quyết vấn đề. **Kết Luận** _**Bạn sẽ không bao giờ học được điều gì qua việc nói, chỉ học được mọi điều khi bạn đặt ra những câu hỏi?**_ Đặt câu hỏi đúng là trọng tâm của sự giao tiếp và trao đổi thông tin hiệu quả. Đưa ra câu hỏi đúng đắn trong mọi tình huống giúp bạn cải thiện một loạt kĩ năng trong giao tiếp: giả dụ, bạn có thể thu thập các thông tin hữu ích hơn, học hỏi được nhiều hơn; xây dựng quan hệ bền vững hơn; quản lý cấp dưới hiệu quả hơn và giúp đối phương học hỏi được điều gì đó.