{"id":14903,"date":"2023-09-10T13:27:18","date_gmt":"2023-09-10T13:27:18","guid":{"rendered":"https:\/\/shadeofhue.com\/?post_type=lp_course&#038;p=14903"},"modified":"2026-08-24T14:15:10","modified_gmt":"2026-08-24T07:15:10","slug":"test-automation-engineering-series","status":"publish","type":"lp_course","link":"https:\/\/shadeofhue.com\/vi\/courses\/test-automation-engineering-series\/","title":{"rendered":"Chu\u1ed7i k\u1ef9 thu\u1eadt t\u1ef1 \u0111\u1ed9ng h\u00f3a ki\u1ec3m th\u1eed"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"14903\" class=\"elementor elementor-14903\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e7ba21e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e7ba21e\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2d2ef8f\" data-id=\"2d2ef8f\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-66bb378 elementor-widget elementor-widget-text-editor\" data-id=\"66bb378\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><strong><b>K\u1ef9 thu\u1eadt ki\u1ec3m th\u1eed t\u1ef1 \u0111\u1ed9ng: Selenium, Playwright &amp; AI<\/b><\/strong>\u00a0l\u00e0 ch\u01b0\u01a1ng tr\u00ecnh ba ph\u1ea7n theo l\u1ed9 tr\u00ecnh, ph\u00e1t tri\u1ec3n n\u0103ng l\u1ef1c automation t\u1eeb n\u1ec1n t\u1ea3ng framework engineering \u0111\u1ebfn t\u1ef1 \u0111\u1ed9ng h\u00f3a tr\u00ecnh duy\u1ec7t hi\u1ec7n \u0111\u1ea1i v\u00e0 c\u00e1c quy tr\u00ecnh h\u1ed7 tr\u1ee3 AI.<\/p><p>Ch\u01b0\u01a1ng tr\u00ecnh theo m\u1ed9t nguy\u00ean t\u1eafc trung t\u00e2m: k\u1ef9 n\u0103ng \u0111\u01b0\u1ee3c luy\u1ec7n b\u1eb1ng tay tr\u01b0\u1edbc s\u1ebd tr\u1edf th\u00e0nh ph\u00e1n \u0111o\u00e1n c\u1ea7n thi\u1ebft \u0111\u1ec3 \u0111\u1ecbnh h\u01b0\u1edbng v\u00e0 r\u00e0 so\u00e1t automation do AI sinh ra. Ng\u01b0\u1eddi h\u1ecdc kh\u00f4ng ch\u1ec9 h\u1ecdc c\u00e1ch t\u1ea1o k\u1ecbch b\u1ea3n. H\u1ecd h\u1ecdc c\u00e1ch thi\u1ebft k\u1ebf automation d\u1ec5 b\u1ea3o tr\u00ec, nh\u1eadn di\u1ec7n m\u1eabu l\u1ed7i, \u0111\u00e1nh gi\u00e1 m\u00e3 \u0111\u01b0\u1ee3c sinh ra v\u00e0 \u0111\u01b0a ra quy\u1ebft \u0111\u1ecbnh k\u1ef9 thu\u1eadt c\u00f3 tr\u00e1ch nhi\u1ec7m.<\/p><p><strong><b>Ph\u1ea7n 1 \u2014 K\u1ef9 thu\u1eadt ki\u1ec3m th\u1eed t\u1ef1 \u0111\u1ed9ng v\u1edbi Selenium<\/b><\/strong><\/p><p>Ph\u1ea7n \u0111\u1ea7u x\u00e2y d\u1ef1ng n\u1ec1n t\u1ea3ng k\u1ef9 thu\u1eadt ki\u1ec3m th\u1eed t\u1ef1 \u0111\u1ed9ng v\u1edbi Selenium WebDriver, Java, TestNG, Maven, GitHub, Selenium Grid v\u00e0 Jenkins.<\/p><p>Ng\u01b0\u1eddi h\u1ecdc t\u1ea1o v\u00e0 t\u1ed5 ch\u1ee9c ki\u1ec3m th\u1eed tr\u00ecnh duy\u1ec7t, \u0111i\u1ec1u khi\u1ec3n th\u1ef1c thi v\u1edbi TestNG, \u00e1p d\u1ee5ng data-driven testing v\u00e0 x\u00e2y d\u1ef1ng automation d\u1ec5 b\u1ea3o tr\u00ec theo m\u1eabu thi\u1ebft k\u1ebf Page Object. H\u1ecd l\u00e0m vi\u1ec7c v\u1edbi c\u00e1c ph\u1ea7n t\u1eed web \u0111\u1eb7c bi\u1ec7t, b\u1ea3ng, popup, iframe, thao t\u00e1c b\u00e0n ph\u00edm, d\u1eef li\u1ec7u ki\u1ec3m th\u1eed \u0111\u01b0\u1ee3c sinh ra v\u00e0 c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng d\u1eef li\u1ec7u t\u00e1i s\u1eed d\u1ee5ng.<\/p><p>Kh\u00f3a h\u1ecdc ti\u1ebfp t\u1ee5c v\u1edbi th\u1ef1c thi c\u00f3 kh\u1ea3 n\u0103ng m\u1edf r\u1ed9ng qua ki\u1ec3m th\u1eed song song, Selenium Grid, c\u1ea5u h\u00ecnh b\u00ean ngo\u00e0i, th\u1ef1c thi d\u00f2ng l\u1ec7nh, t\u00edch h\u1ee3p GitHub v\u00e0 ki\u1ec3m th\u1eed li\u00ean t\u1ee5c d\u1ef1a tr\u00ean Jenkins.<\/p><p><strong><b>Ph\u1ea7n 2 \u2014 T\u1ef1 \u0111\u1ed9ng h\u00f3a web hi\u1ec7n \u0111\u1ea1i v\u1edbi Playwright<\/b><\/strong><\/p><p>Ph\u1ea7n hai hi\u1ec7n \u0111\u1ea1i h\u00f3a c\u00e1ch ti\u1ebfp c\u1eadn automation c\u1ee7a ng\u01b0\u1eddi h\u1ecdc v\u1edbi Playwright, TypeScript v\u00e0 Playwright Test runner.<\/p><p>Ng\u01b0\u1eddi h\u1ecdc t\u00ecm hi\u1ec3u v\u00ec sao c\u00e1c th\u1ef1c h\u00e0nh automation c\u0169 tr\u1edf n\u00ean thi\u1ebfu tin c\u1eady tr\u00ean \u1ee9ng d\u1ee5ng web hi\u1ec7n \u0111\u1ea1i v\u00e0 thay th\u1ebf ch\u00fang b\u1eb1ng locator b\u1ec1n v\u1eefng, auto-waiting, web-first assertions, fixtures, c\u00f4 l\u1eadp browser-context, tr\u1ea1ng th\u00e1i x\u00e1c th\u1ef1c t\u00e1i s\u1eed d\u1ee5ng, ch\u1eb7n m\u1ea1ng, mocking x\u00e1c \u0111\u1ecbnh, g\u1ee1 l\u1ed7i d\u1ef1a tr\u00ean trace v\u00e0 ki\u1ec3m th\u1eed h\u1ed3i quy tr\u1ef1c quan.<\/p><p>Kh\u00f3a h\u1ecdc d\u00f9ng c\u00e1c lab th\u1ef1c h\u00e0nh \u0111\u1ec3 r\u00e8n kh\u1ea3 n\u0103ng nh\u1eadn di\u1ec7n hard wait, selector d\u1ec5 g\u00e3y, m\u1eabu stale-reference, assertion ch\u01b0a \u0111\u1ea7y \u0111\u1ee7, r\u1ee7i ro tr\u1ea1ng th\u00e1i d\u00f9ng chung v\u00e0 c\u00e1c v\u1ea5n \u0111\u1ec1 automation ph\u1ed5 bi\u1ebfn kh\u00e1c. Module cu\u1ed1i gi\u1edbi thi\u1ec7u m\u00f4 h\u00ecnh pilot-and-copilot \u0111\u1ec3 r\u00e0 so\u00e1t c\u00e1c ki\u1ec3m th\u1eed Playwright do AI sinh ra.<\/p><p><strong><b>Ph\u1ea7n 3 \u2014 Th\u1ef1c h\u00e0nh n\u00e2ng cao: Ki\u1ec3m th\u1eed t\u1ef1 \u0111\u1ed9ng h\u1ed7 tr\u1ee3 AI<\/b><\/strong><\/p><p>Ph\u1ea7n cu\u1ed1i \u00e1p d\u1ee5ng AI xuy\u00ean su\u1ed1t v\u00f2ng \u0111\u1eddi automation th\u00f4ng qua <strong><b>15 c\u00e1ch th\u1ef1c t\u1ebf AI c\u00f3 th\u1ec3 h\u1ed7 tr\u1ee3 k\u1ef9 thu\u1eadt ki\u1ec3m th\u1eed t\u1ef1 \u0111\u1ed9ng<\/b><\/strong>.<\/p><p>Ng\u01b0\u1eddi h\u1ecdc d\u00f9ng AI \u0111\u1ec3 ph\u00e2n t\u00edch giao di\u1ec7n, \u0111\u1ec1 xu\u1ea5t v\u00e0 \u0111\u00e1nh gi\u00e1 locator, \u00e1nh x\u1ea1 ki\u1ec3m th\u1eed th\u1ee7 c\u00f4ng th\u00e0nh b\u01b0\u1edbc t\u1ef1 \u0111\u1ed9ng h\u00f3a, sinh k\u1ecbch b\u1ea3n UI v\u00e0 API, x\u00e2y d\u1ef1ng page object, thi\u1ebft k\u1ebf d\u1eef li\u1ec7u ki\u1ec3m th\u1eed, hi\u1ec3u m\u00e3 \u0111\u01b0\u1ee3c sinh ra, refactor an to\u00e0n, ch\u1ea9n \u0111o\u00e1n l\u1ed7i, c\u1ea3i thi\u1ec7n wait v\u00e0 assertion, x\u1eed l\u00fd giao di\u1ec7n \u0111\u1ed9ng, \u1ed5n \u0111\u1ecbnh ki\u1ec3m th\u1eed flaky v\u00e0 t\u1ed1i \u01b0u ph\u1ea1m vi h\u1ed3i quy.<\/p><p>N\u0103m n\u1ec1n t\u1ea3ng \u0111i\u1ec1u h\u00e0nh gi\u00fap k\u1ef9 s\u01b0 gi\u1eef quy\u1ec1n ki\u1ec3m so\u00e1t:<\/p><ul><li>The Copilot Model.<\/li><li>The AI Output Annotation System.<\/li><li>The Locator Hierarchy.<\/li><li>Predictable AI Automation Failure Modes.<\/li><li>Prompt Input Discipline.<\/li><\/ul><p>AI h\u1ed7 tr\u1ee3 sinh m\u00e3 v\u00e0 ph\u00e2n t\u00edch, nh\u01b0ng k\u1ef9 s\u01b0 v\u1eabn ch\u1ecbu tr\u00e1ch nhi\u1ec7m v\u1ec1 ph\u1ea1m vi, \u0111\u1ed9 ph\u1ee7, x\u00e1c minh, ki\u1ebfn tr\u00fac v\u00e0 ph\u00ea duy\u1ec7t.<\/p><p>Ho\u00e0n th\u00e0nh to\u00e0n b\u1ed9 series, ng\u01b0\u1eddi h\u1ecdc s\u1ebd c\u00f3 th\u1ec3:<\/p><ul><li>X\u00e2y d\u1ef1ng framework automation Selenium d\u1ec5 b\u1ea3o tr\u00ec.<\/li><li>\u00c1p d\u1ee5ng TestNG, data-driven testing, Page Objects, th\u1ef1c thi song song v\u00e0 Selenium Grid.<\/li><li>T\u00edch h\u1ee3p ki\u1ec3m th\u1eed t\u1ef1 \u0111\u1ed9ng v\u1edbi GitHub, Maven, Jenkins v\u00e0 quy tr\u00ecnh CI.<\/li><li>Vi\u1ebft ki\u1ec3m th\u1eed Playwright \u0111\u00e1ng tin c\u1eady b\u1eb1ng TypeScript.<\/li><li>D\u00f9ng locator b\u1ec1n v\u1eefng, fixtures, t\u00e1i s\u1eed d\u1ee5ng phi\u00ean v\u00e0 c\u00f4 l\u1eadp browser-context.<\/li><li>Ki\u1ec3m so\u00e1t v\u00e0 x\u00e1c th\u1ef1c h\u00e0nh vi m\u1ea1ng qua interception v\u00e0 mocking.<\/li><li>Ch\u1ea9n \u0111o\u00e1n l\u1ed7i b\u1eb1ng b\u1eb1ng ch\u1ee9ng trace v\u00e0 so s\u00e1nh tr\u1ef1c quan.<\/li><li>Nh\u1eadn di\u1ec7n m\u00e3 automation d\u1ec5 g\u00e3y, ch\u01b0a \u0111\u1ea7y \u0111\u1ee7 ho\u1eb7c g\u00e2y hi\u1ec3u nh\u1ea7m.<\/li><li>\u0110\u1ecbnh h\u01b0\u1edbng AI xuy\u00ean su\u1ed1t vi\u1ec7c vi\u1ebft, g\u1ee1 l\u1ed7i, b\u1ea3o tr\u00ec v\u00e0 t\u1ed1i \u01b0u automation.<\/li><li>R\u00e0 so\u00e1t v\u00e0 ch\u1ec9nh s\u1eeda automation do AI sinh ra tr\u01b0\u1edbc khi \u0111\u01b0a v\u00e0o codebase.<\/li><li>V\u1eadn h\u00e0nh v\u1edbi t\u01b0 c\u00e1ch k\u1ef9 s\u01b0 ch\u1ecbu tr\u00e1ch nhi\u1ec7m khi d\u00f9ng AI nh\u01b0 m\u1ed9t copilot.<\/li><\/ul>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Test Automation Engineering: Selenium, Playwright &amp; AI\u00a0is a progressive three-part program that develops automation capability from foundational framework engineering to modern browser automation and AI-assisted workflows. The program follows one central principle: the skills first practiced by hand become the &hellip; <\/p>","protected":false},"featured_media":18247,"comment_status":"closed","ping_status":"closed","template":"","course_category":[],"course_tag":[],"class_list":["post-14903","lp_course","type-lp_course","status-publish","has-post-thumbnail","hentry","course"],"acf":[],"_links":{"self":[{"href":"https:\/\/shadeofhue.com\/vi\/wp-json\/wp\/v2\/lp_course\/14903","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/shadeofhue.com\/vi\/wp-json\/wp\/v2\/lp_course"}],"about":[{"href":"https:\/\/shadeofhue.com\/vi\/wp-json\/wp\/v2\/types\/lp_course"}],"replies":[{"embeddable":true,"href":"https:\/\/shadeofhue.com\/vi\/wp-json\/wp\/v2\/comments?post=14903"}],"version-history":[{"count":47,"href":"https:\/\/shadeofhue.com\/vi\/wp-json\/wp\/v2\/lp_course\/14903\/revisions"}],"predecessor-version":[{"id":27237,"href":"https:\/\/shadeofhue.com\/vi\/wp-json\/wp\/v2\/lp_course\/14903\/revisions\/27237"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/shadeofhue.com\/vi\/wp-json\/wp\/v2\/media\/18247"}],"wp:attachment":[{"href":"https:\/\/shadeofhue.com\/vi\/wp-json\/wp\/v2\/media?parent=14903"}],"wp:term":[{"taxonomy":"course_category","embeddable":true,"href":"https:\/\/shadeofhue.com\/vi\/wp-json\/wp\/v2\/course_category?post=14903"},{"taxonomy":"course_tag","embeddable":true,"href":"https:\/\/shadeofhue.com\/vi\/wp-json\/wp\/v2\/course_tag?post=14903"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}