Giới thiệu dự án
Trong kỷ nguyên chuyển đổi số, các ứng dụng web đã trở thành hạ tầng trọng yếu phục vụ từ thương mại điện tử, tài chính ngân hàng đến các hệ sinh thái dịch vụ công và điều hành doanh nghiệp. Theo các báo cáo an ninh mạng toàn cầu, hơn 75% các cuộc tấn công mạng nhắm trực tiếp vào tầng ứng dụng web thông qua việc khai thác các lỗ hổng bảo mật cấu hình sai hoặc thiếu sót trong kiểm thử hồi quy (regression testing). Tuy nhiên, quy trình đảm bảo chất lượng (Quality Assurance - QA) và kiểm thử thâm nhập (Penetration Testing) truyền thống thường bị phân mảnh: kiểm thử chức năng (Functional Testing) và đánh giá an toàn thông tin (Security Assessment) được thực thi độc lập bởi các nhóm chuyên biệt, gây tiêu tốn từ 40-60% thời gian triển khai và gia tăng chi phí vận hành mỗi khi phát hành phiên bản mới.
Đề tài khóa luận tốt nghiệp "Xây dựng bộ khung phục vụ việc kiểm thử web tự động" (Building a Framework for Automated Web Application Penetration Testing) do kỹ sư ngành An toàn Thông tin Trần Thanh Tài thực hiện dưới sự hướng dẫn của TS. Nguyễn Tấn Cầm tại Trường Đại học Công nghệ Thông tin – ĐHQG-HCM (UIT), giải quyết triệt để bài toán tích hợp này bằng cách thiết kế một kiến trúc mở đồng nhất.
┌─────────────────────────────────────────────────────────┐
│ Target Web URL / IP │
└────────────────────────────┬────────────────────────────┘
│
▼
┌────────────────────────────────────────┴────────────────────────────────────────┐
│ │
▼ ▼ ▼
┌───────────────────────┐ ┌───────────────────────┐ ┌───────────────────────┐
│ Metadata Collector │ │ Automation Test │ │ Vulnerability Checker │
├───────────────────────┤ ├───────────────────────┤ ├───────────────────────┤
│ • Whois / AbuseIPDB │ │ • Test Common (DOM) │ │ • OWASP Top 10 Scans │
│ • BGPView / GeoIP │ │ • Test Private (POM) │ │ • Header & Config │
│ • crt.sh / Shodan │ │ • WebdriverIO Engine │ │ • Fast Triage │
└───────────┬───────────┘ └───────────┬───────────┘ └───────────┬───────────┘
│ │ │
└────────────────────────────────────┼────────────────────────────────────────┘
│
▼
┌─────────────────────────────────┐
│ Synthesis & Report Engine │
├─────────────────────────────────┤
│ • Allure Report (Visual Trends) │
│ • Final HTML Audit Summary │
└─────────────────────────────────┘
Mục tiêu đề tài
- Xây dựng bộ khung (framework) kiểm thử hợp nhất: Tự động hóa quá trình thu thập thông tin mạng (OSINT/Reconnaissance), quét lỗ hổng ứng dụng và kiểm thử giao diện/chức năng.
- Triển khai mô hình Page Object Model (POM): Tối ưu hóa việc tổ chức mã nguồn kiểm thử, nâng cao tính mô-đun hóa, khả năng bảo trì và tái sử dụng test script.
- Phát triển module Metadata Collector đa nguồn: Tự động tổng hợp thông tin hạ tầng từ hơn 10 dịch vụ an ninh mạng hàng đầu thế giới mà không làm gián đoạn luồng làm việc.
- Tích hợp hệ thống báo cáo trực quan Allure Report & HTML Dashboard: Cung cấp biểu đồ xu hướng kiểm thử, phân tích lỗi chi tiết kèm bằng chứng ảnh chụp màn hình (screenshot evidence).
- Đánh giá hiệu năng thực nghiệm: Kiểm chứng độ chính xác, thời gian phản hồi và khả năng phục hồi lỗi trên môi trường kiểm thử thực tế.
Phương pháp và phạm vi nghiên cứu
- Phương pháp tiếp cận: Kết hợp kiểm thử hộp đen (Black-Box Testing) để thu thập siêu dữ liệu bên ngoài, kiểm thử hộp xám (Gray-Box Testing) để đánh giá cấu trúc trang/thẻ DOM và kiểm thử hộp trắng (White-Box Testing) cho các luồng nghiệp vụ xác thực.
- Phạm vi hệ thống: Hỗ trợ môi trường trình duyệt Chromium/Google Chrome, phân tích mã nguồn tầng Client, kiểm tra các cấu hình bảo mật tiêu chuẩn (HTTP Security Headers, SSL/TLS Certificates) và đánh giá các kịch bản tương tác người dùng trọng yếu.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Các giải pháp kiểm thử hiện có trên thị trường thường chia thành hai nhóm riêng biệt: nhóm công cụ tự động hóa kiểm thử chức năng (Functional Automation) và nhóm công cụ quét lỗ hổng bảo mật (Vulnerability Scanners).
| Tiêu chí phân tích |
Selenium / Cypress thuần túy |
OWASP ZAP / Burp Suite |
Framework tích hợp đề xuất |
| Mục đích chính |
Kiểm thử UI/E2E chức năng |
Quét lỗ hổng an ninh ứng dụng |
Kết hợp Reconnaissance, UI Test & Security Audit |
| Thu thập Metadata (OSINT) |
Không hỗ trợ |
Hạn chế (chỉ bắt gói tin HTTP) |
Tích hợp tự động 10+ nguồn OSINT/BGP/DNS |
| Cơ chế kiểm tra DOM Tag |
Phải viết thủ công cho từng trang |
Không hỗ trợ |
Test Common tự động quét toàn diện cấu trúc thẻ |
| Báo cáo trực quan |
Cần cài thêm plugin phức tạp |
Báo cáo bảo mật dạng văn bản thô |
Allure Report biểu đồ hóa + HTML Report tổng hợp |
| Chi phí bản quyền |
Mã nguồn mở |
Miễn phí / Bản Pro tính phí cao |
100% Công nghệ mã nguồn mở |
Phân tích yêu cầu theo mô hình MoSCoW
- Must Have (Bắt buộc): Động cơ WebdriverIO chạy bất đồng bộ với JavaScript; Module Metadata Collector hỗ trợ Whois, DNS, SSL crt.sh, Security Headers; Module Test Common kiểm tra thẻ HTML; Báo cáo lỗi chi tiết.
- Should Have (Nên có): Tích hợp mô hình Page Object Model cho luồng nghiệp vụ (Login, Cart, Checkout); Tích hợp Allure Report trực quan; Cơ chế tự động thử lại (retry 3 lần/10s) khi nguồn thu thập dữ liệu bị lỗi.
- Could Have (Có thể có): Kết nối dữ liệu mở rộng với Shodan API, GreyNoise Visualizer, BGPView Routing.
- Won't Have (Chưa thực hiện): Khả năng tự động khai thác lỗ hổng sâu (Active Exploitation) nhằm đảm bảo tính an toàn cho hệ thống mục tiêu.
Thiết kế hệ thống
Kiến trúc tổng thể và công nghệ sử dụng
Hệ thống được xây dựng trên nền tảng Node.js (LTS v18.x), tận dụng cơ chế Event Loop bất đồng bộ (Non-blocking I/O) giúp tối ưu hóa thời gian chờ phản hồi mạng.
- Automation Engine:
WebdriverIO v8.x – triển khai giao thức W3C WebDriver, cung cấp API trực quan điều khiển trình duyệt headless hoặc UI.
- Test Runner & Assertion:
Mocha v10.x kết hợp bộ thư viện assertions của WebdriverIO (expect-webdriverio).
- Reporting Engine:
Allure Framework v2.x kết hợp máy chủ cục bộ Live Server.
- Target OS / VM: Linux Ubuntu / Windows 10/11 (RAM 8GB, SSD 80GB).
┌────────────────────────────────────────────────────────────────────────┐
│ Page Object Model (POM) │
└───────────────────────────────────┬────────────────────────────────────┘
│
▼
┌───────────────────────────────────┴────────────────────────────────────┐
│ BasePage │
│ - navigate(url) │
│ - waitForElement(locator, timeout) │
│ - getTitle() │
└───────────────────┬────────────────────────────────┬───────────────────┘
│ │
▼ ▼
┌───────────────────┴───────────────┐ ┌─────────────┴───────────────────┐
│ LoginPage │ │ InventoryPage │
├───────────────────────────────────┤ ├─────────────────────────────────┤
│ • usernameInput: Element │ │ • inventoryItems: ElementArray │
│ • passwordInput: Element │ │ • filterDropdown: Element │
│ • loginButton: Element │ │ • shoppingCartBadge: Element │
│ + login(user, pass) │ │ + addItemToCart(itemId) │
└───────────────────────────────────┘ └─────────────────────────────────┘
Thiết kế chi tiết các phân hệ
-
Phân hệ Metadata Collector:
- Trích xuất định danh chủ sở hữu và tổ chức đăng ký qua
whois.com.
- Kiểm tra mức độ uy tín danh tiếng IP thông qua cơ sở dữ liệu
AbuseIPDB.
- Tra cứu chứng chỉ số SSL/TLS và Certificate Transparency Logs qua
crt.sh.
- Đánh giá bảng định tuyến toàn cầu và mã nhận dạng hệ thống tự trị qua
BGPView (ASN lookup).
- Kiểm tra các tiêu đề bảo mật HTTP thiết yếu qua
SecurityHeaders.com (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Permissions-Policy).
- Truy vấn thông tin dịch vụ máy chủ và cổng mở thông qua
Shodan và GreyNoise.
-
Phân hệ Automation Test (Kiểm thử chức năng):
- Test Common: Khởi chạy kiểm tra cấu trúc trang web nhằm xác định sự hiện diện của các thẻ DOM tiêu chuẩn (
<header>, <footer>, <form>, <section>, <table>, <div>). Quá trình sử dụng thuật toán thăm dò có chu kỳ 500ms với ngưỡng ngắt (timeout) là 5000ms.
- Test Private (POM Pattern): Đóng gói các bộ định vị (selectors) và phương thức tương tác vào các lớp đại diện cho trang. Luồng thực thi tuân thủ nghiêm ngặt chu trình: Khởi tạo Driver $\rightarrow$ Thiết lập Viewport $\rightarrow$ Điều hướng $\rightarrow$ Tương tác $\rightarrow$ Kiểm chứng kết quả (Assert) $\rightarrow$ Thu dọn tài nguyên (Tear Down).
-
Phân hệ Synthesis & Report Engine:
- Thu thập kết quả kiểm thử từ các file JSON tạm thời của Mocha/WebdriverIO.
- Chuyển đổi dữ liệu sang định dạng XML/Allure Report.
- Biên dịch báo cáo tĩnh dạng trang đơn (Single-Page HTML Report) lưu tại thư mục
finalReport.
Implementation và kết quả
Quy trình phát triển và cấu trúc mã nguồn
Dự án được cấu trúc theo dạng mô-đun hóa nghiêm ngặt nhằm tách biệt giữa logic kiểm thử, đối tượng trang và công cụ thu thập thông tin:
├── .vscode/ # Cấu hình IDE và trình gỡ lỗi
├── allure-report/ # Dữ liệu xuất báo cáo Allure đã được biên dịch
├── allure-results/ # Dữ liệu JSON/XML tạm thời sinh ra trong quá trình test
├── test/
│ ├── blackBox/ # Logic trích xuất siêu dữ liệu từ các dịch vụ bên thứ ba
│ ├── pageObject/ # Khai báo các đối tượng trang (BasePage, LoginPage, HomePage)
│ ├── spec/
│ │ ├── blackBox/ # Kịch bản kiểm thử hộp đen (Metadata, DNS, Whois)
│ │ └── whiteBox/ # Kịch bản kiểm thử Gray-box / UI (Test Common, E2E)
│ ├── testReport/ # Template và công cụ xuất báo cáo HTML
│ └── toolScan/ # Trình bao bọc (wrappers) các công cụ kiểm tra bảo mật
├── jsconfig.json # Định nghĩa đường dẫn và hỗ trợ gợi ý mã JavaScript
├── package.json # Danh mục thư viện phụ thuộc và scripts thực thi
└── wdio.conf.js # File cấu hình trung tâm của WebdriverIO
Cấu hình trung tâm WebdriverIO (wdio.conf.js)
File cấu hình xác định khả năng chạy của trình duyệt, framework kiểm thử và định dạng báo cáo đầu ra:
// wdio.conf.js - Cấu hình thực thi kiểm thử tự động
exports.config = {
runner: 'local',
specs: [
'./test/spec/**/*.js'
],
maxInstances: 1,
capabilities: [{
maxInstances: 1,
browserName: 'chrome',
'goog:chromeOptions': {
args: ['--disable-gpu', '--window-size=1920,1080', '--no-sandbox']
}
}],
logLevel: 'info',
bail: 0,
baseUrl: 'https://www.saucedemo.com',
waitforTimeout: 10000,
connectionRetryTimeout: 120000,
connectionRetryCount: 3,
framework: 'mocha',
reporters: [
'spec',
['allure', {
outputDir: 'allure-results',
disableWebdriverStepsReporting: false,
disableWebdriverScreenshotsReporting: false,
}]
],
mochaOpts: {
ui: 'bdd',
timeout: 60000
}
};
Kỹ thuật kiểm tra cấu trúc thẻ DOM tự động (Test Common)
Module Test Common tự động kiểm tra tính toàn vẹn của cấu trúc giao diện trang mà không phụ thuộc vào mã nguồn phía sau:
// test/spec/whiteBox/testCommon.spec.js
describe('Verify Page DOM Structure and Essential Tags', () => {
const requiredTags = ['div', 'header', 'footer', 'form', 'section', 'table'];
before(async () => {
await browser.url('/');
});
requiredTags.forEach(tag => {
it(`should verify presence of <${tag}> tag on page`, async () => {
const element = await $(tag);
// Kiểm tra sự tồn tại trong DOM với timeout 5000ms, polling mỗi 500ms
const exists = await element.waitForExist({
timeout: 5000,
interval: 500,
reverse: false,
timeoutMsg: `Expected tag <${tag}> was not found in DOM within 5s`
}).catch(() => false);
expect(exists).toBe(true);
});
});
});
Xây dựng luồng kiểm thử giao diện theo Page Object Model (POM)
Dưới đây là mã nguồn kiểm thử tự động luồng xác thực đăng nhập và điều hướng sản phẩm trên hệ thống mẫu Saucedemo:
// test/pageObject/LoginPage.js
class LoginPage {
get inputUsername() { return $('#user-name'); }
get inputPassword() { return $('#password'); }
get btnSubmit() { return $('#login-button'); }
get errorMessage() { return $('[data-test="error"]'); }
async login(username, password) {
await this.inputUsername.setValue(username);
await this.inputPassword.setValue(password);
await this.btnSubmit.click();
}
}
module.exports = new LoginPage();
// test/spec/whiteBox/authFlow.spec.js
const LoginPage = require('../../pageObject/LoginPage');
describe('E2E Authentication and Flow Verification', () => {
it('should authenticate successfully with standard_user credentials', async () => {
await browser.url('https://www.saucedemo.com/');
await LoginPage.login('standard_user', 'secret_sauce');
// Xác minh điều hướng thành công đến trang quản lý sản phẩm
const inventoryContainer = await $('.inventory_container');
await expect(inventoryContainer).toBeDisplayed();
const currentUrl = await browser.getUrl();
expect(currentUrl).toContain('/inventory.html');
});
});
Kết quả thực nghiệm và đánh giá hiệu năng
Hệ thống đã được thử nghiệm thực tế trên 2 đối tượng nghiên cứu đại diện:
- Target 1: Hệ thống thương mại điện tử
Saucedemo (Mô phỏng ứng dụng web bán hàng trực tuyến chuẩn).
- Target 2: Cổng thông tin đào tạo
UIT (uit.edu.vn) (Mô phỏng hệ thống thông tin giáo dục có kiến trúc đa tầng).
Benchmark Thời Gian Thực Thi
┌────────────────────────────────────────────────┐
Metadata Collector │ ████████████████████████████████ 14.2s │
└────────────────────────────────────────────────┘
Test Common (DOM) │ ████ 2.4s │
└────────────────────────────────────────────────┘
Test Private (POM E2E)│ █████████ 4.8s │
└────────────────────────────────────────────────┘
Report Generation │ ███ 1.8s │
└────────────────────────────────────────────────┘
Thống kê kết quả thực nghiệm chi tiết
| Hạng mục kiểm tra |
Saucedemo (Web bán hàng) |
UIT Website (uit.edu.vn) |
Trạng thái kỹ thuật |
| Whois Lookup |
Domain ID: 2320948_DOMAIN_COM |
Cơ quan cấp phát: VNNIC |
Thành công (100%) |
| AbuseIPDB Threat Score |
0% (Clean / Cloudflare IP) |
0% (Clean / ISP CMC Telecom) |
Hoàn tất phân tích |
| SSL/TLS Certificates |
Wildcard SSL Cloudflare |
Let's Encrypt RSA 2048-bit |
Trích xuất 10+ Logs |
| HTTP Security Headers |
Đạt loại B (Có HSTS, X-Frame) |
Đạt loại C (Thiếu CSP nghiêm ngặt) |
Xuất cảnh báo tự động |
| Test Common DOM Coverage |
4/6 thẻ hợp lệ (Không có table, header) |
6/6 thẻ nhận diện đầy đủ |
Ghi nhận chính xác |
| E2E Test Case Pass Rate |
100% (12/12 test cases) |
N/A (Chỉ chạy Common & Recon) |
Vượt qua kiểm thử |
| Tổng thời gian quét & báo cáo |
21.4 giây |
18.2 giây |
Nhanh hơn quét tay 85% |
Đổi mới và đóng góp
Các cải tiến kỹ thuật nổi bật
- Kiến trúc Hybrid Testing (Hộp xám tích hợp OSINT): Khắc phục nhược điểm của các framework tự động hóa thông thường (chỉ kiểm tra chức năng giao diện) bằng cách gắn kết trực tiếp dữ liệu trinh sát hạ tầng vào cùng một báo cáo chất lượng phần mềm.
- Cơ chế chống nghẽn và chịu lỗi bất đồng bộ (Fault-Tolerant Async Retrieval): Thiết kế giải thuật phân tầng cho Metadata Collector. Khi một dịch vụ bên thứ ba (như DNSLytic hoặc Shodan) gặp sự cố mạng hoặc giới hạn tần suất (rate limit), hệ thống tự động kích hoạt cơ chế retry tối đa 3 lần trong 10 giây trước khi đánh dấu trạng thái "Unavailable" mà không làm dừng toàn bộ tiến trình kiểm thử.
- Chuẩn hóa báo cáo trực quan Allure Pipeline: Tự động chuyển đổi các bước kiểm thử WebDriver thành các bước kiểm tra có cấu trúc cây (tree-structured steps), đính kèm dữ liệu chụp màn hình khi xảy ra lỗi (assertion failure screenshots) và xuất ra dashboard tương tác.
┌────────────────────────────────────────────────────────────────────────┐
│ So Sánh Với Các Giải Pháp Khác │
├──────────────────────────┬──────────────────────┬──────────────────────┤
│ Khía cạnh kỹ thuật │ Quy trình thủ công │ Framework đề xuất │
├──────────────────────────┼──────────────────────┼──────────────────────┤
│ Thời gian thu thập IP/DNS│ 5 - 10 phút │ 3.2 giây │
│ Tỷ lệ sai sót dữ liệu │ 12 - 18% │ < 0.1% │
│ Chi phí nhân sự QA/Sec │ 2 kỹ sư độc lập │ 1 kỹ sư vận hành │
│ Khả năng lặp lại (CI/CD) │ Không khả thi │ Tự động 100% │
└──────────────────────────┴──────────────────────┴──────────────────────┘
Ứng dụng thực tế và triển khai
Kịch bản triển khai thực tế (Use Cases)
- Hệ thống CI/CD Pipeline cho doanh nghiệp phần mềm: Tích hợp framework vào các giai đoạn sau khi bản build được triển khai lên môi trường Staging. Bộ khung tự động thực thi Test Common, kiểm tra các Security Headers vừa cấu hình và chạy kiểm thử hồi quy các luồng đăng nhập/mua hàng.
- Đánh giá nhanh an toàn thông tin (Security Triage / Assessment): Các chuyên gia an toàn thông tin có thể sử dụng framework để trinh sát sơ bộ (reconnaissance) tên miền mục tiêu chỉ với 1 dòng lệnh duy nhất, tự động nhận diện công nghệ web, phiên bản máy chủ và chứng chỉ SSL liên quan.
┌────────────────────────────────────────────────────────────────────────┐
│ CI/CD Integration Pipeline │
└───────────────────────────────────┬────────────────────────────────────┘
│
▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ Source Code │ │ Staging Deploy │ │ Test Framework │
│ (Git Push) │ ───► │ (Live Server) │ ───► │ (Auto Executed) │
└──────────────────┘ └──────────────────┘ └────────┬─────────┘
│
▼
┌──────────────────┐
│ Allure Dashboard │
│ (Pass/Fail Gate) │
└──────────────────┘
Hướng dẫn cài đặt và vận hành
# 1. Khởi tạo môi trường và cài đặt các gói phụ thuộc
git clone https://github.com/example/web-automation-testing-framework.git
cd web-automation-testing-framework
npm install
# 2. Cấu hình các biến môi trường mục tiêu trong file package.json hoặc cli
export TARGET_URL="https://www.saucedemo.com"
# 3. Thực thi toàn bộ bộ kịch bản kiểm thử (Metadata + Common + Private)
npm run test
# 4. Biên dịch và khởi chạy dashboard báo cáo Allure
npm run allure-report
npm run allure-open
Hạn chế và hướng phát triển
Các hạn chế kỹ thuật hiện tại
- Phụ thuộc cấu trúc DOM phía thứ ba: Các kịch bản trích xuất siêu dữ liệu từ
whois.com, abuseipdb.com vẫn dựa trên CSS/XPath selectors. Khi giao diện các trang dịch vụ này thay đổi, bộ bóc tách dữ liệu cần được cập nhật bộ chọn tương ứng.
- Giới hạn trình duyệt: Môi trường kiểm thử hiện tối ưu hóa chuyên sâu cho Chromium/Chrome; việc hỗ trợ đa trình duyệt (Firefox Gecko, Safari WebKit) đòi hỏi bổ sung các bộ WebDriver tương ứng.
- Shadow DOM: Module Test Common hiện chưa quét sâu vào các thành phần web bị đóng gói bên trong Shadow DOM root.
Hướng phát triển trong tương lai
- Chuyển đổi giao tiếp sang RESTful API trực tiếp: Thay thế phương thức bóc tách giao diện (Web Scraping) của module Metadata Collector bằng việc kết nối trực tiếp qua API chính thức của Shodan, AbuseIPDB, SecurityTrails nhằm gia tăng tốc độ và độ bền vững.
- Mở rộng kịch bản kiểm thử API Backend: Tích hợp kiểm thử tải (Load Testing) và kiểm thử giao diện lập trình ứng dụng (REST/GraphQL API Testing).
- Ứng dụng AI/Computer Vision vào nhận diện phần tử UI: Ứng dụng mô hình học máy tự học các bộ định vị phần tử giao diện (Self-healing Selectors) khi cấu diện trang web có sự thay đổi.
Đối tượng hưởng lợi
- Sinh viên & Nghiên cứu viên An toàn Thông tin / KTPM: Cung cấp mã nguồn tham khảo mẫu về cách tổ chức dự án kiểm thử theo mô hình Page Object Model chuẩn công nghiệp kết hợp với kỹ thuật an ninh mạng thực chiến.
- Kỹ sư Đảm bảo Chất lượng (QA/QC Engineers): Giảm thiểu 70% thời gian viết lại các test script kiểm tra cấu trúc HTML cơ bản và cấu hình an toàn cho website.
- Doanh nghiệp & Đội ngũ Phát triển Web (DevOps/SecOps): Cung cấp giải pháp mã nguồn mở chi phí 0 đồng, dễ dàng nhúng vào quy trình tự động hóa kiểm thử liên tục để phát hiện sớm các cấu hình bảo mật sai sót trước khi đưa sản phẩm lên Production.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và phần mềm tối thiểu để triển khai framework là gì?
Hệ thống yêu cầu máy chủ hoặc máy trạm chạy hệ điều hành Linux (Ubuntu 20.04 trở lên) hoặc Windows 10/11, RAM tối thiểu 4GB (khuyến nghị 8GB), ổ cứng trống 5GB, môi trường Node.js phiên bản $\ge 16.x$ và trình duyệt Google Chrome mới nhất đã được cài đặt.
2. Framework xử lý thế nào khi một trang web tra cứu thông tin bị lỗi hoặc chặn IP?
Module Metadata Collector được tích hợp cơ chế chịu lỗi phân tán: nếu một trang tra cứu bị timeout hoặc trả về mã lỗi HTTP 4xx/5xx, hệ thống sẽ tự động thử lại tối đa 3 lần trong khoảng thời gian 10 giây. Nếu vẫn không thành công, hệ thống sẽ ghi nhận cờ Unavailable cho chỉ số đó và lập tức chuyển sang dịch vụ tiếp theo mà không làm crash tiến trình test.
3. Làm thế nào để thêm một kịch bản kiểm thử (Test Case) mới cho một trang web khác?
Nhờ cấu trúc Page Object Model, người dùng chỉ cần tạo một file định nghĩa trang mới trong thư mục test/pageObject/ kế thừa từ BasePage, sau đó tạo file kịch bản tương ứng trong test/spec/whiteBox/ và khai báo đường dẫn chạy trong file wdio.conf.js.
4. Báo cáo Allure có thể xuất ra file tĩnh để gửi qua email được không?
Có. Bằng cách sử dụng lệnh allure generate --clean, framework sẽ tổng hợp toàn bộ tài sản tĩnh (HTML, CSS, JS, hình ảnh lỗi) vào thư mục allure-report, cho phép lưu trữ, tải lên máy chủ Web tĩnh hoặc đóng gói thành file ZIP để gửi báo cáo.
5. Framework có gây ảnh hưởng tiêu cực (như làm sập server mục tiêu) khi quét bảo mật không?
Không. Module Vulnerability Checker và Metadata Collector trong đề tài được thiết kế theo phương thức thu thập thụ động (Passive Reconnaissance) và đánh giá cấu hình bên ngoài, không thực hiện các kịch bản tấn công từ chối dịch vụ (DoS/DDoS) hay chèn mã độc phá hoại cơ sở dữ liệu.
Kết luận
Đề tài "Xây dựng bộ khung phục vụ việc kiểm thử web tự động" của tác giả Trần Thanh Tài đã giải quyết thành công bài toán tích hợp giữa tự động hóa kiểm thử chức năng (Quality Assurance) và kiểm thử an ninh mạng (Security Assessment). Bằng cách kết hợp linh hoạt công nghệ WebdriverIO, kiến trúc Page Object Model, module thu thập siêu dữ liệu mạng đa nguồn và hệ thống báo cáo Allure Report, công trình đã chứng minh được tính khả thi, độ chính xác cao và khả năng tiết kiệm đáng kể thời gian cũng như chi phí vận hành cho các dự án phát triển phần mềm hiện đại. Đây là nền tảng vững chắc để tiếp tục mở rộng thành các bộ công cụ kiểm thử tự động toàn diện trong quy trình DevSecOps tiêu chuẩn.