Làm thế nào để trở thành một Automation Testing Engineer? Như mọi người đều biết răng, kiểm thử tự động đang dần trở thành một xu hướng HOT để các bạn tìm hiểu, cũng như thị trường việc làm của công việc này ngày càng tăng. Vậy thì các bạn cần tìm hiểu những kiến thức gì, và cần có những kỹ năng gì để bước vào lĩnh vực này.
Automation Test là gì? Khi nào nên sử dụng Automation Test?
Khi khái niệm Automation Test (kiểm tra tự động) ra đời, Tester chỉ cần viết một đoạn code hoặc sử dụng một số công cụ như Selenium, Test Complete, Jmetter… để chạy tự động tất cả các bước bao gồm nhập thông tin, click, kiểm tra kết quả, so sánh kết quả thực tế với kết quả giả định.
Nhiều loại test có thể làm auto, ví dụ như functional testing, performance/load testing, unit testing.
Ưu điểm của Automation Test
- Độ tin cậy cao: Test chạy chính xác theo quy trình đã định sẵn. vì vậy tránh được nhiều lỗi do con người tạo ra, ví dụ như nhập sai dữ liệu.
- Khả năng lặp: Mình có thể test cách phần mềm xử lý (tính năng/hiệu năng) khi gặp tình huống chạy lặp đi lặp lại nhiều lần (cùng lúc) trên cùng script test. Đây còn gọi là performance/load testing.
- Mình có thể lập trình nhiều test tinh vi hơn để thu về những thông tin ẩn từ ứng dụng. Ở điểm này thì Manual Test không thể làm được.
- Test mang tính toàn diện cao. Mình có thể tạo ra một bộ test để bao quát hết tất cả tính năng trong ứng dụng.
- Khả năng tái sử dụng: Mình có thể tái sử dụng test trên nhiều phiên bản khác nhau của ứng dụng, ngay cả khi có sự thay đổi giao diện. Nếu chạy Manual Test thì một test case mất một tiếng, ba môi trường tốn ba tiếng. Mà trong suốt quá trình phát triển sản phẩm, chúng ta phải lặp lại quá trình test vô số lần, dẫn đến mất thời gian nếu làm Manual Test. Thay vào đó, chỉ cần viết một script test thì mỗi lần deploy lên môi trường mới, mình chỉ cần thay đổi URL là test tự chạy được.
- Chất lượng và hiệu suất phần mềm tốt hơn bởi vì mình có thể chạy nhiều test trong thời gian ngắn hơn với ít resource nhất.
- Tốc độ cao: Automation Testing Tools giúp chạy test nhanh hơn test bằng tay. Do thực thi bởi máy nên tốc độ của kiểm thử tự động nhanh hơn nhiều so với tốc độ của con người. Nếu cần 5 phú để thực thi một test case một cách thủ công thì có thể người ta chỉ cần khoảng 30s để thực thi một cách tự động.
- Có tính kinh tế cao vì có thể giảm thiểu nguồn nhân lực làm kiểm tra hồi quy.
Nhược điểm của Automation Test
- Khó mở rộng, khó bảo trì: trong cùng một dự án, để mở rộng phạm vi cho kiểm thử tự động khó hơn nhiều so với kiểm thử thủ công vì cập nhật hay chỉnh sửa yêu cầu nhiều công việc như debug, thay đổi dữ liệu đầu vào và cập nhật code mới.
- Khả năng bao phủ thấp: do khó mở rộng và đòi hỏi nhiều kỹ năng lập trình nên độ bao phủ của kiểm thử tự động thấp xét trên góc nhìn toàn dự án.
- Vấn đề công cụ và nhân lực: hiện nay cũng có nhiều công cụ hỗ trợ kiểm thử tự động khá tốt nhưng chúng vẫn còn nhiều hạn chế. Ngoài ra nhân lực đạt yêu cầu (có thể sử dụng thành thạo các công cụ này) cũng không nhiều.
- Nhiều tool có chi phí rất cao, ví dụ như commercial tool: HP Quick Test Pro.
- Thường thì lương trả cho Automation Tester nhiều hơn Manual Tester, vì công việc đòi hỏi họ có kỹ năng cao hơn, ví dụ như phải biết code, phải viết được script.
- Chi phí để phát triển và bảo trì test script cao. Ví dụ một test case nếu Manual Test thì mất 1 tiếng. Nhưng nếu đổi sang chạy Automation Test, cần chuẩn bị test script (mà trong trường hợp khó) thì phải mất 6-7 tiếng để viết test script. Người viết test script cần có kỹ năng lập trình và tool để chạy test. Vì vậy chi phí cho Automation Test cao hơn Manual Test.
- Đòi hỏi Tester phải có kinh nghiệm technical và kỹ năng lập trình.
- Đòi hỏi thời gian chuẩn bị dài hơn để thiết kế, cài đặt kỹ càng trước khi cần đưa dự án đi test.
- Có những dự án không nên chạy Automation Test, nhưng nhiều Tester vẫn hiểu nhầm và chạy Automation Test, dẫn đến mất thời gian, resource, công sức. Ví dụ như khi test một chức năng quá phức tạp của một ứng dụng hoặc một GUI object thì phải chạy Manual Test.
Những kỹ năng nào là cần thiết dành cho một Automation Tester?
- Types testing:
Unit test
,Intergration test
,System test
,Sanity test
,Regression test
…. là gì? - Testing Techniques: Phân tích giá trị biên/Phân vùng tương đương/Biểu đồ kết quả/Đoán lỗi/… là gì?
- Hiểu nguyên lý nhận dạng test objects. Nếu làm Web Automation Test cần nắm rõ HTML và XPath. Bạn có thể học hai mảng này ở W3School.
- Hiểu nguyên lý lập trình, và thành thạo ít nhất một ngôn ngữ lập trình. Web Automation Engine được dùng phổ biến ở thị trường hiện nay là Selenium WebDriver, có kết hợp cho các ngôn ngữ Java, C#, Ruby, Python… Ngoài ra các bạn có thể tham khảo thêm các ngôn ngữ scripting phổ biến như VBScript, JavaScript hoặc Groovy nếu cần.
- Không bỏ qua SQL và XML. Hai mảng này bạn có thể học tại TutorialsPoint và W3School. Đa số các dự án lập trình đều cần có cơ sở dữ liệu. XML được hiểu như một phần của portal database và SML cũng được sử dụng khá nhiều hiện nay.
- Sử dụng thành thạo thư viện của Selenium WebDriver API bởi Selenium open source, dễ sử dụng, cộng đồng lớn.
- Sử dụng thành thạo ít nhất 1 framework testing: Junit/TestNG/NUnit/… Từ đây sẽ giúp bạn rất nhiều trong việc build framework, hỗ trợ trong việc phân nhóm, quản lý testscript, report, prepare data/environment/browsers.
- Những bạn muốn đi sâu vào thiết kế tốt framework/common library thì nên tìm hiểu sâu về software design pattern.
- Sử dụng/build framework thành thạo từ Page Object Model pattern.
- Làm Automation Tester là liên quan đến coding nên các bạn cần quan tâm đến những kỹ năng của code như debug, source version control, coding convention, unit testing… cách sử dụng IDE: Visual Studio, Eclipse, IntelliJ…, làm việc với database…
- Nên ham học hỏi những cái mới trong mảng automation testing: build tools: Maven, ANT…, CI/CD: Jenkins, TeamCity, CircleCI, TFS, Docker.., Clould: AWS, Saucelab, Browserstack, Testingbot…, big data: Hadoop, HBase, Hive…, mobile: Appinum…
Automation Testing Tool
- Quick Test Profressional - (HP)
- Selenium
- Test Architect - (LogiGear)
- Ranorex
- Visual Studio CodedUI Testing
- TestComplete (SmartBear)
- SOAPUI - Web Services Testing (SmartBear)
- Appium
- Cucumber
- Silk Test
- Rspec
Automation Testing Frameworks
- QA Wolf - Cloud-based platform for zero-effort automated QA
- Cypress - Tool kiểm thử giao diện cho web, được viết bằng
javascript
và rất dễ sử dụng - Webdriver.io - Test framework for
node.js
- Jasmine - 1 trong 3 thư viện hỗ trợ
unit test
mạnh nhất chojavascript
- Nightwatch - open-source automated testing framework được cung cấp bởi Node.js và cung cấp các giải pháp E2E (từ đầu đến cuối) hoàn chỉnh để thử nghiệm tự động hóa với Selenium Javascript dành cho ứng dụng web, ứng dụng trình duyệt và trang web.
- Robot Framework - giải pháp cho người mới trong lĩnh vực kiểm thử tự động
- Selenium - open-source automation testing framework hỗ trợ nhiều loại ngôn ngữ lập trình như: Java, C #, Python, …
- Jest - JavaScript Testing Framework tập trung vào sự đơn giản
- Puppeteer -
- Playwright - end-to-end testing cho các ứng dụng web hiện đại.
Unit Testing Frameworks
JUnit
&TestNG
cho JavaMSTest
,NUnit
&xUnit
cho C#Unittest
&pytest
cho PythonPHPUnit
&Codeception
, Storyplayer, SeleniumHQ, Behat, Atoum, SimpleTest , PhpSpec, Peridot, Kahlan cho PHPMocha
,Jasmine
hoặcChai
cho JavaScriptsJest
,Mocha
,Chai
,Karma
,Jasmine
,Enzyme
,React-testing-library
,React test utils and test renderer
,Cypress IO
,Pupeeter
,Bit
cho React
Test-driven Development (TDD) Tool
Jest
cho unit testsESLint
cho lintingPrettier
cho formattingHusky
vàlint-staged
để pre-commit Git hooks
Công cụ và Thư viện cần thiết cho Fullstack
Top Visual Studio Extensions for Developers
Thư Viện Và Framework quan trọng bạn cần biết 2022
Code Quality Tool
- Complexity: Code Climate
- Hotspot and Churn: Code Scence
- Code Coverage: dotCover, Resharper, NDepend
- Duplication: CPD – Copy Paste Detector
- Dependency Security: Snyk
- Coding Style: SonarQube
Cơ hội nghề nghiệp
Cách mạng công nghiệp lần thứ tư đánh dấu kỷ nguyên vạn vật kết nối Internet. Nó xảy ra dựa trên sự hội tụ của nhiều công nghệ trong đó có công nghệ cốt lõi có công nghệ thông tin với sự phát triển không ngừng của công nghệ Internet từ thời kỳ kết nối nội dung như email đến mạng xã hội, Internet vạn vật, Internet kết nối thiết bị máy móc kết nối quá trình vận hành của các nhà máy. Ngoài công nghệ cốt lõi còn có sự hội tụ của công nghệ in 3D, công nghệ vật liệu tiên tiến, công nghệ lưu trữ…
Hiện nay, nền công nghiệp 4.0 đang phát triển mạnh mẽ, kéo theo sự phát triển của rất nhiều ngành nghề, đặc biệt là ngành công nghệ thông tin. Do đó, yêu cầu về nhân lực trong mảng này cũng đòi hỏi cac ứng viên cần phải có kỹ năng tốt hơn nữa về lập trình, technical, các kỹ năng về automation….
Nếu search trên các trang mạng tuyển dụng lớn như ITviec, Vietnamworks, LinkIn, Indeed, Dice, Monster, CareerBuilder … thì bạn sẽ thấy có vô vàn kết quả với các từ khóa tìm kiếm như:
- Test Automation Engineer
- Automation Developer
- Automation Testing/Automation Tester
- QA Automation Engineer
- Software Development Engineer in Test (SDET)
Từ đây, bạn có thể thấy được nhu cầu tuyển một QA có kiến thức và kinh nghiệm về automation test là rất lớn. Do đó, đủ để hiểu automation test sẽ là tiềm năng lớn cho tương lai của mảng Test nói riêng và công nghệ thông tin nói chung.
Tham khảo:
- Tìm hiểu về Automation Testing
- Automation Test là gì? Khi nào nên sử dụng Automation Test?
- Tìm hiểu sơ lược về kiểm thử tự động
- AUTOMATION: A GUIDE TO TESTING
- 7 bước để trở thành một Automation Testing Engineer
- Automation Test là gì? Khi nào nên sử dụng Automation Test?
- Đánh giá 100 công cụ kiểm thử phần mềm tốt nhất (Phần I)
- Đánh giá 100 công cụ kiểm thử phần mềm tốt nhất (Phần II)
- 100+ Công Cụ Kiểm Thử Phần Mềm - Phần I
- 100+ Công Cụ Kiểm Thử Phần Mềm - Phần II
- 100+ Công Cụ Kiểm Thử Phần Mềm - Phần III
- 100+ Công Cụ Kiểm Thử Phần Mềm - Phần IV
- 100+ Công Cụ Kiểm Thử Phần Mềm - Phần V
- 100+ Công Cụ Kiểm Thử Phần Mềm - Phần VI
- 100+ Công Cụ Kiểm Thử Phần Mềm - Phần VII
- Công cụ Automation Testing tốt nhất
- The Top 4 Open Source Tools That Make Appium Easier to Use
- Top 10 Automation Testing frameworks
- Top 11 open-source test automation frameworks
- 13 Best Test Automation Frameworks
- 18 BEST Automation Testing Tools
- Những công cụ kiểm thử tự động phổ biến năm 2020
- Top 5 công cụ kiểm thử API
- 21 Công cụ kiểm tra API tốt nhất (Part1)
- 21 Công cụ kiểm tra API tốt nhất (Part2)
- Phân biệt các role của QA Engineering: Skills, Tools, và Responsibilities trong một Testing Team
- Giới thiệu về WebDriverIO
- VIẾT UNIT TEST CHO JAVASCRIPT VỚI JASMINE
- VIẾT UNIT TEST CHO JAVASCRIPT VỚI JASMINE – PHẦN 2
- Sử dụng Jasmine và Karma với AngularJS
- Angular Unit Testing
- Tự động test (Automation Testing) cho trang web ASP.NET Core 2.0 (Phần 1: Unit Test)
- Tự động test (Automation Testing) cho trang web ASP.NET Core 2.0 (Phần 2: Integration Test)
- Tự động test (Automation Testing) cho trang web ASP.NET Core 2.0 (Phần 3: End-to-End Test)
- Automated testing for Terraform
- Kiểm thử tự động cùng Robot Framework dành cho tester
- Robot framework dành cho tester (Phần I)
- Robot framework dành cho tester (Phần II)
- Robot framework dành cho tester (Phần III)
- Robot framework dành cho tester (Phần IV)
- Phần 1: Tổng quan về Robot Framework, cài đặt Robot Framework
- Phần 2: Robot Framework (Giới thiệu qua về các cấu trúc viết kịch bản cách khai báo biến trong robot framework)
- Phần 3. Các kiến thức cơ bản trong robot framework như vòng lặp for, dictionary …
- Phần 4: Thư viện của Robot Framework, Builth
- Phần 5: Robot Framework : Collections keyword làm việc với List
- Phần 6: Robot Framework ( Dictionary , Thư viện DateTime )
- Phần 7: Robot Framework - Cách tạo test case auto làm việc với API với phương thức GET
- Phần 8: Robot Framework - Cách tạo test case auto làm việc với API (phương thức POST)
- Robot Framework Làm việc với Database
- Giới thiệu về Selenium
- Tổng quan về Selenium và vai trò của các thành phần
- Những lý do các QA xuất phát từ developer frontend như ReactJs hay VueJs nên sử dụng công cụ kiểm thử cypress cho website thay vì selenium.
- https://viblo.asia/tags/cypress
- https://viblo.asia/tags/jasmine
- https://viblo.asia/tags/robot-framework
- https://viblo.asia/tags/selenium
- https://viblo.asia/tags/selenium-ide
- https://viblo.asia/tags/selenium-webdriver
- Giáo trình kiểm thử phần mềm
- KIỂM THỬ VÀ BẢO ĐẢM CHẤT LƯỢNG PHẦN MỀM
- NGHIÊN CỨU VÀ ỨNG DỤNG GIẢI PHÁP KIỂM THỬ TỰ ĐỘNG PHẦN MỀM
- Nghiên cứu và đề xuất các phương pháp kiểm thử giao diện phần mềm
- Kiểm tra độ phủ trong kiểm thử đơn vị
- Nhập môn Công nghệ Phần mềm - Đảm bảo chất lượng phần mềm