5 xu hướng của ngành kiểm thử tự động trong năm 2021

Các nội dung được chia sẻ sẽ mang đến cho người đọc một cái nhìn tổng quan hơn về bối cảnh cũng như xu hướng của ngành kiểm thử tự động trong giai đoạn hiện tại và tương lai.

Về diễn giả

  • Anh Thanh Lê hiện đang là Delivery Manager tại LogiGear.
  • Anh đã có 9 năm làm việc trong ngành kiểm thử phần mềm.
  • Công việc hiện tại khá đa dạng các nhiệm vụ khác nhau như xây dựng mối quan hệ với khách hàng, quản lý chất lượng dự án và quản lý con người, tham gia đào tạo nguồn nhân lực cho công ty thông qua các lớp kiểm thử tự động, tham gia viết các bài báo chia sẻ kinh nghiệm sử dụng công cụ kiểm thử tự động.

Tất cả các kinh nghiệm được chia sẻ hôm nay đều dựa trên kinh nghiệm làm việc và ý kiến khách quan của mình. Bên cạnh đó, mình đã tham khảo nhiều nghiên cứu về lĩnh vực kiểm thử phần mềm tại LogiGear để đi tới một số kết luận này.

  10 bước để bắt đầu áp dụng kiểm thử tự động vào dự án
  5 điều cần lưu ý trước khi bắt đầu kiểm thử di động

Digital Transformation – Chuyển đổi số

Có thể bạn đã nghe qua nhiều cụm từ như “chính phủ điện tử”, “thành phố thông minh”, “ngân hàng điện tử”, “chatbot”, “ứng dụng dịch vụ đám mây”… Tất cả những thuật ngữ này đều là bước đi của những quốc gia, công ty nhằm mục đích chuyển đổi số.

Vậy chuyển đổi số là gì?

Nói một cách dễ hiểu, chuyển đổi số là quá trình mà thông qua việc sử dụng những công cụ, ứng dụng khoa học kỹ thuật để thay thế hoặc cải thiện những công việc chưa được ứng dụng khoa học kỹ thuật hoặc những công việc đòi hỏi nhiều công sức của con người. Covid-19 là một nhân tố thúc đẩy sự phát triển mạnh mẽ của chuyển đổi số trong 2 năm gần đây.

Một điều chắc chắn là kinh tế thế giới bị ảnh hưởng rất rõ rệt trong suốt đại dịch này nên việc cắt giảm chi phí hoạt động, ngân sách, nguồn nhân lực là việc không thể tránh khỏi ở rất nhiều công ty. Tuy nhiên, chất lượng dịch vụ là thứ không thể cắt giảm, vậy làm thế nào để sống sót được qua đại dịch và cạnh tranh với thị trường?

Câu trả lời chính là chuyển đổi số.

Thực hiện việc tự động hóa nhiều hơn, chúng ta có thể viết nên những chương trình, những ứng dụng mà qua đó máy móc sẽ làm việc để giảm bớt chi phí và nhân lực mà công ty cần có để hoạt động. Chuyển đổi số phụ thuộc rất nhiều vào khoa học kỹ thuật, nhiều ứng dụng ra đời với mục đích chuyển đổi số. Là một tester, một dev, công việc của mình sẽ nhiều hơn, có nhiều cơ hội việc làm hơn trong thời đại chuyển đổi số này.

DevOps, Continuous Testing, CI/CD

DevOps

Điều đầu tiên khi nhắc đến DevOps được nhiều người nghĩ chính là rất nhiều các công nghệ và công cụ cần phải đào sâu nghiên cứu, điều này đúng nhưng chưa đủ. DevOps giống như Agile mà không phải là một công cụ hay một process, nó là một văn hóa làm việc.

Văn hóa này đề cao sự gắn kết giữa team phát triển phần mềm và team vận hành sản phẩm khi đưa ra thị trường. QA hiện nay vẫn đóng vai trò rất quan trọng trong việc phát triển phần mềm cho dù các công ty, các dự án đang apply những dự án như thế nào.

QA sẽ góp phần đưa ra những quyết định như việc sản phẩm này có được đưa ra thị trường hay không. Khi làm việc trong team thuần về Devops, QA có thể vô tình trở thành điểm nghẽn cho sự phát triển và đưa sản phẩm ra thị trường. Làm sao để có thể hoàn thành công việc một cách liên tục, không gây ảnh hưởng đến team phát triển phần mềm cũng như ngăn cản việc phải chờ đợi feedback từ QA mới có thể cho sản phẩm ra thị trường?

Continuous Testing

Phương thức kiểm thử mới Continuous testing bắt buộc bạn phải tìm ra một cách nào đó để kiểm thử sớm hơn trước khi sản phẩm được đưa ra thị trường cũng như có thể kiểm thử thường xuyên hơn. Để áp dụng continuous testing vào trong quá trình kiểm, yêu cầu chúng ta phải tự động hóa luôn quá trình kiểm thử.

Chẳng hạn như khi sắp có một bản phát hành mới thì đội ngũ tester cần tham gia kiểm thử sản phẩm đó để đưa ra feedback cho đội ngũ phát triển phần mềm. Nếu team dev release sản phẩm vào lúc khuya chẳng hạn, thì việc QA có thể thức để chờ có sản phẩm và test sẽ khá khó khăn. Công việc này đòi hỏi yếu tố quan trọng là tự động hóa – tự động hóa những công việc mà tester cần phải làm khi muốn đưa ra phản hồi về chất lượng sản phẩm.

Nói một cách dễ hiểu là bạn phải dùng những chương trình để tự động hóa việc mô phỏng lại những thao tác mà tester sẽ làm khi kiểm thử một ứng dụng nào đó.

CI/CD

Thông qua đó, chúng ta sẽ để cho những hệ thống CI/CD vận hành và tự động chạy những automatic test mỗi khi có một sản phẩm mới cần đưa ra thị trường. Việc này hoàn toàn không gây nên gánh nặng gì cho testing mà còn giải phóng testing khỏi những công việc lặp đi lặp lại.

Nhờ vậy đội ngũ testing sẽ có nhiều thời gian hơn để tập trung vào những loại hình kiểm thử cần kinh nghiệm và khả năng sáng tạo của con người mà máy không thể nào thay thế được.

Có một số tools bạn có thể sẽ gặp khi sử dụng DevOps hay Continuous Testing bên dưới mà bạn có thể tìm hiểu:

kiểm thử tự động

Robotic Process Automation (RPA) – Tự động hóa quy trình bằng robot

Đây là xu hướng vẫn còn khá mới mẻ với cộng đồng công nghệ thông tin tại Việt Nam. RPA là một cơ hội mới trong mảng Công nghệ thông tin. RPA thực chất là tập hợp những chương trình được lập trình sẵn và thông qua đó mô phỏng lại những thao tác mà người dùng thường xuyên thực hiện trên một ứng dụng. Thông qua những chương trình được lập trình sẵn như vậy, RPA giúp nâng cao năng suất hoạt động của nhân viên, giảm thiểu các rủi ro và sai sót trong quá trình làm việc.

Kiểm thử tự động là quá trình mô phỏng lại những thao tác của testers và đưa ra các phản hồi về chất lượng sản phẩm. Trong khi đó, RPA cũng tương tự vậy, nó cũng mô phỏng lại những thao tác mà người dùng sẽ làm trên các ứng dụng như trích xuất dữ liệu từ một file PDF và nhập vào một chương trình hay lấy thông tin từ một website và tạo ra báo cáo chẳng hạn.

Bước khởi đầu của cả hai khá giống nhau nhưng mục đích của RPA là để thay thế con người làm những công việc mang tính chất có quy tắc, lặp đi lặp lại, phải xử lý nhiều dữ liệu thì RPA là lĩnh vực mới sẽ phát triển tại Việt Nam trong thời gian tới.

Ngoài việc giống với automation testing, rất nhiều cơ quan tổ chức đang chuyển mình trong thời đại chuyển đổi số này và thông qua đó họ muốn nâng cao năng lực hoạt động của công ty. Do đó có thể thấy automation chắc chắn là một yếu tố rất quan trọng trong hiện tại và cả tương lai. RPA sẽ trở thành nhân tố chính ảnh hưởng đến sự thành bại của các bước đi trong suốt quá trình chuyển đổi số.

kiểm thử

Theo dự đoán của Gartner, trong năm 2021, doanh thu từ việc sản xuất ra các công cụ RPA trên toàn cầu có thể lên tới khoảng 2 tỉ USD. Đây là một con số khá lớn cho thấy “mảnh đất” này thật sự màu mỡ và rất đáng để chúng ta thử sức. Vì vẫn còn khá mới nên nếu muốn thử sức với RPA thì sẽ phải bắt đầu từ đâu?

May mắn là những công ty phát triển các công cụ RPA đã biết được điều đó và đưa ra các chương trình về đào tạo, sử dụng tools cũng như các chương trình giúp hiểu hơn về RPA cũng như cách tổ chức một dự án RPA sẽ như thế nào.

More IoT và AI testing

Các thiết bị IoT ngày nay xuất hiện ở khắp mọi nơi và nhiều lĩnh vực khác nhau. Theo báo cáo của Gartner vào năm 2020, trên thế giới sẽ có khoảng 30 tỷ thiết bị IoT. Điều này đồng nghĩa với việc những ứng dụng được tạo ra nhằm quản lý và sử dụng các thiết bị IoT sẽ rất nhiều. Dẫn đến kết quả tất yếu là công việc trong ngành này cũng sẽ ngày càng nhiều hơn cả về mặt chất lượng và số lượng.

Nhưng có một thử thách lớn đó là việc kiểm thử hệ thống IoT hoặc các hệ thống kiểm thử có tích hợp IoT thì không hề đơn giản. Nó đòi hỏi chúng ta phải nghiên cứu để tìm ra những hướng đi mới, cách đi mới để có thể test một cách toàn diện hệ thống mới này.

Theo tìm hiểu của mình, để test một hệ thống tích hợp AI sẽ cần có 4 điểm chính. Trong đó, data và giải thuật là 2 yếu tố đầu tiên quyết định chất lượng của ứng dụng AI, chất lượng của sản phẩm sẽ phụ thuộc vào chất lượng dữ liệu mà chúng ta dùng để train và kiểm thử hệ thống AI. Trong giải thuật sẽ có rất nhiều libraries được đưa ra trên internet đã tích hợp sẵn giải thuật trước đó.

Các hệ thống AI có sự kết hợp của rất nhiều libraries, nhiều giải thuật khác nhau để tạo ra một hệ thống AI hoàn chỉnh. Vì thế chúng ta không thể xem nhẹ việc test giải thuật của ứng dụng AI. Sau khi chương trình đã chạy được rồi, bạn sẽ còn cần phải quan tâm đến hiệu suất và tính bảo mật của chương trình.

số liệu

Yếu tố cuối cùng, khi một hệ thống IoT hoặc một thiết bị AI được tạo ra chắc chắn sẽ không chỉ sử dụng với một chương trình cụ thể nào hết mà có thể được tích hợp, liên kết với rất nhiều chương trình, thiết bị khác mà một người tester phải xem xét và kiểm thử những hệ sinh thái xung quanh chương trình mà chúng ta đang phát triển.

Sự phát triển của các công cụ kiểm thử tự động

Flaky test là một trong những khó khăn với bất cứ ai làm trong ngành kiểm thử tự động. Đó là test của những chương trình đã viết rồi nhưng đôi lúc lại gặp thất bại một cách khá đột ngột và không thể lường trước được. Đó có thể là những lỗi sai xảy ra do sự thay đổi nhỏ trên giao diện ứng dụng chẳng hạn.

Khi nhập môn kiểm thử tự động, các tester sẽ biết được cách định vị những controls, locate elements và sử dụng các công cụ, các chương trình để tương tác với controls đó. Chẳng hạn như khi làm việc với Selenium thì sẽ có rất nhiều các kỹ thuật khác nhau để locate elements như sử dụng ID, name, CSS, xpath,…

Nhưng đa số trong các dự án mình đã tham gia mọi người đều chọn xpath vì nó rất hiệu quả trong việc giúp định vị những controls không có các attribute cụ thể nào cả.

Selenium

Điều đó dẫn đến các xpath đã được generate ra sẽ trở nên khá khó để có ai khác sau này, khi họ tiếp tục dự án có thể đọc và hiểu được. Vì lí do đó nên 4 versions đang được phát triển của Selenium đã đưa ra một feature mới là Relative Locators.

Relative Locators cho phép tìm kiếm và locate những elements thông qua các phương hướng. Rõ ràng Selenium là tool đang được sử dụng rộng rãi và hi vọng rằng trong version 4 của Selenium Webdriver sẽ có nhiều features hỗ trợ giảm thiểu việc tốn quá nhiều thời gian để tạo automation script.

Cypress

Bên cạnh đó cũng có những thương hiệu gần đây được biết đến khá nhiều như Cypress – một automation tool có cách hoạt động trái ngược hoàn toàn với Selenium Webdriver. Thay vì tương tác trực tiếp với browser thì nó sẽ chạy bên trong trình duyệt, có thể nắm bắt tất cả các traffic đi ra và đi vào trong ứng dụng.

Protractor cũng là một tool khác dựa trên Selenium Webdriver, hỗ trợ giảm bớt công việc khi build các dự án để kiểm thử tự động những ứng dụng được build bằng Angular.

Puppeteer

Puppeteer chú trọng đến việc cho phép test trên các headless browser. Một điều dễ dàng nhận ra trong các dự án kiểm thử phần mềm là trong một team không phải ai cũng biết code và code tốt, nhưng khi đã chuyển dự án qua kiểm thử tự động thì bắt buộc bạn phải dành thời gian để học thêm về lập trình và cách sử dụng những tools mình sẽ dùng để mô phỏng các thao tác của một tester.

Trên thị trường hiện nay đã có nhiều tools ra đời với mục đích giảm thiểu thời gian coding, tạm gọi là những feature record and playback. Các công cụ này sẽ ghi nhớ lại các thao tác đã làm trên ứng dụng và tự động generate ra những đoạn script mà bạn có thể sử dụng để chạy lại. Selenium IDE là công cụ khá quen thuộc cho phép bạn làm chuyện này. Ngoài ra còn có TestArchitectGondola.

Một vấn đề khác khá thú vị trong việc phát triển các tools kiểm thử tự động đó là tích hợp hệ thống trí thông minh nhân tạo vào quá trình kiểm thử phần mềm. Có một viễn cảnh tươi sáng được vạch ra, đó là khi đưa một ứng dụng đang phát triển cho một chương trình kiểm thử tự động tích hợp AI thì nó sẽ tự động test tất cả mọi thứ và trả về feedback.

Có những công ty tiên phong trong việc tích hợp AI vào công cụ kiểm thử tự động ví dụ như Applitools – là một phần mềm tích hợp AI giúp tester test các giao diện của web application một cách đơn giản và hiệu quả nhất. Applitools sẽ tự động dùng AI định vị những vấn đề mà ứng dụng cần cải thiện hoặc những bugs có thể xảy ra trong suốt quá trình. Testim là một tool khác đang tập trung phát triển hệ thống AI phục vụ cho functional testing, test các features ứng dụng nhiều hơn test về giao diện.

Đây là 2 công cụ đang rất phát triển và có tiềm năng phát triển trong các dự án. Chẳng hạn như có thể kết hợp Applitools vào Selenium framework để kết hợp giữa kiểm thử tự động với những chức năng của ứng dụng cũng như kiểm thử tự động các bug về giao diện có thể có trong ứng dụng.