Hỏi đáp

Rest Assured Là Gì ? (Từ Điển Anh Rest Assured Là Gì – viettingame

Rest Assured là một trong những thư viện được sử dụng nhiều nhất trong API Automation testing. Trong tutorial này mình sẽ hướng dẫn chúng ta về những luận điểm như là Rest API, API Testing, API Automation Testing,…

Đang xem: Rest assured là gì

API là gì?

API là viết tắt của (Application Programming Interface) – Giao diện lập trình ứng dụng, nó là một tập hợp những functions mà thậm chí được truy vấn bởi những ứng dụng khác. Do đó, nó như là một giao diện giữa những khối hệ thống ứng dụng không giống nhau và thiết lập sự tương tác và trao đổi dữ liệu của chúng.

*

API Testing là gì?

Trong nền công nghiệp phát triển ứng dụng tiến bộ, rất nhiều những ứng dụng / khối hệ thống được thiết kế dựa trên quy mô 3 lớp (3-tier architecture model).

Ba lớp này là:

Presentation Tier – Tầng tương tác trực tiếp với người sử dụng, sử dụng để hiển thị những thành phần giao diện để tương tác với người sử dụng như tiếp nhận thông tin, thông tin lỗiLogic Tier – Tầng logic, tầng này cũng thậm chí được gọi là business tier, trọng trách của tầng này là phụ trách và xử lí những business của khối hệ thống. Tầng này cũng làm trọng trách dịch rời, xử lí thông tin giữa 2 tầng Presentation và Data TierData Tier – nơi lưu trữ và trích xuất dữ liệu từ những hệ quản trị CSDL hay những file trong khối hệ thống. Cho phép tầng Business logic tiến hành những truy vấn dữ liệu.

3 layers kể trên sẽ tiếp xúc với nhau trải qua những dịch vụ (services) mà mỗi layer hỗ trợ để tạo thành ứng dụng, lớp này cũng ko cần phải biết bên trong lớp kia làm gì mà chỉ cần phải biết lớp kia hỗ trợ dịch vụ gì cho mình và sử dụng nó mà thôi.

Lớp Logic bao hàm toàn bộ những bussiness logic của khối hệ thống, nó phức tạp hơn toàn bộ những lớp sót lại, do đó việc tiến hành kiểm thử trên lớp này là rất quan trọng. Việc kiểm thử trên lớp bussiness logic này được gọi là API Testing.

Xem thêm: Setting Up A Captive Portal With Pfsense Firewall, How Secure Is The Captive Portal For Guest Use

So với UI Testing, chúng ta test dựa trên những hành vi của người sử dụng như nhập dữ liệu qua bàn phím, tiến hành nhấp chuột một button nào khác trên screen,… thì so với API Testing, chúng ta tiến hành gửi những request và kiểm tra xem output từ API trả về cho chúng ta xem khối hệ thống trả về sở hữu đúng như chúng ta mong muốn hay là không. Dữ liệu mà API trả về cho chúng ta thậm chí là JSON với RESTful API hoặc là XML với SOAP.

Để hiểu thêm về REST và SOAP thì chúng ta thậm chí tìm hiểu thêm bài viếtChọn web service tốt nhất

REST Assured là gì

Rest-assured (RestA) là một trong những thư viện Java DSL được xây dựng trên nền HTTP Builder (thư viện tạo HTTP request), cho phép tiến hành gửi request và kiểm tra response. Nói đơn giản và giản dị là một thư viện được xây dựng sẵn để việc tiến hành kiểm thử API trở nên đơn giản hơn. Thực tiễn, sở hữu rất nhiều thư viện mà chúng ta thậm chí sử dụng, nhưng kinh nghiệm cho thấy, Rest Assured dễ sử dụng hơn hết, nhiều tác dụng hơn, và nhất là nó sở hữu một xã hội hỗ trợ rất rộng lớn.

REST API testing với REST Assured

Lý thuyết nhiều rồi, chúng ta sẽ tiến hành tiến hành api testing qua ví dụ thực tiễn sau 😀

Dự án công trình A được phụ trách xây dựng một khối hệ thống tìm kiếm video cho người tiêu dùng JP, ngoài việc xây dựng 1 website tìm kiếm thì người tiêu dùng còn mong muốn public API của khối hệ thống ra ngoài. Vậy là tester trong dự án công trình lại phải phụ trách vai trò test những api endpoint mà khối hệ thống sẽ public.

Đề bài đưa ra cho tester như sau:

Test case 1: Tìm kiếm video với từ khoá cho trước, giới hạn số video trả về là 4 videos.Từ khoá: API TestingParameter:{tukhoa}: Từ khoá của video mong muốn tìm kiếm{soluongvideo}: Số lượng video mong muốn trả về, trong test case mong muốn là 4URL Endpoint: http://api.5min.com/tìm kiếm/{tukhoa}/videos.json?num_of_videos={soluongvideo}Thành quả mong muốn: Trả về thành quả dưới dạng JSON, trong đó sở hữu link kéo theo những videos, tiêu đề và mô tả của những video đóĐK để test case pass:Trong thành quả trả về phải sở hữu HTTP Status CodeKết quả trả về phải chứa từ khoá tìm kiếmChỉ sở hữu tối đa 4 videos được trả vềCác video trả về ko trùng lặp nhauTest case 2: Tìm kiếm video với id của video, nhưng lần này sẽ trả về thông tin cụ thể của video đó và những video liên quan tới video đó (kiểu như suggestion video ở youtube vậy), cũng giới hạn số lượng những video liên quan trả về là 4Parameter:{ video_id }: Từ khoá của video mong muốn tìm kiếm{soluongvideo}: Số lượng video mong muốn trả về, trong test case mong muốn là 4URL Endpoint: http://api.5min.com/video/list/info.json?video_ids={video_id}&num_related_return={soluongvideo}Thành quả mong muốn: Trả về thành quả dưới dạng JSON, trong đó sở hữu thông tin cụ thể về video đó và những video liên quanĐK để test case pass:Trong thành quả trả về phải sở hữu HTTP Status CodeKết quả trả về phải liên quan tới video được tìm kiếmChỉ sở hữu tối đa 4 videos được trả vềCác video liên quan được trả về ko trùng lặp nhau

Vậy, giải pháp của anh ý tester là gì? Nào hãy cùng mình thanh lịch phần tiếp theo nhé

REST API testing với REST Assured – (cont.)

Để xử lý bài toán tìm thấy ở trên, tester phải xây dựng 1 framework và tích hợp Rest Assured làm thư viện để testing API. Framework tester xây dựng cũng phải thỏa mãn nhu cầu tiêu chuẩn Re-usability để thậm chí test cho những api endpoint khác mà ko phải mất công viết lại code.

Xem thêm: trò chơi Trực tuyến Nhẹ Cho Android Cấu Hình Yếu ớt Hay Nhất 2021, Top 33 trò chơi Android Hay Đáng Chơi Nhất 2020

Lúc này chúng ta chính thức !!

1. Xây dựng Project structure.

Trước tiên, chúng ta sẽ tạo nên 1 Maven project, và setup những thư mục như dưới:

Utils thư mục sẽ chứa 2 class là HelperMethods và RestUtilHelperMethods: Class này sẽ gồm những helpers thậm chí reusalbeRestUtil: class này sẽ bao hàm những methods liên quan tới thư viện Rest AssuredTrong thư mục ApiTests sẽ sở hữu được 2 class là Example1Test và Example2Test, phía trên là 2 classes chứa những test cases và những assertionsTrong thư mục TestSuite sẽ sở hữu được class AllApiTest, phía trên là class Test Runner của con người, class này sẽ phụ trách việc run toàn bộ những test cases

*

2. Setup những dependencies

Chúng ta sẽ add chiếc dependencies sau vào pom.xml.Junit Library: Dòng này là test frameworkHamcrest library: thư viện giành riêng cho những method assertionJayway Rest Assured: Phía trên là Rest assured, thư viện mà chúng ta nhắc tới nãy giờ trong nội dung bài viết :DCấu trúc file pom.xml của con người sẽ như dưới:

4.0.0 com.5min.apitest 5min-apitest 1.0-SNAPSHOT org.hamcrest hamcrest-all 1.3 org.hamcrest hamcrest-junit 2.0.0.0 junit junit 4.12 com.jayway.restassured json-schema-validator 2.8.0 com.jayway.restassured rest-assured 2.8.0 AllApiTests true org.apache.maven.plugins maven-surefire-plugin 2.19.1 **/AllApiTest.class 3. Sau lúc add xong những dependencies thì chúng ta sẽ bắt tay vào code

RestUtil.java

Phía trên là class giúp chúng ta viết những common methods sẽ giúp chúng ta tiện sử dụng sau này

package Utils;import com.jayway.restassured.RestAssured;import com.jayway.restassured.http.ContentType;import com.jayway.restassured.path.json.JsonPath;import com.jayway.restassured.response.Response;import static com.jayway.restassured.RestAssured.*;public class RestUtil { //Global Setup Variables public static String path; //Rest request path /* ***Sets Base URI*** Before starting the test, we should set the RestAssured.baseURI */ public static void setBaseURI (String baseURI){ RestAssured.baseURI = baseURI; } /* ***Sets base path*** Before starting the test, we should set the RestAssured.basePath */ public static void setBasePath(String basePathTerm){ RestAssured.basePath = basePathTerm; } /* ***Reset Base URI (after test)*** After the test, we should reset the RestAssured.baseURI */ public static void resetBaseURI (){ RestAssured.baseURI = null; } /* ***Reset base path (after test)*** After the test, we should reset the RestAssured.basePath */ public static void resetBasePath(){ RestAssured.basePath = null; } /* ***Sets ContentType*** We should set nội dung type as JSON or XML before starting the test */ public static void setContentType (ContentType Type){ given().contentType(Type); } /* ***tìm kiếm query path of first example*** It is equal to “barack obama/videos.json?num_of_videos=4” */ public static void createSearchQueryPath(String searchTerm, String jsonPathTerm, String param, String paramValue) { path = searchTerm + “/” + jsonPathTerm + “?” + param + “=” + paramValue; } /* ***Returns response*** We send “path” as a parameter to the Rest Assured”a “get” method and “get” method returns response of API */ public static Response getResponse() { //System.out.print(“path: ” + path +”
“); return get(path); } /* ***Returns JsonPath object*** * First convert the API”s response to String type with “asString()” method. * Then, send this String formatted json response to the JsonPath class and return the JsonPath */ public static JsonPath getJsonPath (Response res) { String json = res.asString(); //System.out.print(“returned json: ” + json +”
“); return new JsonPath(json); }}HelperMethods.javaPhía trên cũng là một class chứa những common functions để chúng ta thậm chí sử dụng lại trong 2 classes Example1Test và Example2Test

package Utils;import com.jayway.restassured.path.json.JsonPath;import com.jayway.restassured.response.Response;import java.util.*;import static org.junit.Assert.assertEquals;public class HelperMethods { /* Verify the http response status returned. Kiểm tra Status Code is 200? We can use Rest Assured library”s response”s getStatusCode method */ public static void checkStatusIs200 (Response res) { assertEquals(“Status Kiểm tra Failed!”, 200, res.getStatusCode()); } /* Get Video Ids (For example 1) We can use get method of Rest Assured library”s JsonPath Class”s get method Part of a response is shown below: “items”: “jp.get(“items.id”);” this will return all id”s under “items” tag. */ public static ArrayList getVideoIdList (JsonPath jp) { ArrayList videoIdList = jp.get(“items.id”); return videoIdList; } /* Get Related Video Ids (For example 2) Structure of response is shown below: items: “related”: > I have to convert above result in this format: In order to split first element of “relatedVideosList” and assign it to a new ArrayList (as splittedRelatedVideoList) I did below operation. */ ArrayList splittedRelatedVideoList = (ArrayList) relatedVideoList.get(0); return splittedRelatedVideoList; } //Merge videoIdList and relatedVideoIdList as mergedVideoList public static ArrayList mergeLists (ArrayList videoList, ArrayList relatedVideoList){ ArrayList mergedVideoList = new ArrayList(videoList); mergedVideoList.addAll(relatedVideoList); return mergedVideoList; } //Find Duplicate Videos public static boolean findDuplicateVideos (List videoIdList) { for (int i=0; i 1){ System.out.println(“This video id is duplicated: ” + videoIdList.get(i)); return false; } } return true; }}​Example1Test.java – Example2Test.javaPhía trên là 2 class quan trọng nhất, classes này chứa những assertions để kiểm thử những thành quả trả về từ api

Example1Test.java

package ApiTests; import Utils.*;import com.jayway.restassured.http.ContentType;import com.jayway.restassured.path.json.JsonPath;import com.jayway.restassured.response.Response;import org.junit.*;import org.junit.runners.MethodSorters;import static org.junit.Assert.assertTrue;

Về Viettingame.com

Viettingame.com - Chuyên trang web tổng hợp những thông tin hữu ích trên internet như thông tin về game, tin tổng hợp
Xem tất cả các bài viết của Viettingame.com →

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *