{"id":12183,"date":"2022-10-05T21:10:02","date_gmt":"2022-10-05T14:10:02","guid":{"rendered":"https:\/\/thichblog.net\/?p=12183"},"modified":"2022-10-05T21:10:02","modified_gmt":"2022-10-05T14:10:02","slug":"6-thach-thuc-pho-bien-trong-api-testing","status":"publish","type":"post","link":"https:\/\/vibeshelf.me\/?p=12183","title":{"rendered":"6 Th\u00e1ch Th\u1ee9c Ph\u1ed5 Bi\u1ebfn Trong API Testing"},"content":{"rendered":"\n<p><strong>S\u00e1u trong s\u1ed1 nh\u1eefng th\u00e1ch th\u1ee9c h\u00e0ng \u0111\u1ea7u trong th\u1eed nghi\u1ec7m API bao g\u1ed3m: <\/strong><\/p>\n\n\n\n<ol class=\"has-text-color wp-block-list\" style=\"color:#077f29\"><li>Building irrelevant tests: X\u00e2y d\u1ef1ng ki\u1ec3m th\u1eed kh\u00f4ng li\u00ean quan.  <\/li><li>Leaving out response time assertions: B\u1ecf qua vi\u1ec7c x\u00e1c nh\u1eadn th\u1eddi gian ph\u1ea3n h\u1ed3i. <\/li><li>Not including API dependencies: Kh\u00f4ng bao g\u1ed3m c\u00e1c ph\u1ee5 thu\u1ed9c API. <\/li><li>Testing APIs in a vacuum: Ki\u1ec3m tra API trong m\u00f4i tr\u01b0\u1eddng ch\u00e2n kh\u00f4ng. <\/li><li>Not validating data: Kh\u00f4ng x\u00e1c th\u1ef1c d\u1eef li\u1ec7u. <\/li><li>Managing API tests manually: Qu\u1ea3n l\u00fd ki\u1ec3m th\u1eed API theo c\u00e1ch th\u1ee7 c\u00f4ng.<\/li><\/ol>\n\n\n\n<p class=\"has-text-color\" style=\"color:#077f29\"><strong>1 &#8211; Building irrelevant tests: X\u00e2y d\u1ef1ng ki\u1ec3m th\u1eed kh\u00f4ng li\u00ean quan<\/strong><\/p>\n\n\n\n<p>M\u1ed9t trong nh\u1eefng th\u00e1ch th\u1ee9c h\u00e0ng \u0111\u1ea7u trong th\u1eed nghi\u1ec7m API l\u00e0 t\u1ea1o ra c\u00e1c th\u1eed nghi\u1ec7m kh\u00f4ng b\u1eaft ch\u01b0\u1edbc tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng. Th\u1eadt d\u1ec5 d\u00e0ng \u0111\u1ec3 thi\u1ebft l\u1eadp c\u00e1c b\u00e0i ki\u1ec3m tra x\u00e1c minh c\u00e1c d\u1ecbch v\u1ee5 v\u00e0 \u0111i\u1ec3m cu\u1ed1i \u0111\u1ed9c l\u1eadp, sau \u0111\u00f3 ho\u00e0n th\u00e0nh khi t\u1ea5t c\u1ea3 ch\u00fang \u0111\u1ec1u \u0111\u00fang. V\u00ed d\u1ee5: Ki\u1ec3m tra API h\u00e0ng t\u1ed3n kho, ki\u1ec3m tra; ki\u1ec3m tra API Gi\u1ecf h\u00e0ng, ki\u1ec3m tra; v\u00e0 nh\u01b0 th\u1ebf.<\/p>\n\n\n\n<p>Tuy nhi\u00ean, ng\u01b0\u1eddi d\u00f9ng cu\u1ed1i c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng c\u00e1c ph\u01b0\u01a1ng ph\u00e1p n\u00e0y k\u1ebft h\u1ee3p v\u1edbi nhau, kh\u00f4ng \u0111\u1ed9c l\u1eadp. Vi\u1ec7c x\u00e2y d\u1ef1ng c\u00e1c th\u1eed nghi\u1ec7m m\u00e0 kh\u00f4ng xem x\u00e9t c\u00e1c API s\u1ebd \u0111\u01b0\u1ee3c t\u00edch h\u1ee3p nh\u01b0 th\u1ebf n\u00e0o c\u00f3 th\u1ec3 nhanh h\u01a1n trong th\u1eddi gian ng\u1eafn. Tuy nhi\u00ean, khi l\u00e0m nh\u01b0 v\u1eady, b\u1ea1n s\u1ebd kh\u00f4ng ph\u1ea3i ki\u1ec3m tra c\u00e1c m\u1ed1i lo ng\u1ea1i, \u0111i\u1ec1u n\u00e0y c\u00f3 th\u1ec3 ng\u0103n b\u1ea1n ph\u00e1t hi\u1ec7n v\u00e0 g\u1ee1 l\u1ed7i c\u00e1c v\u1ea5n \u0111\u1ec1 API nghi\u00eam tr\u1ecdng ti\u1ec1m \u1ea9n.<\/p>\n\n\n\n<p>Trong ki\u1ec3m th\u1eed ph\u1ea7n m\u1ec1m truy\u1ec1n th\u1ed1ng, c\u00e1c ki\u1ec3m th\u1eed \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng tr\u00ean nhi\u1ec1u \u0111\u01a1n v\u1ecb ho\u1eb7c ch\u1ee9c n\u0103ng \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 ki\u1ec3m th\u1eed t\u00edch h\u1ee3p (integration test). Vi\u1ec7c x\u00e2y d\u1ef1ng c\u00e1c b\u00e0i ki\u1ec3m tra t\u00edch h\u1ee3p cho c\u00e1c API c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng h\u01a1n b\u1ea1n ngh\u0129. H\u00e3y xem m\u1ed9t k\u1ecbch b\u1ea3n API b\u00e1n l\u1ebb \u0111i\u1ec3n h\u00ecnh nh\u01b0 sau:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>GET \/items (fetch a list of items).<\/li><li>POST \/items (create a new item).<\/li><li>GET \/items\/{itemId} (verify existence of newly created item).<\/li><li>POST \/cart (add this new item to the shopping cart).<\/li><li>DELETE \/items (remove the item).<\/li><li>GET \/items (verify that the item has been removed).<\/li><\/ul>\n\n\n\n<p>M\u1ed7i API \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong tr\u01b0\u1eddng h\u1ee3p tr\u00ean c\u00f3 th\u1ec3 ho\u1ea1t \u0111\u1ed9ng khi \u0111\u01b0\u1ee3c ki\u1ec3m tra \u0111\u1ed9c l\u1eadp, nh\u01b0ng n\u1ebfu kh\u00f4ng ki\u1ec3m tra to\u00e0n b\u1ed9 quy tr\u00ecnh, b\u1ea1n kh\u00f4ng th\u1ec3 ch\u1eafc ch\u1eafn r\u1eb1ng ch\u00fang \u0111ang ho\u1ea1t \u0111\u1ed9ng c\u00f9ng nhau, nh\u01b0 mong \u0111\u1ee3i.<\/p>\n\n\n\n<p class=\"has-text-color\" style=\"color:#077f29\"><strong>2- Leaving Out Response Time Assertions: <\/strong><\/p>\n\n\n\n<p>Ki\u1ec3m th\u1eed API c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c x\u00e2y d\u1ef1ng \u0111\u1ec3 ki\u1ec3m tra b\u1ea5t k\u1ef3 s\u1ed1 l\u01b0\u1ee3ng bi\u1ebfn n\u00e0o, nh\u01b0 m\u00e3 tr\u1ea1ng th\u00e1i (status code) v\u00e0 n\u1ed9i dung ph\u1ea3n h\u1ed3i (response content). Nh\u1eefng ph\u1ea7n \u0111\u00f3 c\u00f3 th\u1ec3 r\u1ea5t quan tr\u1ecdng \u0111\u1ec3 ki\u1ec3m tra t\u00ednh \u0111\u00fang \u0111\u1eafn c\u1ee7a ph\u01b0\u01a1ng ph\u00e1p, nh\u01b0ng \u0111i\u1ec1u g\u00ec s\u1ebd x\u1ea3y ra n\u1ebfu m\u1ed9t y\u00eau c\u1ea7u API m\u1ea5t 10 gi\u00e2y \u0111\u1ec3 ph\u1ea3n h\u1ed3i? Li\u1ec7u tr\u01b0\u1eddng h\u1ee3p ki\u1ec3m tra n\u00e0y v\u1eabn c\u00f3 th\u1ec3 s\u1ebd v\u01b0\u1ee3t qua? M\u1eb7c d\u00f9 th\u01b0\u1eddng b\u1ecb b\u1ecf qua, nh\u01b0ng x\u00e1c nh\u1eadn th\u1eddi gian ph\u1ea3n h\u1ed3i l\u00e0 nh\u1eefng b\u1ed5 sung nhanh ch\u00f3ng nh\u01b0ng c\u1ea7n thi\u1ebft cho b\u1ea5t k\u1ef3 th\u1eed nghi\u1ec7m API n\u00e0o \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o t\u1ea5t c\u1ea3 c\u00e1c h\u1ed9p c\u1ee7a b\u1ea1n \u0111\u01b0\u1ee3c ch\u1ecdn khi n\u00f3i \u0111\u1ebfn tr\u1ea3i nghi\u1ec7m ng\u01b0\u1eddi d\u00f9ng cu\u1ed1i ho\u00e0n ch\u1ec9nh.<\/p>\n\n\n\n<p>Thi\u1ebft l\u1eadp x\u00e1c nh\u1eadn th\u1eddi gian ph\u1ea3n h\u1ed3i h\u1ee3p l\u00fd v\u00e0 cho bi\u1ebft b\u1ea1n ho\u1eb7c nh\u00e0 ph\u00e1t tri\u1ec3n c\u1ee7a b\u1ea1n ngh\u0129 r\u1eb1ng th\u1eddi gian ph\u1ea3n h\u1ed3i s\u1ebd m\u1ea5t bao l\u00e2u. N\u1ebfu b\u1ea1n b\u1eaft \u0111\u1ea7u \u1edf ng\u01b0\u1ee1ng cao, b\u1ea1n c\u00f3 th\u1ec3 d\u1ec5 d\u00e0ng thu nh\u1ecf quy m\u00f4 v\u00e0 xem nh\u1eefng g\u00ec ph\u00f9 h\u1ee3p v\u1edbi y\u00eau c\u1ea7u \u0111\u00f3. X\u00e1c nh\u1eadn th\u1eddi gian ph\u1ea3n h\u1ed3i ng\u01b0\u1ee1ng cao t\u1ed1t h\u01a1n r\u1ea5t nhi\u1ec1u, \u0111\u1eb7c bi\u1ec7t l\u00e0 khi ki\u1ec3m tra c\u00e1c \u0111i\u1ec3m cu\u1ed1i s\u1ea3n xu\u1ea5t. M\u1ed9t \u1ee9ng d\u1ee5ng m\u1ea5t qu\u00e1 nhi\u1ec1u th\u1eddi gian \u0111\u1ec3 t\u1ea3i c\u00f3 th\u1ec3 khi\u1ebfn ng\u01b0\u1eddi ti\u00eau d\u00f9ng c\u1ee7a b\u1ea1n chuy\u1ec3n sang \u1ee9ng d\u1ee5ng ti\u1ebfp theo.<\/p>\n\n\n\n<p class=\"has-text-color\" style=\"color:#077f29\"><strong>3- Not Including API Dependencies<\/strong><\/p>\n\n\n\n<p>M\u1ed9t th\u00e1ch th\u1ee9c ki\u1ec3m tra API quan tr\u1ecdng kh\u00e1c \u0111\u00f3 l\u00e0 kh\u00f4ng bao g\u1ed3m c\u00e1c ph\u1ee5 thu\u1ed9c API nh\u01b0 m\u1ed9t ph\u1ea7n c\u1ee7a chi\u1ebfn l\u01b0\u1ee3c ki\u1ec3m tra API. Ki\u1ec3m th\u1eed t\u00edch h\u1ee3p ph\u1ea7n m\u1ec1m truy\u1ec1n th\u1ed1ng li\u00ean quan \u0111\u1ebfn vi\u1ec7c ki\u1ec3m tra c\u00e1c \u0111\u01a1n v\u1ecb ri\u00eang bi\u1ec7t v\u1edbi nhau, \u0111\u1ea3m b\u1ea3o r\u1eb1ng ch\u00fang ho\u1ea1t \u0111\u1ed9ng nh\u1ea5t qu\u00e1n v\u00e0 \u0111\u00e1ng tin c\u1eady c\u00f9ng nhau. V\u1edbi c\u00e1c \u1ee9ng d\u1ee5ng hi\u1ec7n \u0111\u1ea1i ph\u1ee5 thu\u1ed9c nhi\u1ec1u v\u00e0o c\u00e1c d\u1ecbch v\u1ee5 web, vi\u1ec7c d\u1ef1a v\u00e0o c\u00e1c d\u1ecbch v\u1ee5 web l\u00e0 \u0111i\u1ec1u ph\u1ed5 bi\u1ebfn. Do \u0111\u00f3, vi\u1ec7c ch\u1ec9 th\u1eed nghi\u1ec7m c\u00e1c API c\u1ee7a ri\u00eang b\u1ea1n kh\u00f4ng cung c\u1ea5p cho b\u1ea1n b\u1ee9c tranh to\u00e0n c\u1ea3nh v\u1ec1 c\u00e1ch \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n s\u1ebd ho\u1ea1t \u0111\u1ed9ng trong th\u1ebf gi\u1edbi th\u1ef1c.<\/p>\n\n\n\n<p>API c\u1ee7a b\u1ea1n l\u00e0 m\u1ed9t s\u1ea3n ph\u1ea9m ph\u1ee5 thu\u1ed9c v\u00e0o c\u00e1c d\u1ecbch v\u1ee5 c\u1ee7a \u0111\u1ed1i t\u00e1c v\u00e0 n\u1ebfu b\u1ea5t k\u1ef3 d\u1ecbch v\u1ee5 n\u00e0o trong s\u1ed1 \u0111\u00f3 kh\u00f4ng th\u00e0nh c\u00f4ng, th\u00ec API c\u1ee7a b\u1ea1n c\u0169ng c\u00f3 th\u1ec3 khi\u1ebfn kh\u00e1ch h\u00e0ng c\u1ee7a b\u1ea1n th\u1ea5t b\u1ea1i. M\u1ed9t nguy\u00ean t\u1eafc nh\u1ecf l\u00e0 n\u1ebfu s\u1ea3n ph\u1ea9m c\u1ee7a b\u1ea1n ph\u1ee5 thu\u1ed9c v\u00e0o m\u1ed9t d\u1ecbch v\u1ee5, th\u00ec b\u1ea1n n\u00ean ki\u1ec3m tra v\u00e0 gi\u00e1m s\u00e1t n\u00f3. T\u00edch h\u1ee3p c\u1ee7a b\u00ean th\u1ee9 ba c\u00f3 th\u1ec3 c\u00f3 gi\u00e1 tr\u1ecb nh\u01b0 API c\u1ee7a ri\u00eang b\u1ea1n v\u00e0 n\u1ebfu \u1ee9ng d\u1ee5ng ho\u1eb7c d\u1ecbch v\u1ee5 c\u1ee7a b\u1ea1n b\u1ecb h\u1ecfng, ng\u01b0\u1eddi d\u00f9ng s\u1ebd kh\u00f4ng bi\u1ebft (ho\u1eb7c quan t\u00e2m) v\u1ec1 vi\u1ec7c d\u1ecbch v\u1ee5 c\u1ee7a ai \u0111ang b\u1ecb l\u1ed7i.<\/p>\n\n\n\n<p class=\"has-text-color\" style=\"color:#077f29\"><strong>4- Testing APIs in a Vacuum<\/strong><\/p>\n\n\n\n<p>Ki\u1ec3m tra API c\u00f3 th\u1ec3 ch\u1ec9 l\u00e0 m\u1ed9t h\u00e0nh \u0111\u1ed9ng \u0111\u01a1n l\u1ebb, nh\u01b0ng th\u1eddi \u0111i\u1ec3m ki\u1ec3m tra n\u1eb1m trong quy tr\u00ecnh l\u00e0m vi\u1ec7c c\u1ee7a b\u1ea1n, b\u1ea1n c\u1ea7n \u0111\u01b0a c\u00e1c nh\u00f3m th\u00edch h\u1ee3p v\u00e0o khi c\u00f3 v\u1ea5n \u0111\u1ec1 x\u1ea3y ra. C\u00e1c b\u00e0i ki\u1ec3m tra API kh\u00f4ng ph\u1ea3i l\u00fac n\u00e0o c\u0169ng th\u1ea5t b\u1ea1i v\u00ec nh\u1eefng l\u00fd do gi\u1ed1ng nhau v\u00e0 c\u00f3 th\u1ec3 \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn nhi\u1ec1u b\u00ean li\u00ean quan. Do \u0111\u00f3, c\u00e1c th\u1eed nghi\u1ec7m th\u1ea5t b\u1ea1i \u0111\u00f2i h\u1ecfi s\u1ef1 ch\u00fa \u00fd c\u1ee7a c\u00e1c nh\u00f3m kh\u00e1c nhau trong t\u1ed5 ch\u1ee9c c\u1ee7a b\u1ea1n. N\u1ebfu b\u1ea1n thi\u1ebft l\u1eadp th\u00f4ng b\u00e1o l\u1ed7i th\u1eed nghi\u1ec7m ch\u1ec9 \u0111\u1ebfn v\u1edbi b\u1ea1n, b\u1ea1n \u0111ang th\u00eam th\u1eddi gian, c\u00f4ng s\u1ee9c v\u00e0 s\u1ef1 \u0111au \u0111\u1ea7u cho quy tr\u00ecnh l\u00e0m vi\u1ec7c c\u1ee7a m\u00ecnh.<\/p>\n\n\n\n<p>Ho\u1ea1t \u0111\u1ed9ng ki\u1ec3m tra API \u0111\u01b0\u1ee3c th\u00eam v\u00e0o quy tr\u00ecnh ph\u00e1t tri\u1ec3n li\u00ean quan \u0111\u1ebfn nh\u1eefng ng\u01b0\u1eddi ph\u00f9 h\u1ee3p th\u00f4ng qua c\u00e1c k\u00eanh th\u00f4ng b\u00e1o m\u00e0 h\u1ecd s\u1eed d\u1ee5ng nhi\u1ec1u nh\u1ea5t. Th\u00eam th\u00f4ng b\u00e1o cho nh\u00f3m ch\u1ecbu tr\u00e1ch nhi\u1ec7m kh\u1eafc ph\u1ee5c s\u1ef1 c\u1ed1 API b\u1eb1ng c\u00e1ch t\u00edch h\u1ee3p c\u00e1c b\u00e0i ki\u1ec3m tra API c\u1ee7a b\u1ea1n v\u1edbi Slack, PagerDuty, Jenkins v\u00e0 c\u00e1c c\u00f4ng c\u1ee5 kh\u00e1c \u0111\u1ec3 trao quy\u1ec1n cho to\u00e0n b\u1ed9 nh\u00f3m c\u1ee7a b\u1ea1n gi\u1ea3i quy\u1ebft c\u00e1c th\u00e1ch th\u1ee9c ki\u1ec3m tra API m\u1ed9t c\u00e1ch nhanh ch\u00f3ng.<\/p>\n\n\n\n<p class=\"has-text-color\" style=\"color:#077f29\"><strong>5- Not Validating Data<\/strong><\/p>\n\n\n\n<p>B\u1ea1n c\u00f3 th\u1ec3 nh\u1eadn \u0111\u01b0\u1ee3c th\u00f4ng b\u00e1o r\u1eb1ng c\u00e1c b\u00e0i ki\u1ec3m tra API th\u00e0nh c\u00f4ng. Nh\u01b0ng n\u1ebfu c\u00e1c API c\u1ee7a b\u1ea1n kh\u00f4ng tr\u1ea3 l\u1ea1i d\u1eef li\u1ec7u ch\u00ednh x\u00e1c trong ph\u1ea3n h\u1ed3i, th\u00ec th\u1eed nghi\u1ec7m \u0111\u00f3 c\u0169ng c\u00f3 th\u1ec3 \u0111\u00e3 th\u1ea5t b\u1ea1i. \u0110\u1ec3 gi\u1ea3i quy\u1ebft th\u00e1ch th\u1ee9c l\u1edbn n\u00e0y, \u0111i\u1ec1u c\u1ea7n thi\u1ebft l\u00e0 ph\u1ea3i x\u00e1c minh r\u1eb1ng API c\u1ee7a b\u1ea1n \u0111ang tr\u1ea3 l\u1ea1i d\u1eef li\u1ec7u ch\u00ednh x\u00e1c. B\u1eb1ng c\u00e1ch ki\u1ec3m tra c\u00e1c y\u1ebfu t\u1ed1 nh\u01b0 m\u00e3 tr\u1ea1ng th\u00e1i c\u1ee5 th\u1ec3, ti\u00eau \u0111\u1ec1 HTTP v\u00e0 thu\u1ed9c t\u00ednh JSON ho\u1eb7c XML, c\u00e1c nh\u00f3m c\u00f3 th\u1ec3 x\u00e1c \u0111\u1ecbnh g\u1ecdi API th\u00e0nh c\u00f4ng tr\u00f4ng nh\u01b0 th\u1ebf n\u00e0o v\u00e0 ki\u1ec3m tra t\u01b0\u01a1ng \u1ee9ng.<\/p>\n\n\n\n<p class=\"has-text-color\" style=\"color:#077f29\"><strong>6- Managing API Tests Manually<\/strong><\/p>\n\n\n\n<p>V\u1edbi r\u1ea5t nhi\u1ec1u c\u00f4ng c\u1ee5 d\u00e0nh cho nh\u00e0 ph\u00e1t tri\u1ec3n gi\u00fap b\u1ea1n t\u1ef1 \u0111\u1ed9ng h\u00f3a quy tr\u00ecnh l\u00e0m vi\u1ec7c c\u1ee7a m\u00ecnh, kh\u00f4ng c\u00f3 l\u00fd do g\u00ec \u0111\u1ec3 ti\u1ebfp t\u1ee5c t\u1ea1o c\u00e1c th\u1eed nghi\u1ec7m API theo c\u00e1ch th\u1ee7 c\u00f4ng. L\u00e0m c\u00f4ng vi\u1ec7c n\u00e0y b\u1eb1ng tay c\u00f3 th\u1ec3 c\u1ed3ng k\u1ec1nh v\u00e0 l\u00e0m m\u1ea5t th\u1eddi gian c\u1ee7a c\u00e1c c\u00f4ng vi\u1ec7c quan tr\u1ecdng kh\u00e1c. V\u1edbi th\u1eed nghi\u1ec7m API c\u1ee7a BlazeMeter, c\u00e1c nh\u00f3m c\u00f3 th\u1ec3 t\u1ea1o c\u00e1c th\u1eed nghi\u1ec7m API trong v\u00e0i ph\u00fat v\u00e0 b\u1eaft \u0111\u1ea7u gi\u00e1m s\u00e1t c\u00e1c API c\u1ee7a b\u1ea1n t\u1eeb giai \u0111o\u1ea1n ph\u00e1t tri\u1ec3n ban \u0111\u1ea7u cho \u0111\u1ebfn qu\u00e1 tr\u00ecnh s\u1ea3n xu\u1ea5t. <\/p>\n\n\n\n<p>BlazeMeter th\u1eadm ch\u00ed c\u00f2n cho ph\u00e9p c\u00e1c nh\u00f3m v\u01b0\u1ee3t ra ngo\u00e0i th\u1eed nghi\u1ec7m API v\u1edbi c\u00e1c t\u1eadp l\u1ec7nh th\u1eed nghi\u1ec7m c\u1ee7a h\u1ecd. Ng\u01b0\u1eddi d\u00f9ng c\u00f3 th\u1ec3 t\u1ea1o m\u1ed9t b\u00e0i ki\u1ec3m tra ch\u1ee9c n\u0103ng v\u00e0 sau \u0111\u00f3 s\u1eed d\u1ee5ng l\u1ea1i b\u00e0i ki\u1ec3m tra t\u01b0\u01a1ng t\u1ef1 \u0111\u1ec3 ki\u1ec3m tra API v\u00e0 gi\u00e1m s\u00e1t API, c\u0169ng nh\u01b0 ki\u1ec3m tra hi\u1ec7u su\u1ea5t v\u00e0 t\u1ea3i.<\/p>\n\n\n\n<p class=\"has-black-color has-text-color\"><strong>T\u00f3m l\u1ea1i:<\/strong><br>V\u1edbi c\u00e1c ph\u01b0\u01a1ng ph\u00e1p hay nh\u1ea5t n\u00e0y trong kho v\u0169 kh\u00ed c\u1ee7a b\u1ea1n \u0111\u1ec3 gi\u1ea3i quy\u1ebft c\u00e1c th\u00e1ch th\u1ee9c ki\u1ec3m tra API h\u00e0ng \u0111\u1ea7u, b\u1ea1n c\u00f3 th\u1ec3 b\u1eaft \u0111\u1ea7u th\u1eed nghi\u1ec7m c\u00e1c API h\u1ed7 tr\u1ee3 doanh nghi\u1ec7p c\u1ee7a m\u00ecnh. \u0110\u0103ng k\u00fd BlazeMeter \u0111\u1ec3 b\u1eaft \u0111\u1ea7u th\u1eed nghi\u1ec7m c\u00e1c API c\u1ee7a b\u1ea1n ngay h\u00f4m nay.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>S\u00e1u trong s\u1ed1 nh\u1eefng th\u00e1ch th\u1ee9c h\u00e0ng \u0111\u1ea7u trong th\u1eed nghi\u1ec7m API bao g\u1ed3m: Building irrelevant tests: X\u00e2y d\u1ef1ng ki\u1ec3m th\u1eed kh\u00f4ng li\u00ean quan. Leaving out response time assertions: B\u1ecf qua vi\u1ec7c x\u00e1c nh\u1eadn th\u1eddi gian ph\u1ea3n h\u1ed3i. Not including API dependencies: Kh\u00f4ng bao g\u1ed3m c\u00e1c ph\u1ee5 thu\u1ed9c API. Testing APIs in a vacuum: Ki\u1ec3m [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":11252,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[19,331],"class_list":["post-12183","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-testing","tag-api-testing","tag-kiem-thu-phan-mem"],"_links":{"self":[{"href":"https:\/\/vibeshelf.me\/index.php?rest_route=\/wp\/v2\/posts\/12183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vibeshelf.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vibeshelf.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vibeshelf.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vibeshelf.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12183"}],"version-history":[{"count":0,"href":"https:\/\/vibeshelf.me\/index.php?rest_route=\/wp\/v2\/posts\/12183\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vibeshelf.me\/index.php?rest_route=\/"}],"wp:attachment":[{"href":"https:\/\/vibeshelf.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vibeshelf.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vibeshelf.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}