Software Testing và những kiểu tư duy khác nhau

Khi nói đến kiểm thử phần mềm (software testing), bộ não con người chính là tool test tốt nhất. Khi test phần mềm, chúng ta xử lý thông tin, giải quyết các vấn đề, đưa ra quyết định và tạo ra những ý tưởng mới.

Với tư cách là một QA/tester, chúng ta nên nhận thức rằng có nhiều cách tư duy khác nhau và chúng ta có thể liên hệ chúng dưới những hoàn cảnh khác nhau. Một ví dụ cơ bản, khi chúng ta nhìn vào diagram thiết kế, chúng ta cần phải phân tích sơ đồ thiết kế này. Khi chúng ta nghĩ tới những scenario này, chúng ta cần tư duy một cách trừu tượng.

Những cách test khác nhau đòi hỏi những những tiến trình phân tích, suy nghĩ, lập luận khác nhau. Cũng bởi lí do này, sẽ là rất quan trọng nếu chúng ta có thể "switch on" những tư duy khác nhau này cho mỗi hoạt động test.

Những kiểu tư duy được đề cập trong bài post này:

  • Creative thinking - Tư duy sáng tạo
  • Analytical thinking - Tư duy phân tích
  • Critical thinking - Tư duy phản biện
  • Concrete thinking - Tư duy cụ thể
  • Abstract thinking - Tư duy trừu tượng
  • Divergent thinking - Tư duy bất đồng
  • Convergent thinking - Tư duy hội tụ
  • Sequential thinking - Tư duy tuần tự
  • Holistic thinking - Tư duy toàn diện

Cách cách tư duy trong bối cảnh Kiểm thử phần mềm (Software Testing)

Cùng tìm hiểu xem những cách tư duy khác nhau và làm thế nào để áp dụng vào từng bối cảnh Kiểm thử phần mềm và những hoạt động test khác nhau.

Tư duy sáng tạo và tư duy từng phần - Creative or Lateral Thinking

Định nghĩa cơ bản nhất của tư duy sáng tạo là nhìn nhận vấn đề theo một hướng mới. Đây cũng là định nghĩa của "Thinking outside of the box".

Trong tư duy sáng tạo, chúng ta cần tách ra khỏi các lý thuyết, quy tắc và quy trình đã được thiết lập và thực hiện mọi thứ theo một hướng đi mới lý tưởng hơn.

Trong phạm trù testing, một ví dụ điển hình, tư duy sáng tạo là khi chúng ta áp dụng những kỹ thuật test mới, ví dụ: kỹ thuật test theo cặp để giảm thiểu số lượng hoán vị và tăng độ bao phủ.

Tư duy phân tích - Analytical Thinking

Tư duy phân tích đề cập đến khả năng tách biệt một khối tổng thể thành những phần cơ bản để kiểm tra các phần cơ bản này và mối quan hệ của chúng. Nó bao gồm việc tư duy một cách logic, từng bước từng bước chia nhỏ một hệ thống lớn thành từng phần nhỏ.

Chẳng hạn như khi chúng ta nhìn vào một sơ đồ kiến trúc và thử tìm ra con đường đi qua hệ thống và từng phần riêng biệt.

Một ví dụ khác là khi chúng ta phân tích sự kiện sẽ xảy ra khi một user submit một form và yêu cầu được gửi tới API communicate với Database.

Tư duy phản biện - Critical thinking

Tư duy phản biện là khả năng suy lận bằng cách phân tích vấn đề một cách cẩn thận để xác định tính hợp lệ và chính xác của vấn đề. Đó là trở thành một active learner - người học tích cực hơn là một người tiếp nhận thông tin một cách thụ động.

Tư duy phản biện chính là cách tư duy quan trọng nhất trong bối cảnh Testing. Là một QA/Tester, chúng ta cần luôn đặt câu hỏi và giả định các trường hợp hơn là chấp nhận chúng.

Ví dụ như, khi xem xét user story, chúng ta cần đưa ra những câu hỏi về nhãn tiêu chuẩn chấp nhận hơn là chấp nhận những gì họ đưa ra cho chúng ta.

Tư duy cụ thể- Concrete thinking

Tư duy cụ thể kết liên quan tới khả năng hiểu và áp dụng kiến thức thực tế. Đây là tư duy đối lập với tư duy trừu tượng.

Những người có tư duy cụ thể thích làm theo những chỉ thị và có những kế hoạch chi tiết. Họ ghét tất cả những gì mơ hồ và không cụ thể. Những người suy nghĩ cụ thể thích làm việc với những danh sách và bảng tính hơn.

Trong phạm trù testing, khi những QA/Tester yêu cầu tâts cả những hướng dần hay chỉ đạo cần phải có trước khi bắt đầu Test. chẳng hạn như một số tester sẽ không bắt đầu test cho tới khi các tiêu chí được định nghĩa rõ ràng trong user story.

Tư duy trừu tượng - Abstract thinking

Đối lập với tư duy cụ thể, tư duy trừu tượng đề cập đến khả năng suy nghĩ về những điều không thực sự đang hiện diện.

Các software tester nghĩ theo hướng trừu tuượng thường nhìn vào tầm quan trọng rộng lớn hơn của ý tưởng và thông tin hơn là những chi tiết cụ thể.

Vị dụ, trong bối cảnh test và các session, các QA/tester với khả năng tư duy một cách trừu tượng có thể đưa ra các kịch bản test thú vị. Thay vì chỉ đọc các tiêu chí chấp nhận, tester cần nhìn vào user story và thử tìm ra phương pháp liên quan hoặc tác động tới từng phần của hệ thống.

Tư duy bất đồng - Divergent thinking

Tư duy bất đồng đề cập tới khả năng tạo ra những ý tưởng sáng tạo bằng cách khám phá nhiều giải pháp khả thi trong nỗ lực tìm kiếm một giải pháp hiệu quả, tối ưu nhất. Điều này liên quan đến việc mang các dữ kiện và dữ liệu khác nhau từ nhiều nguồn sau đó áp dụng logic và kiến thức để đưa ra quyết định.

Tư duy hội tụ - Convergent thinking

Tư duy hội tụ là khả năng kết hợp một số thành phần hoặc quan điểm khác nhau của một chủ đề theo một cách có tổ chức, hợp lý để tìm ra một câu trả lời duy nhất.

Ví dụ: Khi chúng ta cố gắng tìm ra nguyên nhân của lỗi, chúng ta sẽ tiến hành thu thập những thông tin liên quan và trích xuất dữ liệu cần thiết.

Tư duy tuần tự - Sequential Thinking

Tư duy tuần tự (tư duy tuyến tính) đề cập đến khả năng xử lý thông tin theo cách có trật tự. Nó liên quan tới một sự tiến triển từng bước trong đó phải có phản ứng với một bước trước khi thực hiện bước khác.

Trong quá trình test, điều này tương quan khi chúng ta tuân theo một kịch bản với các bước được xác định trước cùng kết quả mong đợi.

Tư duy toàn diện - Holistic thinking

Tư duy toàn diện (phi tuyến) là khả năng nhìn thấy bức tranh tổng quát và nhận ra các thành phần để tạo ra một hệ thống lớn hơn. Điều này liên quan đến việc mở rộng quá trình tư duy của bản thân theo nhiều hướng, thay vì chỉ một hướng.

Trong quá trình test, đây là khi chúng ta thực hiện test tích hợp hoặc system test.

Tổng kết

Kiểm thử phần mềm đòi hỏi tư duy sâu rộng. Đó là một quá trình liên tục đặt các câu hỏi và phân tích thông tin chúng ta nhận được. Các hoạt động test khác nhau đòi hỏi quá trình tư duy khác nhau. Hiểu các kiểu tư duy khác nhau sẽ giúp chúng ta đặt câu hỏi đúng trọng tâm và phù hợp với vấn đề. Khi phỏng vấn các tester, chúng ta nên đặt câu hỏi dựa trên kịch bản test để rèn luyện khả năng tư duy của tester tương ứng với các kiểu tư duy nói trên.

Nguồn: https://www.testingexcellence.com/software-testing-and-different-thinking-types/