× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Tại sao AI là chủ đề nóng trong phát triển phần mềm

30/07/2024 01:22

Trong bài viết này, chúng ta sẽ đi sâu hơn vào vai trò của AI trong thử nghiệm tự động. Bạn sẽ tìm hiểu về: AI giúp ích như thế nào với Kiểm thử tự động và AI nâng cao hiệu quả của thử nghiệm tự động như thế nào

ning là những đột phá quan trọng nhất trong lĩnh vực kiểm thử phần mềm và chúng sẽ tiếp tục là chủ đề nóng trong tương lai gần.

Với sự phát triển của các công cụ như ChatGPT, Bard và CodeWhisperer, các công ty nỗ lực làm cho nhóm của họ nhanh hơn và tránh lỗi thủ công càng nhiều càng tốt. Các rào cản đối với việc áp dụng tiếp tục giảm xuống nhờ vào kỹ thuật nền tảng - nền tảng học máy dựa trên đám mây cung cấp cơ sở hạ tầng có thể mở rộng và các công cụ và khuôn khổ được xây dựng sẵn để phát triển mô hình. Amazon và Google gần đây đã tăng cường các dịch vụ của họ. Với điều đó, nhu cầu về các kỹ năng AI dự kiến ​​sẽ tăng theo cấp số nhân và thúc đẩy nhu cầu của người lao động để học các kỹ năng kỹ thuật mới trong các ngành (như được thể hiện trong khảo sát giáo dục đại học năm 2021 này ).

Lợi ích chính của AI trong thử nghiệm phần mềm là cải thiện tốc độ và tính nhất quán, đồng thời giải phóng thời gian cho các hoạt động có giá trị gia tăng hơn. Tuy nhiên, ngoài những lợi ích tiềm năng, còn có những rủi ro tiềm ẩn liên quan đến các công cụ dựa trên AI tạo ra, chẳng hạn như các vấn đề về sở hữu trí tuệ, thiên vị và quyền riêng tư, cũng như các thách thức mới về dữ liệu và quy định.

Để có cái nhìn tổng quan chi tiết hơn, bạn có thể tìm hiểu thêm về ChatGPT và LLM để kiểm thử phần mềm trên blog của chúng tôi.

Các giải pháp hỗ trợ AI đang được sử dụng trong tài chính, bán lẻ, chăm sóc sức khỏe, sản xuất, vận tải và nhiều lĩnh vực khác, và các ứng dụng AI dự kiến ​​sẽ chỉ phát triển. Đối với phát triển phần mềm, có thể tìm thấy các trường hợp thú vị ở mỗi giai đoạn của vòng đời, ví dụ:

  • Đẩy nhanh các yêu cầu, thiết kế/mô hình;
  • Kiểm tra mã, lập tài liệu và phân tích tĩnh;
  • Tạo, thực hiện và bảo trì trường hợp thử nghiệm;
  • Báo cáo và gỡ lỗi;
  • Giám sát và phân tích dự đoán để đảm bảo chất lượng (xem nghiên cứu điển hình của Atlassian và Amazon làm ví dụ).

Tuy nhiên, trong các trường hợp sử dụng này, đặc biệt khi nói đến tính sáng tạo và độ phức tạp trung bình hoặc cao, độ chính xác và tính hợp lệ của kết quả vẫn chưa hoàn hảo, do đó, sự can thiệp của con người vẫn là điều bắt buộc, như các nghiên cứu điển hình của McKinsey và BCG đã nhấn mạnh.

Trong bài viết này, chúng ta sẽ đi sâu hơn vào vai trò của AI trong thử nghiệm tự động. Bạn sẽ tìm hiểu về:

AI giúp ích như thế nào với Kiểm thử tự động

Sử dụng AI để tự động hóa quy trình thử nghiệm có thể quan trọng đối với các tổ chức muốn đạt được sự phân phối liên tục. Bằng cách sử dụng AI để tạo và chạy thử nghiệm trên mã mới dễ dàng hơn, các nhà phát triển có thể nhanh chóng xác định và khắc phục các sự cố phát sinh, đảm bảo rằng mã đã sẵn sàng để triển khai sớm nhất có thể. 

Chúng ta sẽ xem xét hai loại lớn các bài kiểm tra tự động dựa trên phương pháp tạo - người dùng ghi lại kịch bản hay viết từng bước dưới dạng một tập lệnh "truyền thống" - và thảo luận về các ứng dụng AI cho quy trình thiết kế và bảo trì của cả hai.

 

Thiết kế

Đối với hạng mục đầu tiên, thử nghiệm UI tự động được kích hoạt bởi một trình ghi thông minh với công cụ học máy ngày càng thông minh hơn sau mỗi lần thực hiện dựa trên dữ liệu ứng dụng của bạn.

Bạn có thể cần phải chạy thử một công cụ AI như vậy qua ứng dụng của mình một lần hoặc đối với một số sản phẩm mới hơn (như GPTBot , Scrapestorm hoặc Browse.ai ), bạn có thể chỉ chúng vào ứng dụng web của mình để tự động bắt đầu "spidering" ứng dụng. Trong quá trình đó, các công cụ tự động hóa thông minh tận dụng OCR (Nhận dạng ký tự quang học) được cải tiến và các kỹ thuật nhận dạng hình ảnh khác để lập bản đồ ứng dụng. Điều đó cho phép nhận dạng các thành phần tốt hơn ngay cả khi vị trí của chúng đã thay đổi - không cần phải mã hóa cứng với thứ gì đó như ID khả năng truy cập. Các công cụ AI như vậy cũng có thể thu thập dữ liệu về tính năng và trang để đo hiệu suất, như thời gian tải, v.v.

Theo thời gian, công cụ AI sẽ xây dựng một tập dữ liệu và đào tạo các mô hình ML của bạn cho các mẫu dự kiến ​​của các ứng dụng cụ thể của bạn. Cuối cùng, điều đó cho phép bạn tạo các bài kiểm tra "đơn giản" tận dụng máy học và tự động xác thực tính chính xác về mặt hình ảnh của ứng dụng dựa trên các mẫu đã biết đó (mà không cần bạn phải chỉ định rõ ràng tất cả các xác nhận). 

Nếu có sự sai lệch về chức năng (ví dụ, một trang thường không báo lỗi JavaScript nhưng bây giờ lại báo lỗi), sự khác biệt về mặt hình ảnh hoặc sự cố chạy chậm hơn mức trung bình, các bài kiểm tra hỗ trợ AI như vậy sẽ có thể phát hiện hầu hết các sự cố đó trong phần mềm của bạn và đánh dấu chúng là lỗi tiềm ẩn.

Đối với thử nghiệm tự động theo kịch bản, trong "thế giới cũ", một kỹ sư tự động hóa sẽ cần phải thêm thủ công các câu lệnh mã cho từng bước trong một trường hợp thử nghiệm. Bây giờ, AI có khả năng tạo ra văn bản ở nhiều định dạng khác nhau, bao gồm các đoạn mã và chú thích. 

Ngoài ra, các nền tảng AI cung cấp tùy chọn không cần mã/mã thấp, đặc biệt hữu ích cho những người muốn tập trung vào các tác vụ cấp cao hơn. Mã có thể được tạo từ các mô tả có cấu trúc (ví dụ: phát triển theo hành vi) từ các đối tượng không chuyên về kỹ thuật, chẳng hạn như nhà phân tích kinh doanh và quản lý sản phẩm, mà không cần phải viết thủ công từ đầu, do đó giảm thời gian phát triển trong khi tăng hiệu quả và năng suất.

Các công cụ như ChatGPT, GitHub Copilot hoặc Amazon CodeWhisperer có thể được sử dụng cho việc viết kịch bản tự động hóa như vậy để tăng năng suất (ví dụ: sử dụng CodeWhisperer để tự động hóa các bài kiểm tra đơn vị). Các bạn đồng hành chatbot AI bên ngoài có thể cần phải bắt kịp khi các trường hợp kiểm tra trở nên phức tạp hoặc trừu tượng. Thay vào đó, các công cụ AI mã hóa tích hợp như Copilot hiệu quả hơn, cung cấp phản hồi cục bộ, trực tuyến dựa trên các mẫu trước đó và ngữ cảnh mã trực tiếp.

Ở cấp độ cao, bạn sẽ:

1. Điều chỉnh cài đặt LLM nếu cần

Ví dụ, trong ChatGPT, bạn có thể vô hiệu hóa lịch sử trò chuyện để kiểm soát quá trình đào tạo chính xác hơn. Phind (dựa trên GPT 4.0) có các nút chuyển đổi kiểm soát độ dài của câu trả lời và mô hình được ưu tiên sử dụng. Nút chuyển đổi "Pair Programmer" cho phép công cụ đặt câu hỏi rõ ràng cho người dùng về thông tin cụ thể về lời nhắc của họ theo cách qua lại.

 

2. Cung cấp lời nhắc ban đầu

X-quang-kiểm tra cây bách

Một số mẹo để cải thiện kết quả của bước này là:

  • Liệt kê các bước cụ thể mà người dùng sẽ thực hiện trong tình huống này;
  • Phân tách các phần trong lời nhắc của bạn bằng cú pháp “###”;
  • Tận dụng các phiên bản mô hình mới nhất;
  • Sử dụng các lệnh trực tiếp, rõ ràng;
  • Cụ thể hơn theo ngữ cảnh, tăng dần mức độ chi tiết (ngoài các bước, ngữ cảnh có thể bao gồm ví dụ như mã nguồn một phần);
  • Chia các yêu cầu phức tạp hơn thành một chuỗi các lời nhắc đơn giản hơn;
  • Giới hạn phạm vi đầu ra của mô hình .

 

Một số thách thức đã biết bao gồm các thư viện front-end như React và Angular, trừu tượng hóa HTML cơ bản, khiến việc sao chép/dán mã vào lời nhắc AI trở nên cực kỳ khó khăn. Ngoài ra, các ứng dụng chỉ cục bộ hoặc ẩn sau các lớp xác thực khiến không thể cung cấp URL mà AI có thể tham chiếu.

 

3. Kiểm tra kết quả và lặp lại

Có thể cung cấp phản hồi dài dòng miễn là hướng dẫn rõ ràng và súc tích. Kịch bản thử nghiệm càng phức tạp thì lời nhắc càng cần nhiều ngữ cảnh để đạt được kết quả chính xác. Để đạt được độ chính xác ấn tượng trong môi trường tùy chỉnh, cần tinh chỉnh các công cụ AI tạo sinh và các mô hình LLM của chúng với khối lượng lớn dữ liệu chất lượng cao, cụ thể của công ty, tất nhiên là phải lưu ý đến vấn đề bảo mật.

Chỉ cần nhớ rằng kết quả trong nhiều trường hợp sử dụng thực tế, ngay cả sau nhiều lần lặp lại, sẽ là các khối xây dựng vững chắc của một bài kiểm tra tự động có thể thực hiện được, chứ không phải là giải pháp hoàn thiện 100%. Ở trạng thái hiện tại, nó vẫn cần được con người điều chỉnh.

 

BẢO TRÌ

Bản chất dễ hỏng của tự động hóa UI đã là một thách thức trong một thời gian khá dài, vì vậy, tự phục hồi là một trong những khía cạnh bảo trì chính mà AI hỗ trợ. 

Chúng tôi đã đề cập ngắn gọn trong phần trước rằng các công cụ tự động kiểm thử truyền thống có các định danh cụ thể để xác định các thành phần của ứng dụng. Do các định nghĩa cố định đó, các bài kiểm thử bắt đầu không thành công khi các thành phần thay đổi. 

Thay vào đó, các thuật toán trí tuệ nhân tạo cho phép tự động phát hiện các vấn đề bất ngờ (ví dụ, do các thuộc tính động) và đề xuất một giải pháp thay thế hợp lệ, tối ưu hơn hoặc tự động điều chỉnh trường hợp thử nghiệm. Nhận dạng đối tượng là một dạng thiết kế thông minh có thể thêm các phần tử mới và các thuộc tính được cập nhật vào DOM mà không cần nỗ lực thủ công.

Về mặt kịch bản, AI có thể đơn giản hóa việc bảo trì mã và thúc đẩy tính nhất quán trên nhiều nền tảng và ứng dụng khác nhau (ví dụ: bằng cách chuyển đổi mã chức năng sang các môi trường khác nhau). AI tạo sinh cũng có thể được sử dụng để tự động tóm tắt mã và lập tài liệu - nó có thể xem xét mã, thêm các bình luận giải thích và tạo các bản tóm tắt đầu ra và tài liệu ứng dụng theo định dạng ngắn gọn, dễ đọc đối với con người. 

 

Chấp hành

Về sự tham gia của AI, khía cạnh này hoạt động tương tự giữa hai loại. Ngoài những gì chúng tôi đã đề cập, AI có thể giúp cấu hình, lên lịch và kích hoạt các bài kiểm tra của bạn. Ngoài ra, nó có thể hỗ trợ ra quyết định về phạm vi thực hiện. 

Một trong những câu hỏi quan trọng mà hầu hết các công ty phải vật lộn là "Bộ thử nghiệm nhỏ nhất mà chúng ta nên thực hiện để xác thực mã mới này một cách đầy đủ là gì?". Các công cụ AI có thể được sử dụng để trả lời câu hỏi đó - chúng có thể phân tích phạm vi thử nghiệm hiện tại, đánh dấu các phụ thuộc và chỉ ra các khu vực có rủi ro.

Tuy nhiên, điều quan trọng là phải hiểu được sự khác biệt giữa các công nghệ thực tế sẵn sàng tạo ra giá trị kinh doanh và các công nghệ hứa hẹn nhưng có những hạn chế và vấn đề vẫn cần được giải quyết. Ví dụ, bạn có thể nâng cao quy trình thử nghiệm của mình bằng các tính năng mạnh mẽ của Xray Enterprise như Test Case Designer và đạt được sự cân bằng giữa các tác vụ thủ công được tự động hóa bằng các thuật toán thông minh và các công cụ quản lý thử nghiệm.