Kiểm thử phần mềm, Liên quan đến AI

Prompt là gì? Cách tester bắt đầu dùng AI trong công việc hằng ngày

🤖 Nếu bạn hỏi mình “prompt là gì?”, thì câu trả lời thật lòng là: nó KHÔNG có gì mới cả. Điều thú vị là bạn vốn đã biết cách “viết prompt” từ lâu rồi.

Prompt là gì?

Chỉ là trước đây, khi bạn hay nhận được những “yêu cầu” từ Test Leader như: “em viết test case cho màn hình DX1010 nha”, “em post giúp chị con bug này: mô tả sơ sơ và kèm cái hình”, hay như là “em xem trước cái user story US-010, tuần sau mình bắt đầu tham gia dự án đó nha”.

Còn bây giờ, khi làm việc với AI, những yêu cầu trên được gọi là prompt. Quá trình viết những mô tả đó, người ta gọi là prompting.

Điều thú vị là tester vốn đã biết “viết prompt” từ lâu rồi, ví dụ như:

  • Khi viết test case: bạn được yêu cầu viết theo test case mẫu, đề cập các bước rõ ràng hay chỉ viết phần mô tả cho test case, kết quả mong đợi phải dựa vào tài liệu mô tả. Trường hợp nào không được mô tả thì phải hỏi lại PM hoặc khách hàng.
  • Khi báo lỗi: Bạn phải cung cấp ngữ cảnh rõ ràng, môi trường kiểm thử, các bước thực hiện và thông tin cần thiết để có thể tái hiện được lỗi.
  • Khi đặt câu hỏi để làm rõ yêu cầu: Bạn phải mô tả đầy đủ ngữ cảnh, vấn đề, và câu hỏi của bạn là gì. (Mời xem thêm: Cách đặt câu hỏi đúng dành cho tester)

Tất cả những điều này chính là tư duy prompting. Và trước giờ mình không gọi các “mô tả yêu cầu công việc đó” là “prompt” thôi.

Mình đã hiểu prompt như thế nào?

Thời gian đầu dùng ChatGPT, mình cũng giống nhiều bạn tester khác. Vào ChatGPT, gõ đại một câu kiểu: “viết test case cho màn hình log in” Và kết quả trả về thì… hầu như là không dùng được. Không phải vì AI dở, mà vì mình “giao việc” quá mơ hồ. Sau một thời gian, mình nhận ra một điều rất đơn giản: Prompt thực chất là cách mình giao việc cho AI.

Nếu xem AI là một bạn intern rất thông minh nhưng thiếu kinh nghiệm và chưa biết gì về dự án, thì:

  • Nếu bạn (là một mentor hay leader) mô tả rõ ràng khi giao việc, bạn ấy sẽ làm rất tốt.
  • Nếu bạn giao việc mà mô tả không rõ ràng (ví dụ như trên: viết test case cho 1 màn hình log in), thì kết quả là bạn ấy không biết như thế nào là đúng, nên sẽ làm sai hoặc làm đại theo cách hiểu của bạn ấy.

Nghe quen không? Vì mình đã từng gặp chuyện này với intern tester thật rồi.

Prompt đơn giản nhận được kết quả không tốt.

Prompt để Viết Test Case

Như đã đề cập ở trên, với những prompt đơn giản thì kết quả nhận được thường khá chung chung như: 1) Có vài happy case, 2) Một ít negative case, và 3) Do thiếu ngữ cảnh và mô tả yêu cầu nên những test case khác hầu như “không dùng được” – do không có gì mới.

Nếu bạn bổ sung thêm một vài thông tin như:

Bạn là một tester hơn 5 năm kinh nghiệm kiểm thử các ứng dụng web.
Viết test case cho màn hình đăng nhập với các thông tin sau:

  • Đăng nhập bằng email và password
  • Kiểm định dạng email trước khi thực hiện đăng nhập
  • Khoá tài khoản sau 5 lần đăng nhập thất bại

Yêu cầu: Bộ test case phải bao gồm positive, negative, và edge cases. Kết quả trả về được trình bày theo dạng bảng Output dạng bảng gồm một số thông tin như Test ID, Test Summary, Test Precondition, Test Steps, và Expected Result.

Lúc này bạn sẽ thấy kết quả khác hẳn:

  • Bộ test case trả về sẽ có cấu trúc rõ ràng
  • Độ bao phủ yêu cầu sẽ tốt hơn
  • Có thể chỉ cần bổ sung ít trường hợp là sử dụng được ngay

Cùng một công cụ AI, nhưng kết quả hoàn toàn khác nhau. Lý do chính nằm ở “cách ra lệnh cho AI”.

Trường hợp AI hỗ trợ tester rất tốt: tìm edge case

Có những lúc mình bị “bí”, đặc biệt là khi kiểm thử những chức năng phức tạp và phụ thuộc vào nhiều yếu tố đầu vào. Ví dụ như một chức năng khá quen thuộc, có mặt trên mọi ứng dụng web là upload file.

Thay vì nghĩ một mình, mình hay ngồi brainstorm (động não) cùng AI – cứ xem AI như một tester đồng nghiệp có kiến thức và hiểu biết rộng. Mình hỏi AI: Liệt kê các edge case cho chức năng upload file trong một ứng dụng web, với một số thông tin cơ bản như sau: chỉ chấp nhận các định dạng jpg và png. Dung lượng tối đa 5MB).

AI thường trả về một danh sách khá dài, đơn cử như:

  • File vượt quá size (ví dụ 5.01 MB)
  • Đổi tên file sang định dạng khác (chỉ đổi đuôi file chứ không chuyển đổi định dạng)
  • Upload nhiều file cùng lúc
  • Mất kết nối mạng trong lúc đang tải file lên hệ thống
  • File bị gián đoạn, file bị nhiễm virus, v.v…

Dĩ nhiên không phải lúc nào cũng đúng, hay trường hợp nào cũng dùng, nhưng AI giúp mình nghĩ nhanh hơn và bao phủ tốt hơn. Từ những trả lời đó, mình có thể hỏi sâu hơn về một khía cạnh, ví dụ hỏi thêm các trường hợp liên quan đến mất kết nối mạng.

Xem thêm Edge case là gì?

Xem AI như một Mentor

Một trường hợp mình thấy rất hữu ích nữa là nhờ AI để review bộ test case mà mình xem là “đã hoàn chỉnh”.

Có những lúc chỉnh sửa và bổ sung đầy đủ, mình nhờ AI: Review bộ test case này, chỉ ra những trường hợp còn thiếu so với yêu cầu được mô tả trong file DX1010. (Có đính kèm file mô tả yêu cầu). – Tạm thời bỏ qua câu hỏi “Làm vậy thì AI có lấy thông tin của mình không?” Kết quả khá bất ngờ. AI thường chỉ ra các trường hợp mình còn sót, hoặc test case nào có kết quả chưa rõ ràng (so với tài liệu yêu cầu), hoặc đề xuất thêm edge case.

Dù không phải lúc nào AI cũng đúng 100%, nhưng chất lượng hiện tại vẫn đủ để mình “giật mình” và nhìn lại.

Cách viết prompt tốt rất đơn giản

Sau một thời gian, mình rút ra được một cách viết prompt rất đơn giản. Mình không cần theo công thức gì cao siêu phức tạp. Mình luôn giữ 4 thứ trong đầu:

  • Nói rõ mình muốn AI đóng vai gì (ví dụ: Bạn là một tester 5 năm kinh nghiệm kiểm thử web, v.v…)
  • Mô tả ngữ cảnh (ví dụ: chức năng gì, loại hệ thống web hay mobile, đang test e2e trên UI hay API, v.v…)
  • Giao việc cụ thể (ví dụ: Bạn cần phải viết test case, review test case, bổ sung edge case, v.v…)
  • Nói rõ muốn kết quả được trình bày như thế nào (ví dụ: test case được trình bày theo dạng bảng với các cột thông tin Test case ID, Test Steps, v.v…)

Chỉ cần vậy thôi thì kết quả cũng đã khác rất nhiều rồi. Nếu bạn nắm vững các kỹ thuật prompting thì càng tốt hơn.

Một số chú ý khi làm việc với AI

Dưới đây là vài điều mình thấy quan trọng và hơi “thực tế” một chút khi làm việc với AI:

  • Đừng bao giờ tin AI 100%. Hãy luôn tỉnh táo để xem lại kết quả AI trả về trước khi sử dụng.
  • AI không hiểu nghiệp vụ hệ thống của bạn. Vì thế hãy luôn mô tả hoặc cung cấp thông tin cần thiết như tài liệu mô tả yêu cầu.
  • Prompt càng cụ thể càng tốt. Đỡ mất thời gian trình bày tới lui và khi bạn mô tả nhiều thông tin phân mảnh, AI trở nên “bị ngu hơn” – Lúc này bạn nên tạo một cuộc trao đổi mới và mô tả rõ ràng lại từ đầu 😀
  • Và quan trọng nhất: Bạn phải chịu khó cung cấp thông tin, hỏi lại AI, và “nhỏ nhẹ” với AI như một đứa trẻ 😭

Mình thường không dùng một prompt duy nhất mà sẽ lặp lại quy trình 2 bước đơn giản sau:

  1. Mô tả yêu cầu → xem kết quả
  2. Điều chỉnh mô tả → hỏi lại

Kết lại, dưới góc nhìn cá nhân

Với mình, prompting không phải là một kỹ năng mới hoàn toàn. Nó chỉ là phiên bản nâng cấp của những gì chúng ta đã và đang làm từ lâu:

  • Viết rõ ràng
  • Suy nghĩ có cấu trúc và hệ thống
  • Đặt câu hỏi đúng

AI chỉ là công cụ. Prompt là cách mình sử dụng công cụ đó. Nếu bạn là tester và mới bắt đầu với AI, lời khuyên của mình rất đơn giản: Đừng cố viết prompt hay ngay từ đầu. Cứ dùng, sai thì sửa. Vì thật ra, đó cũng chính là cách mình trau dồi kinh nghiệm kiểm thử từ trước tới giờ rồi.

You Might Also Like

Leave a Reply

Your email address will not be published. Required fields are marked *