Ngày nay vòng đời phát triển phần mềm thường chia thành nhiều giai đoạn ngắn, với sự thay đổi thường xuyên của mã nguồn để có được phản hồi sớm từ người dùng, vì vậy cần có phương pháp kiểm thử hiệu quả trước sự thay đổi thường xuyên đó.
Bên cạnh manual testing (kiểm thử thủ công), automation testing (kiểm thử tự động) là một phương pháp hứa hẹn, tuy nhiên cũng cần đánh đổi lại nhiều thứ để có thể áp dụng thành công. Trong bài hôm nay, chúng ta sẽ tìm hiểu automation testing là gì? Vai trò của automation testing trong vòng đời phát triển phần mềm, những kỹ năng cần thiết để trở thành automaion tester và nhiều nội dung khác.
1. Automation testing là gì?
1.1 Giới thiệu về automation testing
Trong kiểm thử phần mềm, kiểm thử tự động (Automation testing) là việc sử dụng phần mềm đặc biệt (tách biệt với phần mềm đang được kiểm thử) để kiểm soát việc thực hiện các bài kiểm tra và so kết quả thực tế với kết quả dự đoán từ trước. Nguồn wiki
Cùng với automation testing, chúng ta có manual testing (kiểm thử thủ công) sử dụng khả năng đánh giá của con người để xác định tính đúng đắn của các test case. Hiện nay tuỳ thuộc vào dự án và nhiều yếu tố khác về nhân sự, ngân sách mà cả hai loại hình kiểm thử này đều được áp dụng nhiều trong quá trình phát triển phần mềm.
1.2 Những dự án nào nên áp dụng automation testing
Nhìn chung automation testing sẽ phù hợp với những dự án mà quá trình manual testing quá tốn thời gian hoặc không thể thực hiện nếu làm một cách thủ công, có thể kể đến một vài đặc điểm của những dự án phù hợp để áp dụng automation testing:
- Dự án diễn ra trong thời gian dài (thường tính bằng năm) và cần thường xuyên kiểm thử lại các thành phần con mà nếu sử dụng manual testing thì sẽ tốn rất nhiều thời gian.
- Những phần mềm với nhiều phiên bản khác nhau, hoạt động trên nhiều môi trường khác nhau và cần đảm bảo rằng tất cả những phiên bản ấy đều đang trong trạng thái tốt nhất sau mỗi lần phát hành.
- Những phần mềm cần xử lý lượng dữ liệu lớn để tính toán mà không thể nhập liệu một cách thủ công được.
1.3 Automation testing có thể thực hiện bởi ai? khi nào?
Automation testing có thể được thực hiện ở bất kỳ giai đoạn nào trong vòng đời phát triển phần mềm, và có thể được thực hiện bởi cả lập trình viên và tester.
Ngay trong giai đoạn đầu của dự án, các lập trình viên đã cần viết unit test để đảm bảo các đoạn mã nguồn nhỏ nhất trong chương trình của mình luôn hoạt động đúng.
Đến khi kết hợp các hệ thống con với nhau, thì cả lập trình viên và tester đều có thể viết API test để đảm bảo các thành phần trong phần mềm có thể tích hợp trơn tru với nhau.
Và đến khi hoàn thiện giao diện người dùng, tester có thể dùng automation testing để kiểm tra các tính năng của phần mềm dưới góc nhìn của người dùng cuối một cách tự động.
2. Ưu điểm của automation testing
- Tăng cường độ chính xác: automation testing giảm thiểu khả năng xảy ra lỗi của con người vì các automation testing được thiết kế để tuân theo một tập hợp các bước được xác định trước một cách nghiêm ngặt.
- Tăng tốc độ: automation testing có thể chạy liên tục, song song, 24/7, mà không cần sự can thiệp sâu của con người, do đó làm tăng tốc độ thực thi bài kiểm tra và giảm tổng thời gian kiểm thử.
- Tính nhất quán: Trong các kịch bản kiểm tra liên tục (continuous testing), ví dụ như kích hoạt các lần chạy kiểm tra hồi quy một cách thường xuyên, thì việc sử dụng automation testing là không thể thiếu. Với automation testing, các test case được thực thi theo cùng một cách chính xác mỗi khi chúng được chạy và có thể được chạy nhiều lần trong ngày.
- Tiết kiệm chi phí về lâu dài: Với những dự án chạy trong thời gian dài, có mức độ thay đổi nhiều thì việc sử dụng automation testing là cần thiết để tiết kiệm được thời gian kiểm thử hồi quy các trường hợp đã chạy trước đó, từ đó tiết kiệm được chi phí phải trả cho nhân sự khi phải kiểm thử lại hệ thống với quy mô lớn.
- Độ bao phủ bài kiểm tra được nâng cao: Các bộ test script có thể được sử dụng lại để chạy trên nhiều loại trình duyệt, thiết bị và hệ điều hành khác nhau. Thay vì thực hiện chính xác các bước kiểm tra lặp đi lặp lại một cách thủ công, với automation testing, chúng ta chỉ cần nhấn 1 nút là các test case thử đã được thực thi trên các môi trường định trước.
- Kiểm tra liên tục: test script có thể được chạy thường xuyên và ở bất kỳ giai đoạn nào của quá trình phát triển, cho dù đó là giai đoạn phát triển, tích hợp hay bảo trì và chạy tự động mỗi khi có thay đổi mới trong phần mềm.
3. Nhược điểm của automation testing
- Cần nhân sự có trình độ: Để có thể viết được các test script (mã nguồn dùng kiểm thử), người thực thi không chỉ cần kiến thức về kiểm thử, mà còn cần kỹ năng để có thể viết code, và điều này có thể gây khó khăn trong việc đào tạo cũng như tìm nhân sự phù hợp.
- Gỡ lỗi trong test script là vấn đề lớn: Do trong test script hoàn toàn có thể chứa lỗi, nên người thực hiện sẽ cần có kiến thức và kỹ năng để có thể nhận biết cũng như xử lý các lỗi đó. Nếu không có thể gây ra hậu quả nghiêm trọng về tính đúng đắn của phần mềm đang được kiểm thử.
- Chi phí ban đầu lớn: Thời gian để viết test script cho một test case sẽ lâu hơn khá nhiều so với thực hiện thủ công, ngoài ra việc đòi hỏi nhân sự có chuyên môn cũng làm tăng chi phí ban đầu để có tìm kiếm, đào tạo và viết được các bộ test script.
- Bảo trì test script tốn kém: Ngay khi có thay đổi nhỏ xảy ra trong giao diện người dùng, rất có thể test script sẽ cần phải thay đổi theo, từ đó có thể nâng cao chi phí bảo trì test script.
- Bảo trì dữ liệu kiểm thử khó khăn: Nếu số lượng các trường hợp cần kiểm tra là lớn, việc thêm, sửa các dữ liệu kiểm thử đã có sẽ khó khăn bởi phải đảm bảo được các trừơng hợp trong dữ liệu kiểm thử đó không bị mâu thuẫn hay trùng lặp với nhau.
4. Automation testing hoạt động như thế nào
Nhìn chung, việc thực hiện automation testing sẽ trải qua những bước như sau:
1. Lựa chọn công cụ: Hiện nay có rất nhiều công cụ hỗ trợ cho automation testing, việc lựa chọn công cụ phụ thuộc vào nhiều yếu tố như loại kiểm thử cần thực thi là gì? khả năng sử dụng công cụ, ngôn ngữ lập trình của các thành viên hiện tại như thế nào? thời gian làm quen với công cụ mới có phù hợp với timeline dự án không?
2. Xác định các test case cần tự động hoá: Do không phải test case nào cũng phù hợp để thực hiện automation testing, vì vậy chúng ta cần có chiến lược phù hợp với tình hình dự án. Một số yếu tố cần cân nhắc tới như: test case đó có cần thực hiện lại nhiều lần không? Mức độ khả thi để thực hiện automation testing? chi phí để thực thi automation testing so với manual testing cho test case đó...
3. Lên kế hoạch, thiết kế và viết test script: Bước này chứa tất cả các hành động để có thể tạo được bộ test script hoành chỉnh đáp ứng được các yêu cầu đặt ra và đảm bảo timeline của dự án.
4. Thực thi test script: Test script được tạo ở bước trước đó sẽ được thực thi trên các môi trường khác nhau, từ đó, các thông số của phần mềm, cũng như kết quả của từng test case sẽ được tự động ghi nhận lại. Từ đó, chúng ta có được những báo cáo từ tổng quát đến chi tiết về chất lượng phần mềm đang được kiểm thử.
5. Bảo trì: Do trong suốt vòng đời phát triển và duy trì, phần mềm luôn có những thay đổi, vì vậy các test script cũng cần thay đổi theo để đảm bảo các thay đổi của phần mềm không gây ra lỗi, do đó chúng ta cần bảo trì các test script để đảm bảo automation testing sẽ vẫn chạy tốt qua mỗi lần phát hành.
5. Các loại Automation testing
5.1 Phân loại theo loại test
Có 2 loại chính, là kiểm thử chức năng và phi chức năng:
- Kiểm thử chức năng (Functional testing): Kiểm tra các tính năng của phần mềm có đáp ứng được yêu cầu đặt ra hay không. Ví dụ: ứng dụng chia sẻ chuyến đi như Uber ít nhất phải có khả năng kết nối người dùng cuối với tài xế khi tất cả các điều kiện khác được đáp ứng.
- Kiểm thử phi chức năng (Non-functional testing): Kiểm tra các yêu cầu còn lại của phần mềm như hiệu suất, bảo mật, lưu trữ dữ liệu, khả năng mở rộng, khả năng chịu tải, khả năng sẵn sàng ... để có thể đánh sự hiệu quả trong quá trình hoạt động của phần mềm.
5.2 Phân loại theo giai đoạn kiểm thử
- Unit testing: Giai đoạn này kiểm tra các thành phần riêng lẻ, hoặc đơn vị, của phần mềm. Unit testing là giai đoạn kiểm tra đầu tiên, thường được thực hiện thủ công bởi lập trình viên trước khi giao phần mềm cho tester, nhưng để đảm bảo chất lượng, unit testing thường được tự động hóa.
- API testing: API đóng vai trò “trung gian” giữa tất cả các hệ thống mà phần mềm được tích hợp với nhau. Giai đoạn kiểm tra này khá linh hoạt, nó có thể được thực hiện trước hoặc sau giai đoạn phát triển giao diện, và người thực thi có thể là lập trình viên hoặc tester.
- UI testing: Cuối cùng nhưng không kém phần quan trọng, giao diện người dùng (UI) là thứ mà người dùng cuối nhìn thấy và tương tác với nó, do đó, thường được kiểm tra ở giai đoạn cuối của quá trình phát triển. Giai đoạn kiểm thử này được chạy bởi tester sau khi giao diện của ứng dụng đã được hoàn thiện để mô phỏng trải nghiệm người dùng chân thực nhất có thể.
5.3 Phân loại theo cách test
- Smoke Testing: Là một loại kiểm tra chức năng chỉ bao gồm các tính năng quan trọng nhất của phần mềm để đảm bảo rằng nó có thể được kiểm tra thêm mà không bị "cháy", do đó có tên là Kiểm tra khói (Smoke Testing).
- Integration Testing: Kiểm tra tích hợp lấy tất cả các thành phần và chức năng riêng lẻ của phần mềm và kiểm tra chúng cùng nhau như một tổng thể để đảm bảo hoạt động trơn tru giữa tất cả các thành phần đang được ghép nối.
- Regression Testing: Kiểm tra hồi quy chạy kết hợp các bài kiểm tra chức năng và phi chức năng để kiểm tra xem phần mềm có hoạt động như ban đầu sau các thay đổi hay không.
- Security Testing: Kiểm tra bảo mật bao gồm các bài kiểm tra chức năng và phi chức năng để sàng lọc phần mềm cho bất kỳ lỗ hổng nào.
- Performance Testing: Kiểm tra hiệu suất thường là các bài kiểm tra phi chức năng giúp người kiểm tra đánh giá các tiêu chí như thời gian phản hồi và độ ổn định khi phần mềm xử lý lượng tải lớn và liên tục.
- User Acceptance Testing (UAT): Kiểm tra chấp nhận là các bài kiểm tra chức năng xác định mức độ chấp nhận phần mềm của người dùng cuối. Đây là bài kiểm tra cuối cùng mà phần mềm phải vượt qua trước khi có thể được phát hành tới tay người dùng.
6. Automation Frameworks
Automation Frameworks là tập các hướng dẫn hoặc các luật được sử dụng để tạo và thiết kế các test case. Một framework là sự kết hợp của các công cụ, thực hành được thiết kể để làm quá trình kiểm thử diễn ra hiệu quả hơn. Các hướng dẫn bao gồm tiêu chuẩn viết code, các phương pháp xử lý dữ liệu, lưu trữ kết quả kiểm thử, quy trình thực hiện kiểm thử ...
6.1 Linear scripting (Record and playback)
Linear scripting là framework sử dụng công cụ để ghi nhận lại từng bước thực thi của tester với hệ thống khi tester thực hiện manual test, rồi framework sẽ tự động chuyển đổi từng bước ấy thành các đoạn script test tương ứng. Và khi cần, framework sẽ thực thi lại những đoạn script test trước đó để tái hiện lại hành động của tester.
Đây là framework đơn giản nhất, bởi tester có thể không cần biết code vẫn có thể thực hiện được. Trong quá trình kiểm thử, tester cần tạo các lần thực thi, rồi thao tác với phần mềm như người dùng cuối (lúc này công cụ sẽ tự động ghi nhận lại toàn bộ hành vi của tester trên phần mềm), rồi cần cấu hình để so sánh kết quả trên màn hình với kỳ vọng trong test case và lưu lại để sử dụng cho những lần sau.
Ưu điểm của framework này là tính đơn giản, nên nó phù hợp nhất với các nhóm tester nhỏ và người mới bắt đầu với automation testing. Tuy nhiên, nhược điểm là chúng ta lại không thể sử dụng lại những đoạn script trước đó, khó bảo trì, và không thể kiểm soát các phiên bản sau những lần thay đổi trong các bước thực thi.
6.2 Data-Driven Framework
Data-Driven framework là một framework sử dụng các giá trị đầu vào và đầu ra mong muốn được đọc từ nguồn dữ liệu bên ngoài để thực hiện quá trình kiểm thử.
Để sử dụng framework này, chúng ta cần tạo các script test mang tính khái quát cao nhất có thể, để không bị phụ thuộc vào dữ liệu đầu vào hay đầu ra của kịch bản kiểm thử. Sau đó, cần tạo dữ liệu là đầu vào, đầu ra mong muốn của từng kịch bản, các tập dữ liệu này có thể được lưu trữ trong các định dạng khác nhau như .xls
, .xml
, .csv
hay database.
Framework này mang ưu điểm về sự tách bạch giữa script test, và data test, nên quá trình bảo trì script test sẽ dễ dàng hơn. Tuy nhiên quá trình bảo trình data test có thể phức tạp do có thể có quá nhiều trường thông tin cần điền để tiến hành kiểm thử. Quá trình tạo ra các script test cũng có thể phức tạo do cần đảm bảo tính khái quát và tách biệt với data test.
Data Driven framework phù hợp với những trường hợp kiểm thử không quá phức tạp về các bước thực thi nhưng lại phát sinh nhiều trường hợp do tập giá trị đầu vào và đầu ra là lớn.
6.3 Keyword-Driven Framework
Keyword-Driven framework là một kỹ thuật tạo kịch bản sử dụng các tệp dữ liệu chứa các từ khóa liên quan đến phần mềm cần được kiểm tra. Các từ khóa này mô tả tập hợp các hành động cần thực hiện để thực hiện một vài bước cụ thể.
Một bài kiểm tra dựa trên từ khóa bao gồm các từ khóa cấp cao, từ khoá cấp thấp, và các từ khóa chứa tham số, được tạo ra để mô tả hành động của một test case. Nó cũng được gọi là kiểm thử dựa trên bảng (table-driven testing) hoặc kiểm tra dựa trên từ hành động (action word based testing).
Để thực hiện Keyword-Driven framework, đầu tiên cần xác định một tập hợp các từ khóa rồi viết code để liên kết từng từ khoá với một hoặc hàm nào đó trong code đại diện cho hành động đó. Ở đây, mọi hành động như mở hoặc đóng trình duyệt, nhấp chuột, gõ phím, v.v. được mô tả bằng một từ khóa như openbrowser
, click
, TypeText
... Cuối cùng, tester có thể viết các từ khoá thành những câu có nghĩa với người dùng cuối kèm theo tham số nếu cần và xác định đầu ra ngay trong chính câu mô tả đó.
Ưu điểm lớn nhất của framework này là tính tái sử dụng của script test rất cao, và tester hay Product owner có thể viết các test case dưới dạng ngôn ngữ tự nhiên theo một số quy tắc nhất định thay vì viết dưới dạng ngôn ngữ lập trình. Tuy nhiên đòi hỏi tester cần có nhiều kinh nghiệm để có thể phân tách các keyword cũng như các đối tượng, và các hàm một cách phù hợp để có thể tái sử dụng sau này.
6.4 Page Object Model Framework
Page Object Model (POM) là một design pattern được sử dụng phổ biến trong automation testing, ở đó, mỗi thành phần trên giao diện người dùng (nút bấm, ô nhập văn bản, menu ...) được đại diện bởi một đối tượng trong script test. Trong mỗi đối tượng lại có các phương thức ứng với các hành vi của người dùng có thể tương tác với thành phần ấy. Một đối tượng (Object) lại có thể chứa nhiều đối tượng khác để mô phỏng lại cấu trúc của trang (Page).
Khi tạo test case, tester sẽ mô phỏng lại quá trình tương tác của người dùng với phần mềm thông qua việc khởi tạo các đối tượng một cách hợp lý, và gọi tới các phương thức đại diện cho hành vi của người dùng, và cuối cùng là so sánh các hiển thị trên giao diện với kỳ vọng đặt ra
Ưu điểm của framework này là tính tái sử dụng cao do các đối tượng thường lặp lại trên các màn hình khác nhau, dễ bảo trì do có sự tương ứng giữa code và các thành phần cần hiển thị cũng như thao tác của người dùng với từng thành phần. Tuy nhiên, tester sẽ gặp khó khăn khi phải tổ chức một cách khéo léo để có thể tái sử dụng lại được các test script, và số lượng test script sẽ tăng lên đáng kể.
6.5 Modular Framework
Framework này tổ chức các kịch bản kiểm thử thành các phần nhỏ hơn độc lập với nhau gọi là module để có thể tái sử dụng sau này.
Do trong quá trình kiểm thử, rất nhiều trường hợp chúng ta phải thực hiện nhiều lần một số các hành động nào đó ví dụ như việc đăng nhập vào hệ thống trước khi thực hiện kiểm thử, do vậy, khi đưa vào automation testing, chúng ta sẽ mong muốn những hành động này được thực thi chỉ qua một lần gọi hàm thay vì phải copy/paste hay viết lại các đoạn script đó từ đầu.
Modular framework mang đến khả năng tái sử dụng các đoạn script test cao, do đó tiết kiệm được thời gian bảo trì, chỉnh sau về sau. Tuy nhiên tester có thể gặp khó khăn trong việc xác định chính xác những tính năng, hành động nào có thể lặp đi lặp lại để đưa vào thành các module, và việc đưa đoạn script nào thành module có thể diễn ra ở giai đoạn sau, dẫn đến việc cần tái tổ chức lại mã nguồn, vì vậy các đoạn script test lúc này có thể chứa lỗi sau nhiều lần tái tổ chức.
7. Học gì để trở thành Automation tester?
7.1 Căn bản về kiểm thử phần mềm
Dù bạn là tester thực hiện automation test hay manual test thì kiến thức về kiểm thử phần mềm vẫn là nền móng căn bản chung để có thể xử lý được công việc. Vì suy cho cùng, muốn thực hiện được kiểm thử thì đều xuất phát từ việc tester cần nghĩ ra được các test case sao cho bao phủ nhiều nhất các trường hợp có thể xảy ra, còn việc dùng sử dụng automation testing hay manual testing thì chỉ là công cụ để có thể thực hiện hoá các test case đó mà thôi.
Một số kiến thức căn bản về kiểm thử phần mềm có thể kể đến như:
- Kiểm thử là gì, tại sao lại cần kiểm thử trong phát triển phần mềm?
- Các nguyên lý trong kiểm thử phần mềm
- Kến thức về vòng đời phát triển phần mềm, kiểm thử trong vòng đời phát triển phần mềm
- Các loại kiểm thử, giai đoạn kiểm thử và các mức độ kiểm thử
- Các kỹ thuật kiểm thử và cách tổ chức, tạo, bảo trì các test case
- Các công cụ theo dõi vấn đề phát sinh và các công cụ quản lý trong quá trình kiểm thử
7.2 Ngôn ngữ lập trình
Có 2 cách để có thể ra lệnh cho máy tính thực thi giúp tester những test case thay vì họ phải tự làm bằng tay:
- Sử dụng các công cụ ghi lại từng thao tác người dùng rồi cấu hình để có thể kiểm tra kết quả trên màn hình với kỳ vọng. Với cách này, tester không cần sử dụng ngôn ngữ lập trình, mà chỉ cần nắm rõ các chức năng mà công cụ cung cấp để có thể tạo được các trường hợp cho automation testing. Một số công cụ nằm trong loại này có thể kể đến như Katalon, Selinum IDE, UI.Vision RPA ...
- Sử dụng ngôn ngữ lập trình để tạo ra các kịch bản cho automation testing. Với cách này, tester cần sử dụng được ít nhất một ngôn ngữ lập trình để có thể bắt đầu. Khi sử dụng cách này, tester có thể kiểm thử những trường hợp từ đơn giản đến phức tạp mà không bị phụ thuộc quá nhiều vào công cụ như cách 1.
Một cách tiếp cận thường thấy của các tester khi muốn bắt đầu với automation testing là họ sẽ có xu hướng phải thật thành thạo manual testing trước rồi mới bắt đầu học các kiến thức của automation testing. Trên thực tế, việc học một ngôn ngữ lập trình hay làm quen với các công cụ automation testing hoàn toàn có thể song song với quá trình học và làm manual testing.
Các bạn có thể lựa chọn một trong số các ngôn ngữ phổ biến được sử dụng trong automation testing như Python, Java, Javascript, Ruby, C# để bắt đầu hành trình chuyển sang automation tester.
7.3 Automation testing trên web hoặc mobile
Sau khi sử dụng được một trong số các ngôn ngữ lập trình, bạn cần lựa chọn cho mình một công cụ hay framework để có thể viết những dòng mã lệnh đầu tiên cho automation testing của mình. Có thể kể đến các công cụ và ngôn ngữ sử dụng đi kèm khi chúng ta kiểm thử web, mobile như:
- Bộ công cụ Selenium dùng để kiểm thử các ứng dụng web và hỗ trợ đang dạng ngôn ngữ như Java, Python, C # .Net, Ruby, JavaScript và Kotlin.
- Bộ Công cụ Cypress dùng để kiểm tử ứng dụng web và chỉ sử dụng được ngôn ngữ Javascript.
- Ngoài ra, còn một số cái tên khác dùng trong automation testing cho web như Playwright, Puppeteer, Webdriverio.
- Bộ công cụ Appium dùng để kiểm thử các ứng dụng mobile.Appium hỗ trợ đa nền tảng: Android, iOS, FirefoxOS và hỗ trợ đa ngôn ngữ: Java, Objective-C, JavaScript with Node.js, PHP, Python, C#, Clojure, Perl
- Bộ công cụ Katalon dùng để kiểm thử mobile, sử dụng ngôn ngữ Java và Groovy
- Ngoài ra, còn một số cái tên khác dùng trong automation testing cho mobile như Espresso, XCTest, Robotium.
Như vậy có rất nhiều công cụ hỗ trợ chúng ta trong việc thực hiện automation testing. Việc lựa chọn công cụ nào thực sự không phải là việc đơn giản, cần xem xét đến nhiều yếu tố như thị trường đang sử dụng nhiều công cụ nào? Thời gian tiếp cận có nhanh không? Cộng đồng hỗ trợ có mạnh không? Mức độ bao phủ của công cụ ....
7.4 Kiểm thử API
Hiện nay, hầu hết các ứng dụng trên web, mobile hay desktop đều có kết nối tới máy chủ để có thể đồng bộ, lưu trữ, xử lý dữ liệu. Các ứng dụng này hầu hết sử dụng API (Application Programming Interface) để có thể giao tiếp với máy chủ. Khi kiểm thử API, tester đang kiểm tra các tính năng mà máy chủ cung cấp cho các ứng dụng của mình, và ở đây, tester có thêm một góc nhìn khác về phần mềm bên cạnh góc nhìn của người dùng cuối như kiểm thử chức năng trên giao diện.
Để có thể kiểm thử được API, tester cần có kiến thức về HTTP và một số giao thức API đang được sử dụng phổ biến như REST, gRPC, GraphQL, SOAP ... Việc kiểm thử API có thể diễn ra trên 1 API đơn lẻ hoặc theo một luồng thực thi tuần tự các API theo một thứ tự nào đó để mô phỏng lại hành vi của người dùng cuối.
Lợi ích lớn nhất mà kiểm thử API đem lại chính là cung cấp cho tester một cơ chế để có thể kiểm thử sớm tính năng của hệ thống mà không cần đợi đến khi hoàn thiện giao diện người dùng, từ đó làm giảm thời gian phát hành sản phẩm. Ngoài ra, automation testing cho API sẽ dễ dàng, nhanh chóng và dễ bảo trì hơn so với automation testing trên giao diện người dùng.
7.5 Kiểm thử hiệu năng và kiểm thử bảo mật
Khi tester kiểm thử API hay giao diện người dùng thì đó là kiểm thử các tính năng của phần mềm, ngoài ra, chúng ta còn cần phải kiểm thử các khía cạnh phi chức năng để đảm bảo trải nhiệm và bảo mật cho người dùng. Đó là kiểm thử hiệu năng và kiểm thử bảo mật.
Để có thể thực hiện được kiểm thử hiệu năng, tester cần giả lập số lượng người dùng lớn và tương tác với hệ thống, đồng thời quá trình kiểm thử cần ghi nhận cả các thông số của hệ thống như RAM, CPU, thông lượng, thời gian phản hồi, tỷ lệ lỗi ... Hiện nay có nhiều công cụ giúp tester thực hiện kiểm thử hiệu năng dễ dàng như: Apache JMeter, LoadNinja, Webload ...
Để có thể thực hiện được kiểm thử hiệu năng, tester cần hiểu về ý nghĩa của các thông số trong hệ thống, ngoài ra tuỳ thuộc vào công cụ đang sử dụng thì tester cũng cần học để có thể sử dụng các tính năng mà công cụ đó đem lại.
Kiểm thử bảo mật đòi hỏi nhiều kỹ năng, hiểu về các thuật ngữ, và cần hiểu sâu về hệ thống hơn so với kiểm thử hiệu năng, và cũng cần sử dụng các công cụ để trợ giúp như Astra Security, Wireshark, OpenVAS...
8. Tổng kết
Automation testing được sử dụng rộng rãi trong quá trình phát triển phần mềm hiện nay (nhất là trong các nhóm thực hành Agile) bởi những lợi ích mà nó đem lại như giúp quá trình kiểm thử hồi quy diễn ra nhanh chóng, tái sử dụng được công việc đã làm trước đó, tích hợp tự động và có thể chạy liên tục và bất cứ khi nào có thay đổi trong mã nguồn.
Tuy nhiên để có thể áp dụng một cách hiệu quả thì không phải là dễ dàng bởi nó đòi hỏi tester cần có nhiều kỹ năng, kiến thức không chỉ về nền tảng của kiểm thử phần mềm, mà còn về kỹ năng lập trình, hiểu biết về hệ thống, và cả các kiến thức về bảo mật.
Automation testing có thể được áp dụng trong cả kiểm thử chức năng và phi chức năng, hay trong tất cả các giai đoạn kiểm thử, từ unit testing cho tới API testing và cả UI testing, hay trên các môi trường khác nhau như web, mobile, desktop. Ở mỗi loại automation testing, chúng ta có nhiều công cụ khác nhau để hỗ trợ quá trình kiểm thử diễn ra được dễ dàng và nhanh chóng.
9. Tài liệu tham khảo
https://www.softwaretestinghelp.com/automation-testing-tutorial-2/
Bài viết liên quan
Cursor AI là gì? Hướng dẫn Sử dụng Cursor AI cơ bản
Sep 16, 2024 • 13 min read
IDE là gì? Những công cụ IDE phổ biến nhất hiện nay
Aug 22, 2024 • 10 min read
Cookies là gì? Cookies được sử dụng như thế nào?
Aug 12, 2024 • 9 min read
SDLC là gì? Các mô hình Software Development Life Cycle phổ biến
Jul 13, 2024 • 27 min read
System Design là gì? Tại sao Thiết kế hệ thống lại quan trọng với Developer?
Jun 17, 2024 • 10 min read
Copilot là gì ? Hướng dẫn sử dụng Trợ lý AI của Microsoft
May 31, 2024 • 7 min read