Trong thời đại của các phương pháp phát triển phần mềm tiên tiến như Agile và DevOps đang dần thay thế mô hình waterfall thời đại cũ, và cùng với đó nhu cầu testing đang gia tăng. Các tester hiện đang làm việc với developer và automation test đang thay thế rất nhiều manual test. Nếu bạn là lính mới trong lĩnh vực automation test, công ty thuê bạn sẽ mong bạn có thể phát hiện ra lỗi nhanh nhất hoặc đưa ra giải pháp mà không một ai nghĩ tới. Nhưng chỉ với kiến thức cơ bản về testing, làm thế nào bạn có thể trở thành automation tester thành công? Các kỹ năng để trở thành một automation tester thành công vào năm 2019 là gì? Hãy cùng tìm hiểu.

I. Ngôn ngữ lập trình...

Khi chúng ta bắt đầu công việc của mình như một manual tester, Vì đôi khi chúng ta không thích code nhiều. Tuy nhiên, nếu chúng ta muốn chuyển dần dần chuyển sang lĩnh vực automation, Thì nếu không có một số hiểu biết cơ bản về ngôn ngữ lập trình, không có cách nào để chúng ta có thể viết một automation test scrip logic. Có một chút nền tảng về lập trình sẽ không chỉ đơn giản hóa việc viết automation test scrip mà còn giúp bạn cải thiện giao tiếp với developer. Không chỉ vậy, mà bạn còn có thể tham gia kiểm thử các functional test chuyên sâu, sau khi hoàn thành unit test. Bây giờ, để đạt được kỹ năng số 1 cho automation tester, có 2 vấn đề mà bạn phải chú ý. Các vấn đề là

1. Hiểu về ngôn ngữ lập trình

Bạn được yêu cầu phải có sự hiểu biết về code C#, Python, Java, Perl, SQL, XML cũng như HTML và CSS. Mặc dù, ngôn ngữ nào đều phụ thuộc vào ngôn ngữ lập trình được sử dụng bởi các developer trong dự án. Ví dụ: nếu dự án Ruby, bạn nên có ít nhất kiến thức cơ bản về Ruby. Dưới đây là các ngôn ngữ lập trình hữu ích cho tester.

2. Tạo được test script

Cho dù bạn có kiến thức lập trình hay không, trong giai đoạn này phụ thuộc vào automation framework bạn đang sử dụng. Nếu công ty của bạn đang sử dụng SpecFlow hoặc Cucumber để làm automation test, các script có thể được viết bằng tiếng Anh đơn giản, bạn không cần phải nghĩ về logic backend hoặc code. Chỉ cần có đủ kiến thức về lập trình Selenium là đủ. Tuy nhiên, nếu bạn đang sử dụng UFT hoặc QTP, bạn nên có kiến thức kỹ lưỡng về lập trình. Đây là ví dụ dùng Selenium WebDriver để test nhiều loại browser.

II. Bạn phải thật pro manual test

Để trở thành một automation tester, bạn sẽ cần phải có một con mắt tinh tường và kinh nghiệm trong manual test. Hãy nhớ những điều sau đây!

1. Suy nghĩ của tester là chính

Bất cứ khi nào điều bất thường xảy ra trong quá trình test, bằng mắt có thể dễ dàng phát hiện ra nó. Các vấn đề trực quan rất khó phát hiện bằng cách sử dụng các script automation. Đánh giá phần mềm từ góc độ của người dùng giúp tester xác định lỗi giao diện, đây là một điều mà các chương trình test automation không làm được.

2. Một vài test case chỉ có thực hiện bằng manual

Automation là máy và máy chỉ làm những gì nó được bảo phải làm. Các test case phức tạp đòi hỏi nhiều sự chuẩn bị và lập kế hoạch. Script sau đó tuân theo giao thức và test ứng dụng tương ứng, test Ad-hoc giúp tester trả lời các câu hỏi như "điều gì xảy ra khi tôi theo X thay vì Y". Nó giúp tester suy nghĩ và test bằng cách sử dụng phương pháp tiếp cận bên ngoài, điều này rất khó để code trong một automation script. Ngay cả việc test chéo trình duyệt cũng cần tiếp cận bằng manual. Thay vì phụ thuộc vào automation script để tìm ra điểm khác biệt, bạn có thể test các vấn đề bằng manual bằng cách test trên các trình duyệt và thiết bị thực hoặc thậm chí tốt hơn, bằng cách sử dụng các công cụ test chéo trình duyệt, cho phép bạn test trang web của bạn một cách liền mạch trên hàng ngàn hệ điều hành, thiết bị và trình duyệt khác nhau.

3. Kiểm thử tự động cũng có thể chứa lỗi

Một đoạn script kiểm thử tự động thì chỉ là một đoạn code, và dù bạn giỏi đến đâu đi nữa thì vẫn có lỗi. Một khi như vậy bạn phải có sự tương tác thủ công vào quá trình chạy script để đảm bảo việc chạy không xuất hiện các lỗi ngoài ý muốn.

4. Một số tình huống không thể nào dùng kiểm thử tự động

Sẽ ra sao nếu một kịch bản kiểm thử yêu cầu bạn phải kiểm tra một số động tác vuốt hay chạm vào ứng dụng đang vận hành? Bạn không thể thực hiện điều đó tự động. Việc thực hiện sẽ khó khăn và có thể không hiển thị được kết quả mong muốn. Lúc này việc chạy manual lại một lần nữa trở nên cần thiết. Lúc này tester hoàn thành việc viết test script như một kịch bản của người dùng. Một manual tester sẽ chạy lại để kiểm tra các bug.

5. Bạn nắm hết về toàn bộ các vấn đề

Vâng, thật sự thì automation test sẽ tiết kiệm cả bạn rất nhiều thời gian. Ở cấp độ cao và trong cùng một kịch bản kiểm thử, nó sẽ là một lựa chọn tốt để tự động chạy các test. Tuy nhiên, để hiểu chính xác những vấn để ở mức lý luận, kỹ năng test manual vẫn phải được yêu cầu. Một automation tester là những người có kinh nghiệm trong việc test manual có thể dễ dàng hiểu được nguồn gốc của vấn đề bằng cách suy nghĩ trên quan điểm của một người dùng cuối.

III. Phải thành thạo một automation tool

Trong kỷ nguyên Agile, chuyên chú trọng vào tốc độ và chất lượng. Các bên liên quan và khách hàng khắp thế giới mong chờ một nơi có thể tạo ra một sản phẩm không có bug trong một thời gian ngắn. Đó là lý do tại sao kiểm thử tự động lại phát triển, và để trở thành một automation tester có kỹ năng, mỗi công ty sẽ hy vọng bạn biết và kinh nghiệm trọng một automation tool.

Có khả năng support nhiều hệ trình duyệt, Selenium đã trở thành một tên tuổi trong thế giới kiểm thử tự động. Đa số các trình duyệt Selenium có thể thực hiện trực tiếp trên chúng. Và cùng với giới thiệu về WebDriver, Selenium chắc chắn trời nên hoàn hảo khi chạy tự động test cho các ứng dụng web. Không có vấn đề gì dù bạn là người mới vào nghề hay là một tester automation chuyên nghiệp. Bạn nên biết kiến thức hoặc kinh nghiệm làm việc với Selenium. Thêm vào đó, nó là một phần mềm mã nguồn mở. Nếu bạn thực sự làm việc với nhiều phiên bản Selenium tiếp theo bạn hãy tìm hiểu thêm LambdaTest trở thành một nền tảng để chạy automation script trên cloud. LambdaTest khuyến khích việc chạy automation script của bạn song song cùng lúc bằng Selenium với hơn 2000 trình duyệt trên hệ thống của họ.

1. HP - UFT

Được biết đến như QTP, công cụ này phát triển bởi HP là một lựa chọn tốt cho việc chạy các test automaion

2. SoapUI

Là một công cụ tuyệt với để test web service hay API. Công cụ này support cả chuẩn SOAP và REST và nếu dự án của bản hướng tới automation test cho API, bạn nên biết ít nhất một bản mã nguồn mở của phần mềm này để thực hiện.

3. RFT

Rational Functional Tester là một công cụ kiểm thử tự động của IBM. Không có vấn đề gì về công nghệ được sử dụng trong ứng dụng của bạn, RFT hỗ trợ .Net, Java, SAP, Adobe Flex, Visual Basic và Dojo. Nếu bạn là một tester kiểm thử chức năng, bạn sẽ nên tìm hiểu về công cụ này.

4. Appium

Trong thời kỳ ứng dụng mobile được đặt lên hàng đầu, nhiều công ty đang phát triển những app mobile cực kỳ phức tạp. Appium là một phần mềm mã nguồn mở tốt nhất để thực hiện kiểm thử automation thông qua bất cứ app native hay hyprid. Bên cạnh đó, nó còn tích hợp việc chạy ở tất cả nền tảng như Android, IOS hay Window và bạn phải học nó nếu bạn định hướng là một mobile automation tester.

5. Apache Jmeter

Ban đầu, công cụ này được thiết kế để đo hiệu năng và khả năng tải của một ứng dụng. Trong phiên bản hiện tại, công cụ này cũng sử dụng kiểm tra hiện năng API và hệ thống. Là một trong 3 phần mềm kiểm thử phổ biến nhất, công ty của bạn sẽ kỳ vọng rằng bạn là một tester có kinh nghiệm và hiểu biết về nó. Mặc dù nếu bạn không có kinh nghiệm, bạn có thể bắt đầu tự học phần mềm mã nguồn mở này.

IV. Hiểu được yêu cầu nghiệp vụ

Nếu chiếc xe ô tô hay xe máy của bạn có vấn đề và bạn đem chúng đến trung tâm bảo hành, trước khi kiểm tra xe, thợ sửa hỏi bạn về tình trạng hiện tại bạn gặp phải khi đang lái xe, bất cứ vấn đề cũ nào mà bạn đã từng sửa chữa trong lần cuối kiểm tra, cùng với nếu bạn thay đổi bất cứ phụ tùng gì trước đó. Sau tất cả, thợ máy sẽ cung cấp hướng giải quyết chính xác những vấn đề và những gì bạn cần phải làm để sửa chữa.

Tương tự như vậy, một automation tester có chuyên môn phải biết được ứng dụng mà mình đang test từ trong ra ngoài, từ cả frontend đến backend trước khi bắt đầu test. Họ phải biết:

  • Ngôn ngữ được sử dụng trong team.
  • Nền tảng hoặc thiết bị được yêu cầu để ứng dụng có thể chạy đối với user.
  • Database được sử dụng để lưu trữ ở backend cùng với dữ liệu của người dùng.
  • API và web service kết nối với hệ thống và làm thể nào để sử dụng chúng.
  • Tất cả các tính năng và chức năng kỳ vọng bởi người dùng và các bên khi ứng dụng được publish.
  • Có hay không chạy manual trong quá trình test
  • Mong đợi về thời gian tốn để chạy manual các test case trong khi test
  • Bất cứ các critical bug chưa được fix trong lần release cuối và nó ảnh hưởng thế nào đến nghiệp vụ
  • Kỳ vọng về ngày giao sản phẩm mà tester vần phải đảm bảo hoàn thành đúng
  • Trình duyệt khác ảnh hưởng thế nào

V. Xử lý các vấn đề của tool automation

Đa phần các tool automation khá là lớn, phức tạp và nó yêu cầu tester phải có hiểu biết công nghệ về tool đó trước khi bạn bắt đầu dự án với chúng. Trong dự án trước của tôi, tôi phải đối mặt với vấn đề như:

  • Script hiện ra lỗi trong kết quả test nhưng ứng dụng vẫn chạy ngon lành đúng với requirement
  • Script hiện ra thành công nhưng ứng dụng nhảy ra các lỗi trong quá trình chạy

Những điều đó được biết đến như lỗi chấp nhận được và lỗi không chấp nhận được, đa số vấn đề khi tester thiếu kiến thức trong quá trình config test script. Họ giữ cho mình các mẫu sẵn và kỳ vọng rằng testcase sẽ chạy ngon. Nếu bạn muốn trở thành một automation tester thành công, bạn nên có hiểu biết chi tiết trong việc cài đặt công cụ và làm thế nào để giải quyết các vấn đề của chúng. Đặt biệt là, nếu bạn không phải là 1 tester leader, bạn phải chắc rằng kiến trúc của ứng dụng với tool để chạy automation. Thử sử dụng một công cụ không tương thích với ứng dụng sẽ đem đến kết quả test không thành công.

VI. Kinh nghiệm với công cụ quản lý test

Mục tiêu chính của automation test là giảm thời gian trong quá trình test. Nếu bạn là một automation testeer, bạn nên có một vài kinh nghiệm trong việc sử dụng công cụ quản lý bởi vì:

  • Chúng linh động và cho phép user lưu lại bất cứ lỗi và sắp xếp chúng theo thứ tự ưu tiên phụ thuộc và lỗi như thế nào ảnh hưởng đến dự án. Bên cạnh đó, nó cũng tăng khả năng cho phép dễ dàng trao dổi thông tin giữa cá thành viên
  • Nếu bạn là một automation test leader, kinh nghiệm làm việc với công cụ quản lý sẽ giúp bạn giữ được tiến độ khi mà quá trình test chuyển từ phase này sang phase khác. Bạn sẽ xem được dashboard, nơi mà ban có để tài liệu hóa các testcase được ghi nhận trong phase đó và chắc chắn có thể tái sử dụng trong dự án tương lai
  • Nếu bạn là một tester, bạn có thể báo cáo hoạt động của bạn trong công cụ và nếu bạn là một test lead, bạn có thể xem report realtime và nhân lực làm việc dưới bạn và những gì họ đang làm. Điều này giúp phân tích những gì đang diễn ra trong dự án và tăng tốc các hoạt động mà không tốn thời gian đển theo dõi
  • Cuối cùng, bạn có thể không cần lo lắng về vấn đề bảo mật. Có công cụ quản lý sẽ chắc rằng tất cả các thông tin quan trọng của phase test được bảo mật và đồng nghĩa với quyền truy cập chỉ là thành viên trong team.

VII. Hiểu biết về những phương pháp phát triển khác nhau

Nhớ rằng, công ty của bạn không chỉ kỳ vọng bạn có hiểu biết về test. Bạn cũng được kỳ vọng có kiến thức về các phương pháp phát triển phần mềm khác nhau. Nếu dự án của bạn theo hướng DevOps hay Agile, đừng kỳ vọng team lead của bạn nói bạn làm gì. Công việc của bạn thông qua các buổi scrum meeting khi mà cá bên hay quản lý hỏi về những câu hỏi khó trong lúc bạn làm việc. Có hiểu biết về các phương pháp phát triển cũng sẽ giúp bạn nâng cao giá trị của bản thân mình.

Phụ thêm! Kiếm thật nhiều tín chỉ

Một tín chỉ sẽ không chỉ làm cho profile của bạn tuyệt vời hơn khi bạn đi xin việc, mà nó còn nâng cao hiểu biết của bạn và dĩ nhiên giúp bạn suy nghĩ xa hơn trong quá trình test một ứng dụng. Theo đó có một số chứng chỉ có thể giúp bạn như:

  • Certified Associate in Software Testing
  • ISTQB — Foundation Level
  • ISTQB — Advanced Level — Test Manager
  • ISTQB — Advanced Level — Test Analyst
  • HP HP0-M102 for UFT version 12.0
  • Certified Software Test Engineer

Tổng kết

Những kỹ năng cho tester automation trên sẽ giúp bạn nắm được giá trị lớn cho bản thân. Đặt biệt nếu bạn có hiểu biết về tất cả các automation test tool cùng với CI/CD tool như Jenkins hay Gitlab, bạn còn có thể nâng cao khả năng của công ty bạn. Thảo luận về kỹ năng của một automation tester sẽ giúp bạn nâng cao tay nghề từ cơ banr lên leader hoặc tầng kiến trúc. Vì vậy hãy chăm chỉ, đưa ra quyết định đúng đắn trong sự nghiệp của bạn.

Tham khảo