5. 1.1 API l g狸?
API - Application Programming Interface: l
c畉u n畛i gi畛a client v server, cho ph辿p giao
ti畉p v trao 畛i d畛 li畛u gi畛a hai h畛 th畛ng
ph畉n m畛m ri棚ng bi畛t.
6. 1.2 Ki畛m th畛
API
l g狸?
Ki畛m th畛 API l th畛 nghi畛m m trong 坦 b畉n s畛
d畛ng ph畉n m畛m 畛 g畛i t畛i API, nh畉n k畉t qu畉 畉u
ra v ghi l畉i ph畉n h畛i c畛a h畛 th畛ng.
Kh担ng t畉p trung vo giao di畛n m ch畛 y畉u t畉p
trung vo l畛p business logic c畛a ph畉n m畛m.
7. V畉n th畛c hi畛n test 動畛c, kh担ng c畉n ph畛 thu畛c
vo client, trong tr動畛ng h畛p client ch動a ph叩t
tri畛n xong.
D畛 dng h董n trong vi畛c t狸m ra nguy棚n nh但n l畛i
ph叩t sinh t畛 server hay client > s畛a l畛i s畉
nhanh h董n.
Trong tr動畛ng h畛p ch畛 畛c l畉p ph叩t tri畛n API
m kh担ng c坦 client th狸 vi畛c test API l c畉n thi畉t.
1.3 T畉i sao
ki畛m th畛 API
l quan tr畛ng?
8. A. Thi畉t l畉p m担i tr動畛ng ki畛m th畛 API
B. X叩c 畛nh ph畉m vi v y棚u c畉u ki畛m th畛
C. Quy畉t 畛nh xem b畉n mu畛n th畛 nghi畛m
API c畛a m狸nh nh動 th畉 no?
D. Testcase API
1.4 C畉n
chu畉n b畛
nh畛ng g狸 畛
b畉t 畉u ki畛m
th畛 API?
9. Thi畉t l畉p m担i tr動畛ng ki畛m th畛 API v畛i t畉p h畛p
c叩c tham s畛 c畉n thi畉t c畛a API.
C畉u h狸nh c董 s畛 d畛 li畛u v m叩y ch畛 theo c叩c y棚u
c畉u c畛a 畛ng d畛ng.
Th畛 th畛c hi畛n g畛i API 畛 畉m b畉o kh担ng c坦 l畛i
g狸 tr動畛c khi b畉n ti畉n hnh ki畛m th畛.
A. Thi畉t l畉p m担i tr動畛ng ki畛m th畛 API
10. 畉t c叩c c但u h畛i li棚n quan 畉n API 畛 x叩c 畛nh
ph畉m vi v y棚u c畉u ki畛m th畛.
V鱈 d畛:
Nh畛ng m担i tr動畛ng no n棚n s畛 d畛ng API nh動
th畉 no?
畛 動u ti棚n trong ki畛m th畛 API?
i畛u g狸 s畉 x畉y ra trong nh畛ng tr動畛ng h畛p
b狸nh th動畛ng, tr動畛ng h畛p b畉t th動畛ng
API no kh叩c c坦 th畛 t動董ng t叩c v畛i API ny?
...
B. X叩c 畛nh ph畉m vi v y棚u c畉u ki畛m th畛
11. M畛t s畛 ph動董ng ph叩p ki畛m th畛 API ph畛 bi畉n:
Functionality testing - X叩c nh畉n API ho畉t
畛ng ch鱈nh x叩c theo 炭ng ch畛c nng m n坦
動畛c t畉o ra.
Usability testing - X叩c nh畉n API c坦 th畛 s畛
d畛ng m畛t c叩ch d畛 dng
Reliability testing - X叩c nh畉n vi畛c g畛i API v
tr畉 k畉t qu畉 ho畉t 畛ng 畛n 畛nh v nh畉t qu叩n
C. Quy畉t 畛nh xem b畉n mu畛n th畛 nghi畛m
API c畛a m狸nh nh動 th畉 no?
12. M畛t s畛 ph動董ng ph叩p ki畛m th畛 API ph畛 bi畉n:
Load testing - X叩c nh畉n API ho畉t 畛ng 炭ng v畛i m畛t
l動畛ng cu畛c g畛i l畛n nh畉t 畛nh
Security testing - X叩c nh畉n API 達 define nh畛ng y棚u
c畉u v畛 b畉o m畉t nh動 authentication, permissions v
access controls
API documentation testing - Discovery testing: X叩c nh畉n
ti li畛u h動畛ng d畉n s畛 d畛ng c畛a API l d畛 s畛 d畛ng cho
user
C. Quy畉t 畛nh xem b畉n mu畛n th畛 nghi畛m
API c畛a m狸nh nh動 th畉 no?
13. C叩c tr動畛ng h畛p th畛 nghi畛m v畛 ki畛m tra API d畛a tr棚n:
Ki畛m tra c叩c gi叩 tr畛 tr畉 v畛 d畛a tr棚n i畛u ki畛n 畉u vo.
X叩c minh n畉u API kh担ng tr畉 l畉i b畉t k畛 k畉t qu畉 g狸 ho畉c k畉t
qu畉 sai.
X叩c minh n畉u API k鱈ch ho畉t m畛t s畛 s畛 ki畛n kh叩c ho畉c
g畛i m畛t API kh叩c.
X叩c minh xem API ang c畉p nh畉t b畉t k畛 c畉u tr炭c d畛 li畛u
no.
D. Testcase API
14. V畉n 畛 b畉o m畉t
C叩c v畉n 畛 v畛 s畛 tin c畉y. Kh坦 khn khi k畉t
n畛i v nh畉n ph畉n h畛i t畛 API.
V畉n 畛 hi畛u nng. API th畛i gian ph畉n h畛i r畉t
cao.
L畛i / c畉nh b叩o kh担ng 炭ng cho ng動畛i g畛i
X畛 l箪 sai s畛 gi叩 tr畛 畛i s畛 h畛p l畛
D畛 li畛u ph畉n h畛i kh担ng 動畛c c畉u tr炭c ch鱈nh
x叩c (JSON ho畉c XML)
1.5 M畛t s畛
ki畛u bug c畉n
ch炭 箪 khi ki畛m
th畛 API
15. 1.6 Ki畛m th畛
th畛 c担ng hay
Ki畛m th畛 t畛
畛ng?
Ki畛m tra API l m畛t trong nh畛ng l挑nh v畛c m
ki畛m th畛 t畛 畛ng 動畛c 叩nh gi叩 cao, 畉c
bi畛t l 畛i v畛i DevOps (Development and
Operations), v嘆ng 畛i ph叩t tri畛n agile v
continuous delivery.
Khi no th畛c hi畛n ki畛m th畛 t畛 畛ng API?
16. 1.7 M畛t s畛
tool ki畛m th畛
API
SoapUI
Postman
Runscope
Eclipse SDK tool- Automated ki畛m th畛
API
Curl
...
31. 2.4 Demo
autotest
REST API
b畉ng SOAP
UI
Endpoint:
Resources:
Test cases:
T畉o test case 董n gi畉n validate cho c叩c
tr動畛ng h畛p ng k箪 ti kho畉n:
ng k箪 failed do username ch畛a k箪 t畛
s畛
ng k箪 failed do email 達 t畛n t畉i
#6: N坦i 董n gi畉n, API l c叩i c畉u n畛i gi畛a client v server. Client 畛 但y c坦 th畛 l m叩y t鱈nh, i畛n tho畉i s畛 d畛ng h畛 i畛u hnh kh叩c nhau v 動畛c vi畉t b畉ng nh畛ng ng担n ng畛 kh叩c nhau. T動董ng t畛, server back-end c滴ng 動畛c vi畉t b畉ng c叩c ng担n ng畛 kh叩c nhau. 畛 2 th畉ng ny c坦 th畛 n坦i chuy畛n 動畛c v畛i nhau ch炭ng ph畉i n坦i c湛ng 1 ng担n ng畛. Ng担n ng畛 畉y ch鱈nh l API.
#7: ki畛m th畛 API l th畛 nghi畛m m trong 坦 b畉n s畛 d畛ng ph畉n m畛m 畛 g畛i t畛i API, nh畉n k畉t qu畉 畉u ra v ghi l畉i ph畉n h畛i c畛a h畛 th畛ng.
Kh担ng t畉p trung vo giao di畛n m ch畛 y畉u t畉p trung vo l畛p business logic layer c畛a ph畉n m畛m.
#8: D動畛i 但y l m畛t s畛 v鱈 d畛 v畛 c叩c bi ki畛m tra b畉o m畉t ph畛 bi畉n m API:
API 動a ra gi叩 tr畛 c畛a 畛ng d畛ng. 坦 l lm cho i畛n tho畉i c畛a ch炭ng ta "th担ng minh" v 坦 l nh畛ng g狸 h畛p l箪 h坦a business processes. N畉u b畉t k畛 API no kh担ng ho畉t 畛ng hi畛u qu畉, n坦 s畉 kh担ng bao gi畛 動畛c ch畉p nh畉n, b畉t k畛 坦 l m畛t API mi畛n ph鱈 hay API m畛. i畛u t畛i t畛 h董n, n畉u m畛t API b畛 ph叩 v畛 v狸 l畛i kh担ng 動畛c ph叩t hi畛n, n坦 kh担ng ch畛 c坦 th畛 ph叩 v畛 m畛t 畛ng d畛ng duy nh畉t m c嘆n l m畛t chu畛i quy tr狸nh nghi畛p v畛 g畉n li畛n v畛i n坦.
#9: D動畛i 但y l m畛t s畛 v鱈 d畛 v畛 c叩c bi ki畛m tra b畉o m畉t ph畛 bi畉n m API:
API 動a ra gi叩 tr畛 c畛a 畛ng d畛ng. 坦 l lm cho i畛n tho畉i c畛a ch炭ng ta "th担ng minh" v 坦 l nh畛ng g狸 h畛p l箪 h坦a business processes. N畉u b畉t k畛 API no kh担ng ho畉t 畛ng hi畛u qu畉, n坦 s畉 kh担ng bao gi畛 動畛c ch畉p nh畉n, b畉t k畛 坦 l m畛t API mi畛n ph鱈 hay API m畛. i畛u t畛i t畛 h董n, n畉u m畛t API b畛 ph叩 v畛 v狸 l畛i kh担ng 動畛c ph叩t hi畛n, n坦 kh担ng ch畛 c坦 th畛 ph叩 v畛 m畛t 畛ng d畛ng duy nh畉t m c嘆n l m畛t chu畛i quy tr狸nh nghi畛p v畛 g畉n li畛n v畛i n坦.
#11: 畛i t動畛ng m畛c ti棚u l ai? Ai l ng動畛i d湛ng API 畉n c畛a b畉n?
Nh畛ng m担i tr動畛ng no n棚n s畛 d畛ng API nh動 th畉 no?
B畉n ang th畛 nghi畛m nh畛ng kh鱈a c畉nh no?
B畉n ang th畛 nghi畛m nh畛ng v畉n 畛 g狸?
畛 動u ti棚n trong ki畛m th畛 API?
i畛u g狸 s畉 x畉y ra trong nh畛ng tr動畛ng h畛p b狸nh th動畛ng?
i畛u g狸 c坦 th畛 x畉y ra trong nh畛ng tr動畛ng h畛p b畉t th動畛ng?
X叩c 畛nh Pass/ Fail ? D畛 li畛u 畉u ra mong mu畛n? Chu畛i s畛 ki畛n l g狸?
API no kh叩c c坦 th畛 t動董ng t叩c v畛i API ny?
Ai trong nh坦m c畛a b畉n c坦 tr叩ch nhi畛m ki畛m tra c叩i g狸?
#12: Functionality testing - Ki畛m tra ch畛c nng : API ho畉t 畛n.
Usability testing - Ki畛m tra kh畉 nng s畛 d畛ng: API r畉t d畛 s畛 d畛ng.
Reliability testing - Th畛 nghi畛m 畛 tin c畉y: API c坦 th畛 動畛c k畉t n畛i li棚n t畛c v d畉n 畉n k畉t qu畉 nh畉t qu叩n.
Load testing - Ki畛m th畛 t畉i: API c坦 th畛 x畛 l箪 m畛t s畛 l動畛ng l畛n c叩c request.
Creativity testing - Th畛 nghi畛m s叩ng t畉o: API c坦 th畛 x畛 l箪 動畛c s畛 d畛ng theo nh畛ng c叩ch kh叩c nhau.
Security testing - Ki畛m tra b畉o m畉t: API 達 x叩c 畛nh y棚u c畉u b畉o m畉t bao g畛m x叩c th畛c, cho ph辿p v i畛u khi畛n truy c畉p.
API documentation testing - Ki畛m th畛 ti li畛u API : c嘆n 動畛c g畛i l ki畛m tra ph叩t hi畛n, ti li畛u API cung c畉p 畉y 畛 c叩c th担ng tin 畛 t動董ng t叩c v畛i API v d畛 dng h動畛ng d畉n ng動畛i d湛ng.
#13: Functionality testing - Ki畛m tra ch畛c nng : API ho畉t 畛ng.
Usability testing - Ki畛m tra kh畉 nng s畛 d畛ng: API r畉t d畛 s畛 d畛ng.
Reliability testing - Th畛 nghi畛m 畛 tin c畉y: API c坦 th畛 動畛c k畉t n畛i li棚n t畛c v d畉n 畉n k畉t qu畉 nh畉t qu叩n.
Load testing - Ki畛m th畛 t畉i: API c坦 th畛 x畛 l箪 m畛t s畛 l動畛ng l畛n c叩c request.
Creativity testing - Th畛 nghi畛m s叩ng t畉o: API c坦 th畛 x畛 l箪 動畛c s畛 d畛ng theo nh畛ng c叩ch kh叩c nhau.
Security testing - Ki畛m tra b畉o m畉t: API 達 x叩c 畛nh y棚u c畉u b畉o m畉t bao g畛m x叩c th畛c, cho ph辿p v i畛u khi畛n truy c畉p.
API documentation testing - Ki畛m th畛 ti li畛u API : c嘆n 動畛c g畛i l ki畛m tra ph叩t hi畛n, ti li畛u API cung c畉p 畉y 畛 c叩c th担ng tin 畛 t動董ng t叩c v畛i API v d畛 dng h動畛ng d畉n ng動畛i d湛ng.
#16: Ki畛m th畛 t畛 畛ng v ki畛m th畛 th畛 c担ng l g狸? Ki畛m th畛 t畛 畛ng API l b畉n s畛 d畛ng tool 畛 test, trong khi ki畛m tra th畛 c担ng l b畉n vi畉t code c畛a ri棚ng b畉n 畛 ki畛m tra API. Ki畛m tra API l m畛t trong nh畛ng l挑nh v畛c m ki畛m th畛 t畛 畛ng 動畛c 叩nh gi叩 cao, 畉c bi畛t l 畛i v畛i DevOps, v嘆ng 畛i ph叩t tri畛n agile v bn giao li棚n t畛c.
DevOps l t畛 vi畉t t畉t c畛a c畛m t畛 Development and Operations. Devops l m畛t thu畉t ng畛 trong ph叩t tri畛n ph畉n m畛m 畛 ch畛 m畛i li棚n quan gi畛a qu叩 tr狸nh ph叩t tri畛n v qu叩 tr狸nh v畉n hnh. M畛c 鱈ch c畛a DevOps l畛 thay 畛i v c畉i ti畉n m畛i quan h畛 gi畛a hai qu叩 tr狸nh ny.
Khi no c坦 th畛 ki畛m th畛 API t畛 畛ng?
Ki畛m th畛 ch畛c nng API.
T畉o nhi畛u d畛 li畛u 畛ng 畛 動a vo th畛 nghi畛m API.
Thi畉t k畉 th畛 nghi畛m l畉p l畉i.
Ph但n t鱈ch ph畉m vi ki畛m tra ch畛c nng 畛 bi畉t b畉n ang b畛 miss TH no.
Th畛 nghi畛m ad hoc.
S畛 d畛ng command-line 畛 n畛i th畛 nghi畛m v畛i h畛 th畛ng x但y d畛ng c畛a b畉n.
Chuy畛n 畛i gi畛a nhi畛u m担i tr動畛ng m畛t c叩ch nhanh ch坦ng, bao g畛m c畉 m担i tr動畛ng ph叩t tri畛n, th畛 nghi畛m v m担i tr動畛ng staging.
Ki畛m tra c叩c giao th畛c trong m畛t framework th畛ng nh畉t.
S畛 d畛ng nhi畛u b畛 d畛 li畛u c湛ng l炭c 畛 bao g畛m c叩c k畛ch b畉n ki畛m tra kh叩c nhau.
畉y nhanh qu叩 tr狸nh th畛 nghi畛m t畛ng th畛.
L畛i ki畛m tra, n董i m b畉n n辿m c叩c l畛i b畉t bu畛c t畉i API 畛 hi畛u n坦 s畉 ph畉n 畛ng nh動 th畉 no.
Th畛 nghi畛m b畉ng nhi畛u ng担n ng畛.
#19: SOAP UI h畛 tr畛 t畉t c畉 c叩c chu畉n giao th畛c v c担ng ngh畛 畛 test t畉t c畉 c叩c lo畉i API. Ngoi ra SOAP UI c嘆n cho ph辿p ch炭ng ta th畛c hi畛n th畛 nghi畛m phi ch畛c nng nh動 ki畛m th畛 hi畛u su畉t v ki畛m th畛 b畉o m畉t.
#20: SOAP UI h畛 tr畛 t畉t c畉 c叩c chu畉n giao th畛c v c担ng ngh畛 畛 test t畉t c畉 c叩c lo畉i API. Ngoi ra SOAP UI c嘆n cho ph辿p ch炭ng ta th畛c hi畛n th畛 nghi畛m phi ch畛c nng nh動 ki畛m th畛 hi畛u su畉t v ki畛m th畛 b畉o m畉t.
#23: Resource: l nh畛ng ti nguy棚n m b棚n cung c畉p service cung c畉p cho. Ng動畛i s畛 d畛ng mu畛n d湛ng resource no th狸 g畛i resource 坦 ra, theo 炭ng docs s畛 d畛ng API
Trong c湛ng m畛t Resource c坦 th畛 add nhi畛u method kh叩c nhau
End Point: 畛a ch畛 c畛a service
Method: GET, POST, DELETE, PUT, HEAD, PATCH
POST : la method create
GET : la method
UPDATE : C畉p nh畉t m畛t
DELETE : X坦a m畛t
PUT
Parameter: th担ng tin tr動畛ng s畉 th畛c hi畛n test V鱈 d畛 mu畛n test tr動畛ng 畛a ch畛 mail th狸 add t棚n tr動畛ng mail ch鱈nh x叩c 達 動畛c 畛nh ngh挑a trong docs s畛 d畛ng API
TestSuite: Bao g畛m nhi畛u TestCases. C坦 th畛 t畉o nhi畛u TestSuites trong 1 project 畛 h畛 tr畛 nhi畛u test scenerios
TestCase: Bao g畛m nhi畛u TestSteps.
TestStep: M畛i TestStep th畛c hi畛n ki畛m tra m畛t ch畛c nng c畛a project.
Trong m畛t TestStep ki畛m tra m畛t ch畛c nng, c坦 th畛 th畛c hi畛n nhi畛u tr動畛ng h畛p test kh叩c nhau v畛i c叩c d畛 li畛u 畉u vo kh叩c nhau: v鱈 d畛 nh畉p t棚n b狸nh th動畛ng, t棚n di, t棚n c坦 k箪 t畛 畉c bi畛t .
C叩c d畛 li畛u 畉u vo mu畛n s畛 d畛ng trong t畉t c畉 c叩c case test th狸 t畉o chung trong 1 Properites
V畛i 1d畛 li畛u 畉u vo c畉n t畉o ri棚ng 1 REST request v 1 Property Transfer, v ch畛 畛nh d畛 li畛u 畉u vo 坦 s畉 動畛c truy畛n vo t動董ng 畛ng v畛i Parameter no c畛a request no
Properties: Nh畉p data test - c叩c d畛 li畛u 畉u vo m tester c畉n s畛 d畛ng 畛 truy畛n vo c叩c parameter cho m畛i request th畛c hi畛n
REST Request: Ch畛n request s畉 th畛c hi畛n (但y ch鱈nh l Request m 達 動畛c add vo setup 畛 b動畛c 2)
Properties Transfer: Ch畛 畛nh truy畛n d畛 li畛u Properties no cho REST Request no
#24: TestSuite => TestCase => Test Steps => Step ~ T畛ng case test nh畛 nh畉t.
Vi畛c c畉u tr炭c testsuite, testcase, test step c滴ng linh ho畉t nh動 vi畛c t畛 ch畛c vi畉t testcase b畉n c畛ng, chia function l畛n => function nh畛 => case test nh畛 nh畉t.
C畉n ph但n chia c畉u tr炭c v 畉t t棚n r探 rng 畛 畉m b畉o
Nh狸n vo s畉 hi畛u ngay 動畛c ph畉n 坦 check cho ch畛c nng no, check nh畛ng tr動畛ng h畛p no
Ng動畛i review c坦 th畛 ph叩t hi畛n ra 動畛c l 達 check 畛 ch畛c nng ch動a, 達 check 畛 c叩c tr動畛ng h畛p test ch動a
Properites 畛 nh畉p d畛 li畛u 畉u vo c畉n 動畛c 畉t t棚n r探 rng, kh担ng g但y nh畉m l畉n, v d畛 dng t狸m l畉i khi c畉n ph畉i ch畛nh s畛a l畉i testcase
#25: Resource: l nh畛ng ti nguy棚n m b棚n cung c畉p service cung c畉p cho. Ng動畛i s畛 d畛ng mu畛n d湛ng resource no th狸 g畛i resource 坦 ra, theo 炭ng docs s畛 d畛ng API
#26: Resource: l nh畛ng ti nguy棚n m b棚n cung c畉p service cung c畉p cho. Ng動畛i s畛 d畛ng mu畛n d湛ng resource no th狸 g畛i resource 坦 ra, theo 炭ng docs s畛 d畛ng API