Top 40+ câu hỏi phỏng vấn Automation Test cho nhiều cấp độ

Để giúp các Automation Tester, Automation QA có được công việc mơ ước, ITviec đã biên soạn danh sách các câu hỏi phỏng vấn Automation Test có thể được hỏi trong một buổi phỏng vấn kỹ thuật. Bài viết sẽ giúp các nhà kiểm thử tự động hóa “ôn bài” cũng như nâng cao kiến thức.

Đọc bài viết này để nắm vững:

  • 40+ câu hỏi phỏng vấn Automation Test chia thành 3 loại: Cơ bản, Nâng cao và Thực hành.
  • Các mẹo để “nâng cấp” câu trả lời câu hỏi phỏng vấn Automation Test.

Tổng quan về kiểm thử phần mềm

Về cơ bản, bạn có thể chia kiểm thử phần mềm thành hai loại chính, đó là kiểm thử thủ công và tự động:

  • Kiểm thử thủ công: Tester kiểm thử phần mềm theo cách thủ công, thực hiện tất cả các hành động mà người dùng phải thực sự thực hiện.
  • Kiểm thử tự động: Tester kiểm thử phần mềm theo chương trình tự động hóa kiểm thử, cung cấp đầu vào được định cấu hình trước và xác minh đầu ra thực tế với kết quả mong đợi.

Cả kiểm thử thủ công và tự động đều có những ưu điểm và nhược điểm riêng biệt. Một tổ chức phát triển phần mềm nên sử dụng cả hai kỹ thuật này để đảm bảo chất lượng phần mềm.

Bài viết này tập trung gợi ý những câu hỏi Automation test (kiểm thử tự động) từ cơ bản đến nâng cao, và có cả câu hỏi thực hành, mà người phỏng vấn có thể hỏi trong một buổi phỏng vấn Tester. Bài viết chia 45+ câu hỏi thành ba loại, dành cho người mới bắt đầu, dành cho Tester có kinh nghiệm và loại câu hỏi nâng cao.

Lưu ý rằng một cuộc phỏng vấn QA tự động hóa điển hình sẽ luôn có các câu hỏi dành riêng cho ngôn ngữ lập trình bắt buộc, chẳng hạn như Java hoặc Python nên bạn có thể tự “ôn tập” riêng tùy vào ngôn ngữ bạn chuyên.

Đọc thêm: Khóa học automation test: Top 5 khóa học automation test cho người mới

Câu hỏi phỏng vấn Automation Test dành cho Fresher (hoặc người chưa có kinh nghiệm)

​​Kiểm thử tự động là gì?

Kiểm thử tự động, khác với kiểm thử thủ công, là quá trình sử dụng các framework và công cụ để tự động chạy một bộ test case. Toàn bộ quá trình từ tạo test case đến thực hiện được diễn ra với rất ít sự can thiệp của con người, giúp giảm bớt công sức thủ công, đồng thời tăng độ chính xác và hiệu quả kiểm thử.

Kiểm thử tự động hóa đóng một vai trò rất quan trọng trong quá trình phát triển phần mềm, kiểm thử liên tục và phân phối liên tục (Continuous Delivery – CD) khi một số bản cập nhật được cải tiến thường xuyên.

Tuy nằm trong quy trình phát triển phần mềm, kiểm thử là một lĩnh vực riêng biệt đòi hỏi phải có chuyên gia kiểm thử (Tester, QA) và các công cụ kiểm thử chuyên biệt.

Các loại kiểm thử tự động hóa là gì?

Tùy theo nhu cầu mà có nhiều loại Automation test:

  • Kiểm thử đơn vị (Unit Test): Kiểm thử đơn vị được thực hiện ở giai đoạn phát triển bởi developers sau khi hoàn thành quá trình code và trước khi bàn giao sản phẩm cho tester nhằm để tìm và khắc phục các lỗi trong quy trình.
  • Kiểm thử giao diện người dùng (Graphical User Interface Test – GUI): Kiểm thử giao diện được thực hiện để kiểm thử front-end hoặc giao diện người dùng của ứng dụng.
  • Kiểm thử chức năng (Functional Test): Kiểm thử chức năng được thực hiện để đánh giá khả năng của các chức năng có trong ứng dụng.
  • Kiểm thử khói (Smoke Test): Kiểm thử khói được thực hiện để kiểm thử tính ổn định của tính năng đặc biệt có khả thi với cả tổng thể sản phẩm hay không.
  • Kiểm thử tích hợp (Integration Test): Kiểm thử tích hợp được thực hiện để kiểm tổng thể sự tích hợp của module mới với tổng thể ứng dụng có hợp lý và dễ dàng giao tiếp trong toàn bộ quá trình hay không.
  • Kiểm thử hồi quy (Regression Test): Kiểm thử hồi quy là chạy lại các kiểm thử chức năng và phi chức năng để đảm bảo rằng phần mềm vẫn hoạt động và các test trước đó vẫn hoạt động như mong đợi sau khi có thay đổi.

Sự khác biệt giữa kiểm thử thủ công (manual test) và kiểm thử tự động (automation test) là gì?

Kiểm thử thủ công Kiểm thử tự động
Định nghĩa Phần mềm được con người kiểm thử thủ công mà không có công cụ hoặc script tự động hóa Phần mềm được kiểm thử bằng các công cụ tự động hóa hoặc script do con người viết
Sự can thiệp của con người Đòi hỏi sự can thiệp đáng kể của con người và công việc thủ công Cần ít sự can thiệp của con người hơn
Tốc độ Chậm hơn Nhanh hơn
Độ tin cậy Kết quả kiểm thử không đáng tin cậy vì có khả năng xảy ra lỗi của con người Kết quả kiểm thử đáng tin cậy vì nó được thực hiện bằng các tool và các kịch bản kiểm thử.
Khả năng tái sử dụng Các test case khó sử dụng lại Các test case có thể dễ dàng được sử dụng lại
Chi phí Có thể tốn kém do cần có nguồn nhân lực Có thể tốn kém ban đầu do thiết lập công cụ tự động hóa nhưng về lâu dài sẽ rẻ hơn
Phạm vi Phạm vi hạn chế do hạn chế về thời gian và nỗ lực Phạm vi rộng hơn vì có thể thực hiện nhiều test case hơn trong thời gian ngắn hơn
Độ phức tạp Không thể xử lý các test case phức tạp đòi hỏi nhiều lần lặp Có khả năng xử lý các test case phức tạp đòi hỏi nhiều lần lặp
Độ chính xác Phụ thuộc vào kỹ năng và kinh nghiệm của Tester Chính xác hơn vì loại bỏ lỗi do con người và tuân theo các quy tắc định trước
Bảo trì Dễ bảo trì vì không liên quan đến các tập lệnh phức tạp Yêu cầu bảo trì và cập nhật liên tục các script và công cụ
Bộ kỹ năng Yêu cầu Tester có tay nghề cao và có kinh nghiệm Yêu cầu Automation Engineer hoặc Developer lành nghề

Khi nào nên tự động hóa kiểm thử?

Không phải tất cả các test case đều nên được tự động hóa; một số trường hợp sẽ tốt hơn khi kiểm thử thủ công. Khi các test case thuộc các điều kiện sau đây thì nên được tự động hóa:

  • Việc kiểm thử được thực hiện thường xuyên và có thể lặp lại
  • Kiểm thử thủ công không mang lại tỷ suất hoàn vốn (return on investment – ROI) dương
  • Kiểm thử liên quan đến khả năng mở rộng của hệ thống
  • Tính năng được kiểm thử không có nhiều thay đổi
  • Tính năng được kiểm thử có mức độ ưu tiên cao trong doanh nghiệp
  • Kiểm thử yêu cầu nhiều bộ test case chạy đồng thời

Những loại kiểm thử nào không nên được tự động hóa?

Các điều kiện sau đây giúp xác định test case phù hợp hơn với các thao tác thủ công:

  • Tính năng được kiểm thử thay đổi thường xuyên
  • Kiểm thử liên quan đến trải nghiệm người dùng và khả năng sử dụng
  • Kiểm thử không đưa ra điều kiện đạt hoặc không đạt
  • Kiểm thử dựa vào quyết định của Tester để xác định kết quả

Quy trình kiểm thử tự động gồm những giai đoạn nào?

Dưới đây là các bước nên tuân theo khi thực hiện kiểm thử tự động hóa nói chung:

  • Lựa chọn công cụ kiểm thử chủ đạo
  • Xác định mục tiêu cho kiểm thử tự động hóa
  • Xác định phạm vi kiểm thử tự động và các tham số
  • Lập kế hoạch, thiết kế và phát triển các chiến lược kiểm thử tự động hóa và môi trường cần thiết
  • Viết test script và thực thi với các công cụ tự động hóa
  • Phân tích kiểm thử, báo cáo và bảo trì liên tục

Các phần khác nhau của automation test framework là gì?

  • IDE: IntelliJ, Eclipse hoặc bất kỳ IDE nào hỗ trợ ngôn ngữ lập trình bạn đang sử dụng
  • Thư viện test các hàm: Tạo các tiện ích dùng cho việc viết, chạy, debug và báo cáo như Selenium, JUnit, TestNG, Playwright, Appium, Rest Assured
  • Cấu trúc quản lý dự án và test: Nơi lưu trữ các đối tượng (object repository), tiện ích trợ giúp
  • Trình điều khiển trình duyệt
  • Design pattern cho test và các phương pháp tự động hóa (ví dụ: Page Object Model, Screenplay, Fluent)
  • Các tiêu chuẩn code (KISS, DRY, CamelCasing)
  • Báo cáo test và log: plugin

Kiểm thử hồi quy tự động là gì?

Trong phương pháp kiểm thử hồi quy, Tester đảm bảo rằng các chức năng hiện tại không bị ảnh hưởng bởi các thay đổi mới trong code.

Mục tiêu duy nhất của kiểm thử hồi quy là xác nhận rằng những chức năng nào đã được kiểm thử và đã được phát triển vẫn sẽ tiếp tục hoạt động tốt khi một code hoàn toàn mới được thêm vào.

Bạn biết những công cụ CI nào?

Vì kiểm thử tự động là khía cạnh cốt lõi của quá trình tích hợp liên tục (continuous integration – CI) nên nhiều nhà cung cấp công cụ DevOps hiện cũng đang cung cấp các SaaS có thể giúp quá trình kiểm thử và tự động hóa trôi chảy hơn. Một số công cụ CI ví dụ như:

  • TeamCity: TeamCity là một server CI/CD cung cấp kiểm thử đơn vị liên tục ngay lập tức, phân tích chất lượng code và báo cáo về các sự cố phát triển. TeamCity hỗ trợ Java, .NET và Ruby và tích hợp được với các IDE, hệ thống kiểm soát phiên bản và hệ thống theo dõi issue.
  • Jenkins: Jenkins là một công cụ DevOps, phần mềm tự động hóa tích hợp CI/CD mã nguồn mở được viết bằng ngôn ngữ lập trình Java. 
  • Bamboo: Bamboo là một máy chủ tự động hóa được sử dụng để tích hợp liên tục. Được phát triển bởi Atlassian vào năm 2007, công cụ này cho phép Developer tự động xây dựng, ghi tài liệu, tích hợp, kiểm tra mã nguồn và chuẩn bị ứng dụng để triển khai.
  • CircleCI: CircleCI là một ứng dụng CI/CD đám mây cho phép nhóm phát triển phân phối nhanh chóng với sự trợ giúp của tự động hóa xây dựng, kiểm thử và triển khai. Công cụ này còn giúp bạn triển khai các ứng dụng nhanh hơn nhờ khả năng mở rộng và độ tin cậy cao.
  • CloudBees CI: CloudBees CI là một giải pháp tích hợp liên tục linh hoạt và có thể mở rộng, tăng thêm giá trị bằng cách tận dụng công cụ Jenkins. Hệ thống quản lý tập trung của CloudBees CI tăng cường bảo mật, tuân thủ và tự động hóa trên quy mô lớn để phân phối phần mềm hiệu quả hơn.

Trong câu hỏi phỏng vấn automation test này, ngoài liệt kê, bạn có thể giải thích những ưu và nhược điểm của công cụ ưa thích hoặc thường dùng của bạn. Nếu có thể, hãy đưa ra ví dụ về cách bạn đã sử dụng chúng trong dự án trước đây (nếu có).

TDD/BDD là gì?

Phát triển theo hướng kiểm thử (Test Driven Development – TDD) và Phát triển theo hướng hành vi (Behavior Driven Development – BDD) là các quy trình phát triển sản phẩm, viết code theo hướng là sẽ test trước tiên.

TDD kiểm thử các phần nhỏ hơn của ứng dụng một cách riêng biệt bằng các test case thường đã được soạn ra khi bắt đầu test design. BDD hoạt động như một phương pháp kiểm thử hiệu suất của ứng dụng theo quan điểm của người dùng.

Kim tự tháp tự động hóa kiểm thử là gì?

Kim tự tháp tự động hóa kiểm thử là một phương pháp được sử dụng để xác định cách áp dụng hiệu quả các phương pháp kiểm thử tự động hóa khác nhau.

Nguyên tắc cơ bản là có càng nhiều unit test trên Giao diện người dùng (UI) càng tốt và ít kiểm thử đầu cuối (end-to-end) hơn. Nguyên tắc này giúp ưu tiên các unit test nhanh và dễ chạy so với các end-to-end test phức tạp và đắt tiền.

Kim tự tháp tự động hóa kiểm thử bao gồm ba lớp, mỗi lớp đại diện cho một cấp độ kiểm thử khác nhau:

  • Unit Test: Là cơ sở của kim tự tháp, kiểm thử đơn vị tập trung vào việc kiểm thử các đơn vị hoặc thành phần riêng lẻ của phần mềm.
  • Integration Test: Là lớp giữa, kiểm thử tích hợp kiểm thử cách các thành phần khác nhau của hệ thống hoạt động cùng nhau. Điều này thường được thực hiện bằng cách sử dụng kiểm thử API, trong đó trọng tâm là kiểm thử khả năng giao tiếp và trao đổi dữ liệu giữa các thành phần.
  • End-to-End Test: Lớp trên cùng, kiểm thử đầu cuối kiểm thử toàn bộ ứng dụng từ góc nhìn của người dùng. Điều này thường được thực hiện bằng cách sử dụng kiểm thử giao diện người dùng tự động, trong đó trọng tâm là kiểm thử chức năng và trải nghiệm người dùng.

Tự động hóa trình duyệt là gì?

Tự động hóa trình duyệt là quá trình tự động hóa các tác vụ hoặc tương tác mà người dùng thường thực hiện trong trình duyệt web.

Tự động hóa trình duyệt liên quan đến việc sử dụng các công cụ hoặc framework để điều khiển trình duyệt web theo lập trình, mô phỏng các hành động của người dùng như nhấp vào nút, điền vào biểu mẫu, điều hướng giữa các trang và trích xuất dữ liệu.

Tiêu chí chọn một công cụ tự động hóa là gì?

Sau đây là một vài một số yếu tố nên xem xét để chọn một công cụ tự động hóa phù hợp:

  • Nắm vững yêu cầu dự án
  • Xác định ngôn ngữ lập trình từ đó liệt kê ra một vài công cụ phù hợp với các yêu cầu đó kê một vài các công cụ phù hợp với các yêu cầu này
  • Xem xét ngân sách cho kiểm thử
  • So sánh các công cụ về giải pháp khác biệt, khả năng tái sử dụng, báo cáo và khả năng làm việc đối với các bên tham gia trong dự án đó
  • Chọn công cụ dựa trên sự so sánh giữa lợi và hại cho tổ chức

Đọc thêm: Top 5 automation test tool được yêu thích nhất 2025

Những loại framework nào được sử dụng trong kiểm thử tự động hóa phần mềm?

Có bốn loại automation test framework được sử dụng là:

  • Automation test framework dựa trên dữ liệu
  • Automation test framework dựa trên từ khóa
  • Automation test framework dựa trên module
  • Automation test framework kết hợp (hybrid)

Đọc thêm: Test automation framework là gì? Phân loại như thế nào?

Các giai đoạn khác nhau trong vòng đời kiểm thử tự động hóa là gì?

  • Xác định phạm vi kiểm thử tự động hóa.
  • Chọn các framework và công cụ tự động hóa thích hợp.
  • Tạo một kế hoạch kiểm thử và một chiến lược thực hiện kiểm thử.
  • Tạo môi trường kiểm thử (test environment).
  • Phát triển và thực hiện các test case.
  • Phân tích và tạo báo cáo kiểm thử.
  • Bảo trì và nâng cấp test script.

Câu hỏi phỏng vấn Automation Test dành cho Tester đã có kinh nghiệm

Bạn xem như thế nào là một kiểm thử tự động hóa thành công?

Một số yếu tố có thể được dùng để đo lường tính hiệu quả của kiểm thử tự động hóa, chẳng hạn như:

  • Tiết kiệm thời gian
  • Khả năng tái sử dụng
  • Chất lượng phần mềm
  • Khả năng bảo trì
  • Chi phí triển khai
  • Số error hoặc bug được tìm thấy
  • Phần mềm hoặc phạm vi kiểm thử

Bạn sẽ tự động hóa quá trình đăng nhập cơ bản trong một ứng dụng web như thế nào?

  • Kiểm tra thông tin đăng nhập theo cách thủ công để đảm bảo rằng bạn hiểu tất cả các trường nhập, checkbox và nút trên màn hình đăng nhập.
  • Tạo một tập dữ liệu (dataset) kiểm thử với các tổ hợp tên người dùng và mật khẩu.
  • Tạo các trường hợp kiểm thử mô phỏng nhiều lộ trình mà người dùng có thể thực hiện trong tình huống thực tế.
  • Cấu hình từng trường hợp kiểm thử trong công cụ để invoke theo cách thủ công và sử dụng dữ liệu kiểm thử ở bước 2.
  • Sau mỗi lần đăng nhập, hãy kiểm tra và xác thực các thông báo thành công/error và chuyển hướng.

CAPTCHA là gì? Có thể tự động kiểm thử CAPTCHA không?

CAPTCHA, là viết tắt của Completely Automated Public Turing Test to Tell Computers and Humans Apart (tạm dịch: Kiểm thử Turing công cộng hoàn toàn tự động để phân biệt máy tính và con người), là một loại bảo mật nhằm bảo vệ bạn khỏi spam hoặc các cuộc tấn công bằng cách yêu cầu bạn hoàn thành một bài kiểm tra đơn giản mà máy tính sẽ thấy khó hiểu.

Không thể tự động kiểm thử CAPTCHA bởi vì đó là mục đích của một CAPTCHA hiệu quả.

Tuy nhiên, có thể tự động kiểm thử CAPTCHA nếu Developers hỗ trợ tạo ra một CAPTCHA luôn đúng và chỉ apply trên môi trường test.

Một số phương pháp viết code nên dùng khi tự động hóa?

  • Thêm nhận xét thích hợp để giải thích đoạn code đó.
  • Bạn nên xác định các phương pháp có thể tái sử dụng và viết chúng vào một tệp riêng.
  • Phải tuân theo các quy ước viết code dành riêng cho ngôn ngữ đó.
  • Lưu trữ dữ liệu kiểm thử trong một tệp riêng biệt.
  • Chạy script thường xuyên.

Làm cách nào bạn có thể tăng tốc bộ kiểm thử tự động?

Các ứng dụng yêu cầu kiểm thử UI tương tác với nhiều yếu tố có thể làm chậm quá trình kiểm thử. Một cách tốt hơn là tạo một kịch bản kiểm thử đơn giản để tăng tốc độ thực hiện kiểm thử.

Bạn có cần documentation trong kiểm thử tự động không?

Documentation đóng một vai trò quan trọng trong kiểm thử tự động.

Bạn nên ghi lại tất cả các phương pháp và quy trình để đảm bảo khả năng tái sử dụng của chúng, bao gồm cả thông số kỹ thuật kiểm thử, thiết kế, thay đổi code, trường hợp kiểm thử, kế hoạch tự động hóa, báo cáo lỗi.

Tiêu chuẩn viết script khi thực hiện kiểm thử tự động hóa là gì?

Trong khi viết script cho kiểm thử tự động hóa, bạn nên cân nhắc những điều sau:

  • Quy ước đặt tên thống nhất.
  • 3 dòng bình luận cho mỗi 10 dòng code.
  • Thụt lề/ thụt đầu dòng vừa đủ.
  • Tình huống xử lý error và phục hồi tiêu chuẩn.
  • Sử dụng framework bất cứ khi nào có thể.

Các thuộc tính nên có của một framework tự động hóa tốt là gì?

  • Tính module: Một framework tốt nên sở hữu khả năng thích ứng với sự thay đổi. Vì vậy, Tester sẽ có thể sửa đổi các script theo môi trường.
  • Có thể tái sử dụng: Framework nên có thể tái sử dụng để các phương thức hoặc tiện ích có thể được viết trong một tệp chung mà tất cả các script có thể truy cập được.
  • Nhất quán: Framework nên có một định dạng nhất quán.
  • Độc lập: Các script tự động hóa phải được viết độc lập với nhau.
  • Tích hợp: Framework tự động hóa nên dễ dàng tích hợp với các ứng dụng khác.

Các module thiết yếu của một framework kiểm thử tự động hóa là gì?

  • Công cụ xác nhận kiểm thử: Công cụ kiểm thử này sẽ cung cấp các câu lệnh xác nhận nhằm đánh giá các giá trị mong đợi trong ứng dụng đang được kiểm thử. Ví dụ: Junit, TestNG, Junit, v.v.
  • Thiết lập dữ liệu: Đảm bảo rằng mỗi trường hợp kiểm thử lấy dữ liệu kiểm thử từ cơ sở dữ liệu, tệp hoặc được nhúng trong tập lệnh kiểm thử.
  • Công cụ quản lý bản dựng: Framework cần được xây dựng và triển khai để tạo test script.
  • Công cụ tích hợp liên tục: Nhằm tích hợp và triển khai các thay đổi được thực hiện trong framework ở mỗi lần lặp.
  • Công cụ báo cáo: Giúp tạo một báo cáo dùng để đọc sau các test case để có cái nhìn rõ hơn về các bước, lỗi và kết quả.
  • Công cụ ghi nhật ký: Giúp khắc phục error và bug tốt hơn.

Một số phương pháp nên được áp dụng trong tự động hóa kiểm thử là gì?

Dưới đây là một số phương pháp hay mà developer và Tester nên tuân theo để đảm bảo phần mềm có chất lượng cao:

  • Chọn nhiệm vụ để tự động hóa.
  • Dựa trên kiến thức và chuyên môn, phân công các test scenario.
  • Loại bỏ tình huống bất định (uncertainty).
  • Chọn các công cụ và framework thích hợp.
  • Duy trì test record trong cơ sở dữ liệu về bug.

Những thách thức liên quan đến phát triển phần mềm Agile là gì?

Phát triển phần mềm Agile áp dụng cách tiếp cận gia tăng để tạo ứng dụng, tách biệt các tính năng của ứng dụng để kiểm thử tích hợp liên tục khi chúng được xây dựng. Mặc dù kiểm thử Agile có thể cải thiện hiệu quả dự án và giao tiếp nhóm nhưng cũng tạo ra một số thách thức.

Kiểm thử tự động hóa không hữu ích cho các phương pháp Agile trong các điều kiện sau:

  • Khi user story liên tục thay đổi.
  • Khi cần có đầy đủ documentation.
  • Chỉ thích hợp cho kiểm thử hồi quy trong quá trình kiểm thử Agile, như tích hợp liên tục.

Trong một số trường hợp, Tester có thể đảm nhận các vai trò phát triển ngoài phạm vi công việc của họ và việc ra mắt liên tục các kiểm thử cho tính năng mới có thể dẫn đến chất lượng sản phẩm cuối thấp hơn.

Có thể đạt được tự động hóa 100% không?

Việc đạt được tự động hóa 100% là điều khó khăn vì có một số tình huống hoặc một số trường hợp kiểm thử không được thực hiện thường xuyên.

Đồng thời, việc tự động hóa các trường hợp kiểm thử này cũng sẽ không tăng thêm giá trị cho quá trình tự động hóa hoặc mang lại ROI dương.

Sanity test là gì? Có thể tự động hóa sanity test không?

Sanity test được dùng để xác định rằng không có vấn đề nào phát sinh trong các chức năng mới, khi thay đổi code và debug. Thay vì kiểm thử toàn bộ hệ thống, sanity test tập trung vào các khu vực nhỏ hơn của các chức năng được bổ sung. Nếu mục tiêu chính của smoke test là kiểm tra tính ổn định của bản dựng quan trọng, thì sanity test là xác minh tính hợp lý của việc bổ sung module mới hoặc thay đổi code.

Tester nên áp dụng sanity test cẩn thận. Vì sanity test chỉ tập trung vào một số chức năng quan trọng nên việc tự động hóa tất cả các khía cạnh của loại kiểm thử này có thể không thực hiện được.

Ai sẽ chịu trách nhiệm tự động hóa kiểm thử?

Để trả lời câu hỏi phỏng vấn Automation test này, thay vì chỉ giao trách nhiệm kiểm thử tự động cho một vai trò cụ thể, bạn có thể trả lời rằng đây là nỗ lực hợp tác của cả đội ngũ.

Mặc dù các vai trò cá nhân như QA, Developer hoặc Lead có những chuyên môn và đóng góp khác nhau cho chất lượng phần mềm, nhưng xét cho cùng thì một phần mềm chất lượng vẫn là mục tiêu cuối cùng của toàn bộ dự án. Do đó, các thành viên trong nhóm nên hỗ trợ lẫn nhau trong mọi khía cạnh, nên làm việc cùng nhau và bổ sung cho nhau khả năng thực hiện kiểm thử tự động hóa đúng cách.

Sự cộng tác của cả nhóm sẽ được nhấn mạnh hơn nữa với kiểm thử “Shift-left”, trong đó các hoạt động kiểm thử được di chuyển sớm hơn trong SDLC (Software Development Life Cycle – Vòng đời phát triển hệ thống). Developer và Tester làm việc chặt chẽ để xác định các khu vực dành cho tự động hóa, xác định các trường hợp kiểm thử cũng như triển khai các framework và công cụ tự động hóa kiểm thử. Cách tiếp cận này cho phép vòng phản hồi nhanh hơn, phát triển liên tục và nâng cao chất lượng tổng thể.

Một số lựa chọn thay thế cho Selenium là gì?

Selenium là một thư viện chứa các đoạn code được xác định trước dùng để xây dựng các chức năng chung cho một framework kiểm thử.

Nếu bạn tìm kiếm một giải pháp thay thế cho Selenium để xây dựng các framework kiểm thử mã nguồn mở từ đầu thì Cypress, Appium hoặc Cucumber có thể là giải pháp phù hợp vì chúng có sẵn IDE, thư viện chức năng, tiêu chuẩn coding, v.v. để phát triển framework.

Một cách tiếp cận khác là tìm kiếm các giải pháp của nhà cung cấp, cụ thể là Katalon, LamdaTest, Postman hoặc Tricentis Tosca, v.v. Chúng tích hợp sẵn tất cả các yếu tố cần thiết cho việc kiểm thử như template, thư viện test script và keyword giúp giảm việc coding và cho phép manual Tester tự động hóa việc kiểm thử.

Protractor là gì?

Protractor là một framework kiểm thử đầu cuối được thiết kế đặc biệt cho các ứng dụng Angular và AngularJS. Tuy nhiên, Protractor đã “về hưu” kể từ tháng 8 năm 2023.

Protractor đơn giản hóa quy trình kiểm thử cho các ứng dụng Angular bằng cách cung cấp một framework chuyên dụng với các tính năng dành riêng cho Angular và tích hợp liền mạch với các thành phần Angular. Protractor cho phép Tester tự động hóa các test script từ đầu đến cuối, tương tác với các phần tử một cách dễ dàng và thực hiện kiểm thử các ứng dụng Angular một cách đáng tin cậy và hiệu quả.

Hiện tại, để thay cho Protractor, Tester có thể sử dụng các framework sau để kiểm thử các ứng dụng Angular và AngularJS:

  • Nightwatch.js
  • Cypress
  • Playwright
  • TestCafe
  • WebdriverIO

Một số khía cạnh quan trọng của phần mềm/ứng dụng mà bạn cần kiểm thử khi kiểm thử trình duyệt chéo (cross browser test) là gì?

  • Các chức năng cơ bản (các tính năng cốt lõi được sử dụng nhiều nhất hoặc tạo ra nhiều giá trị nhất)
  • Điều hướng (menu, liên kết, nút và bất kỳ chuyển hướng nào)
  • Biểu mẫu và thông tin đầu vào
  • Chức năng tìm kiếm
  • Đăng ký và đăng nhập người dùng
  • Các chức năng dành riêng cho web (các tính năng trang web Thương mại điện tử hoặc SaaS đặc biệt)
  • Tích hợp của bên thứ ba (kiểm thử trao đổi dữ liệu và liên lạc/ giao tiếp giữa các tích hợp, API, v.v.)
  • Thiết kế (bố cục hình ảnh, văn bản, cỡ chữ, màu sắc)
  • Khả năng truy cập (trang web có thân thiện với người dùng có khuyết tật về thể chất hay không)
  • Khả năng phản hồi (trang web có phản hồi trên thiết bị di động hay không)

Câu hỏi phỏng vấn Automation Test thực hành

Bạn đang tự động hóa một quy trình làm việc phức tạp với nhiều bước. Làm thế nào để bạn đảm bảo rằng test có thể được duy trì?

Có thể đảm bảo khả năng duy trì của một quy trình làm việc phức tạp bằng cách chia nhỏ quy trình làm việc thành các chức năng nhỏ hơn và có thể tái sử dụng. POM (Page Object Model) được sử dụng để tách logic kiểm thử khỏi các thành phần trang.

Bạn xử lý các popup cảnh báo trong Selenium WebDriver như thế nào?

Selenium sẽ cảnh báo nếu xuất hiện vấn đề trong khi bạn kiểm thử.

Giao diện popup cho phép bạn xử lý cảnh báo bằng cách chuyển điều khiển sang popup, nhấn nút OK hoặc Cancel và quay lại màn hình trang nguồn. Bạn sẽ cần trình bày việc triển khai như một task:

String srcPage = driver.getWindowHandle();
Alert pop = driver.switchTo().alert(); 
pop.accept(); 
pop.dismiss(); 
driver.switchTo().window(srcPage);

Nếu test thất bại, bạn sẽ làm gì tiếp theo?

Trong trường hợp test thất bại, bạn có thể làm theo quy trình sau:

  • Phân tích test case thất bại bằng cách xem lại nhật ký/ logs, ảnh chụp màn hình hoặc video về quá trình thực hiện test nếu có.
  • Sau đó, debug script để kiểm tra xem lỗi là do thay đổi trong ứng dụng hay do sự cố trong chính script.

Nếu ứng dụng có những thay đổi nhỏ, bạn sẽ làm gì để sửa đổi script tự động hóa?

Cách sửa đổi script tự động hóa sẽ phụ thuộc vào những thay đổi trong ứng dụng. Nếu các thay đổi liên quan đến giao diện người dùng thì bộ định vị (locator) phần tử tương ứng trong script sẽ được cập nhật. Nếu có thay đổi về chức năng, logic của script sẽ được sửa đổi sao cho phù hợp.

Bạn kiểm thử các phần tử động (dynamic) trên trang web như thế nào?

Các phần tử động trên trang web có thể được xử lý bằng cách sử dụng bộ selector XPath hoặc CSS dynamic mà có thể xác định các phần tử dựa trên mối quan hệ của chúng với các phần tử hoặc thuộc tính xung quanh.

Mô tả cách bạn sẽ tự động hóa một test script mà bạn cần kiểm thử xem email có được gửi sau khi đăng ký người dùng hay không?

Điều này có thể được thực hiện với hai bước:

  • Thứ nhất, tự động hóa quá trình đăng ký người dùng.
  • Sau đó, API được sử dụng để kết nối với máy chủ email và xác minh xem có nhận được email trong hộp thư đến hay không.

Làm cách nào để tự động hóa quá trình xác thực nội dung của file đã tải xuống sau khi nhấp vào nút trên trang web?

Để tự động hóa script xác thực nội dung của tệp đã tải xuống sau khi nhấp vào nút, bạn cần:

  • Bước đầu tiên: Tự động hóa sự kiện nhấp vào nút.
  • Sau đó, bạn sử dụng khả năng xử lý tệp của ngôn ngữ lập trình để mở và xác thực nội dung của tệp đã tải xuống.

Làm cách nào để tự động hóa quá trình xác minh màu sắc, font chữ và vị trí cụ thể của một thành phần trên trang web?

Tình huống này có thể được tự động hóa bằng cách sử dụng JavaScriptExecutor của WebDriver. JavaScript sẽ được thực thi để lấy màu, font chữ và vị trí của một phần tử, sau đó nó được xác thực trong test script.

Bạn ước tính thời gian cần thiết để tự động hóa một test case như thế nào?

Việc ước tính thời gian cần thiết để tự động hóa test case bao gồm việc xem xét mức độ phức tạp của test case, mức độ hoàn thiện của framework tự động hóa cũng như mức độ quen thuộc với ứng dụng và công cụ tự động hóa.

Việc ước tính cũng bao gồm thời gian để debug, bảo trì và báo cáo.

Bạn đang làm việc với một nhóm theo phương pháp Agile. Bạn kết hợp tự động hóa vào quy trình này như thế nào?

Trong môi trường Agile, trọng tâm của tự động hóa là các test case nằm trong bộ hồi quy và các test case liên quan đến user story trong sprint hiện tại. Các test case này có thể được đưa vào quy trình CI/CD để có phản hồi ngay lập tức.

Bạn tự động hóa một chức năng chưa được phát triển đầy đủ như thế nào?

Tự động hóa một chức năng chưa được phát triển đầy đủ đòi hỏi bạn phải làm việc chặt chẽ với nhóm phát triển để hiểu những hành vi được mong đợi là gì. Script tự động hóa được thiết kế dựa trên sự hiểu biết này, và các đối tượng giả lập (stub) hoặc mô phỏng (mob) có thể được sử dụng để mô phỏng chức năng chưa được phát triển.

Bạn sẽ kiểm thử script tự động hóa trên nhiều trình duyệt và nền tảng như thế nào?

Các script tự động hóa có thể được cấu hình để chạy trên nhiều trình duyệt và nền tảng bằng các công cụ như Selenium Grid, hoặc với các dịch vụ dựa trên đám mây như Sauce Labs hoặc BrowserStack.

Điều cần thiết là bạn phải đảm bảo rằng các script độc lập/ không phụ thuộc với bất kỳ trình duyệt hoặc nền tảng cụ thể nào.

Một vài “mẹo” trả lời câu hỏi phỏng vấn Automation Test

Ngoài 40+ câu hỏi phỏng vấn automation test kể trên, sau đây là các gợi ý giúp bạn hoàn thành tốt buổi phỏng vấn:

  • Nắm vững những kiến thức cơ bản: Đảm bảo bạn có hiểu biết vững chắc về những điều cơ bản về Kiểm thử tự động, bao gồm các loại kiểm thử, công cụ, framework, phương pháp và các khái niệm kiểm thử khác nhau như SDLC và STLC.
  • Hiểu rõ ít nhất 1-2 công cụ kiểm thử tự động hóa: Hiểu các tính năng và khả năng, cũng như cách áp dụng của các công cụ kiểm thử tự động hóa phổ biến như Selenium, JMeter, TestComplete hoặc QTP trong các tình huống Kiểm thử khác nhau.
  • Tìm hiểu về các framework kiểm thử tự động hóa: Hiểu 4 loại framework tự động hóa kiểm thử khác nhau (Keyword-Driven, Data-Driven, Hybrid hoặc Page Object Mode) và ưu điểm, nhược điểm của từng loại và cách áp dụng hiệu quả nhất.
  • Nâng cao kỹ năng viết code: Tuy không bắt buộc, nhưng khả năng coding có thể là một lợi thế lớn. Một số ngôn ngữ lập trình phổ biến trong các công cụ tự động hóa như như Java, Python hoặc JavaScript.
  • Biết cách thiết kế test case: Hiểu rõ được trường hợp nào cần tự động hóa, viết test script và maintain chúng.
  • Hiểu CI/CD: Kiến thức về quy trình Tích hợp liên tục/Phân phối liên tục (CI/CD) và khả năng tương thích giữa kiểm thử tự động với CI/CD là một điểm cộng rất lớn. Làm quen với các công cụ CI/CD như Jenkins hoặc CircleCI.
  • Luôn cập nhật: Lĩnh vực kiểm thử tự động hóa không ngừng phát triển. Luôn cập nhật các công cụ mới nhất và các phương pháp hay nhất trong ngành. Điều này sẽ giúp bạn đưa ra câu trả lời mới nhất và chính xác cho các Câu hỏi phỏng vấn Automation test.
  • Làm việc với các dự án thực tế: Nếu bạn chưa từng làm việc với các dự án thực tế, hãy thử thực hành với các dự án nguồn mở hoặc tạo dự án của riêng bạn để thể hiện kỹ năng của mình.

Tổng kết

Phạm vi của các câu hỏi phỏng vấn Automation Test rất rộng và bài viết chỉ có thể bao gồm một phần cơ bản. Bạn có thể sử dụng bộ 40+  câu hỏi phỏng vấn Automation Test do ITviec biên soạn để làm kiến thức nền tảng và tự “ôn tập” thêm. Một khi đã vững cơ bản, kết hợp với sự chuẩn bị thích hợp, bạn sẽ có thể trả lời bất kỳ câu hỏi lý thuyết nào và thể hiện các kỹ năng và khả năng của mình với tư cách là một ứng viên tiềm năng.