Header image

Crawl Website Đơn Giản Với Postman

20/12/2022

2.77k

Mở đầu

Trong kiểm thử API, chúng ta không xa lạ gì với Postman, một tool kiểm thử API rất phổ biến và được sử dụng trong nhiều trường hợp khác nhau. Nếu như bạn chưa rõ API là gì, có thể tham khảo lại bài viết giới thiệu về API cơ bản của mình tại ĐÂY.

Trong bài viết này, mình sẽ hướng dẫn các bạn cách crawl đơn giản một website bằng Postman nhằm kiểm tra xem các link hay hình ảnh có trong website đó có bị die hay lỗi gì không? 

Crawl Website là việc lấy thông tin từ website , trích xuất ra những thông tin người sử dụng cần, đồng thời cũng tìm những link có trong trang web đó và tự động truy cập vào những link đó. Quá trình đó sẽ lặp đi lặp lại đến khi thu thập đủ thông tin người dùng cần. 

Ví dụ dự án của bạn có một website như Landing Page hoặc trang chủ chẳng hạn, và trong trang lại có các hình ảnh, các hyperlink dẫn tới các trang con hoặc các website khác. Sau một thời gian bạn cần kiểm tra lại xem những hyperlink đó có còn hoạt động hay không. Thay vì phải click thủ công từng link một thì Postman có thể giúp bạn đơn giản hoá và tiết kiệm thời gian hơn cho việc này rất nhiều. Trước khi đi sâu vào bài viết, bạn cần có một số kiến thức về các khái niệm dưới đây:

  • Script trong Postman
  • Runner trong Postman
  • Có một ít kiến thức cơ bản về Javascript

Khâu chuẩn bị

Để bắt đầu, máy tính của bạn cần cài đặt Postman, tất nhiên rồi. Sau đó chúng ta sẽ tạo một Collection chứa hai Request với tên bất kỳ và hai biến collection. Trong ví dụ dưới đây, mình sẽ tạo Collection tên Crawl Website cùng 2 request:

  • Input check: Request này dùng để kiểm tra đầu vào trước khi crawl.
  • URL check: Request chính dùng để crawl website.
  • 2 biến collection gồm có: 
    • rootUrl: URL gốc của trang cần check
    • startUrl: URL bắt đầu khi chạy test, ở đây mình sẽ để rootUrl và startUrl chung 1 URL

Input check

Input check

Giờ chúng ta cùng thiết lập cho request đầu tiên. Ở request này, mình sẽ code tại phần Pre-request nhằm kiểm tra các đầu vào trong quá trình crawl website. Dưới đây là danh sách các function mình cần tạo trong request này

  • Kiểm tra danh sách biến có trong collection
  • Kiểm tra giá trị URL gán vào biến có định dạng hợp lệ
  • Tạo biến Global để sử dụng cho request tiếp theo

Như mình đã nói ở phần mở đầu, các bạn cần có kiến thức cơ bản về javascript để có thể hiểu hơn và tuỳ biến lại code phù hợp với nhu cầu của dự án. Mình sẽ có gắng giải thích đơn giản để những bạn ít biết về code vẫn có thể sử dụng được.

Ở request này, URL của request chúng ta sẽ để biến {{startUrl}} với phương thức là GET.

Input check

Kiểm tra danh sách biến có trong collection

Trước khi kiểm tra được danh sách các biến có trong collection, ta sẽ chuyển các biến đó thành object và gán vào biến postmanVariables

<strong>const</strong> postmanVariables = pm.collectionVariables.toObject();

Sau đó ta kiểm tra các biến cần sử dụng đã có trong collection hay chưa

pm.expect(postmanVariables).to.have.all.keys("startUrl", "rootUrl");

Kiểm tra giá trị URL gán vào biến có định dạng hợp lệ

Để kiểm tra giá trị URL gán vào biến có định dạng hợp lệ, ta sẽ sử dụng Regex. Đầu tiên ta sẽ gán định dạng URL viết dưới dạng regex vào biến urlRegex và so sánh các giá trị URL trong 2 biến collection là startURL và rootURL có giống với urlRegex hay không.

const urlRegex = /^https?:\/\//;
pm.expect(postmanVariables.startUrl, 'startUrl does not match URL pattern').to.match(urlRegex);
pm.expect(postmanVariables.rootUrl, 'rootUrl does not match URL pattern').to.match(urlRegex);

Tạo biến Global để sử dụng cho request tiếp theo

Kết thúc script mình sẽ tạo biến 3 biến là link, url, index cho request tiếp theo. Ở đây mình sử dụng biến Global để cho dễ truy cập và lấy giá trị giữa các request, tuỳ thuộc vào tính chất dự án, bạn có thể sửa lại thành biến cho 1 environment cũng không có vấn đề gì nhé. 

  • links: Mảng các link ta lấy được khi crawl một trang
pm.globals.set("links", "[]");
  • url: URL đang test
pm.globals.set("url", postmanVariables.startUrl);
  • index: Số thứ tự của URL cần test trong mảng links ta crawl được
pm.globals.set("index", -1);

URL check

URL check

Sau khi thiết lập xong request Pre-check, ta chuyển sang request URL check, đây sẽ là request chạy chính của mình. 

Ở request này, URL của request chúng ta sẽ để biến {{url}} với phương thức là GET.

URL check

Dưới đây là danh sách các function sẽ sử dụng trong request này:

  • Kiểm tra link lỗi
  • Lấy các hyperlink có trong website
  • Lọc các link không liên và lặp crawl
  • Kết thúc vòng lặp

Trước khi bắt đầu thì ta sẽ gán giá trị URL của 2 biến collection và 3 biến Global thành các biến Local cho dễ sử dụng

const startUrl = pm.collectionVariables.get("startUrl");
const rootUrl = pm.collectionVariables.get("rootUrl");
const links = JSON.parse(pm.globals.get("links"));
const currentUrl = pm.globals.get("url");
const currentIndex = parseInt(pm.globals.get("index"));

Kiểm tra link lỗi

Giờ ta sẽ tạo 1 hàm để kiểm tra xem link mình lấy về có bị lỗi hay không. Hiện tại thì link chúng ta test ban đầu chính là URL bạn gán vào biến startUrl.

pm.test(`Link to "${currentUrl}" works`, function () {
    try {
        pm.response.to.not.be.error;
    }
    catch (error) {
        console.log(`FAILED :: ${currentUrl}`);
        console.log(`FAILED :: status code is ${pm.response.code}`);
        
        throw error;
    }
});

Trong đó hàm try để kiểm tra xem link đó có trả về response lỗi hay không và hàm catch dùng để log lại thông tin lỗi. Tuỳ vào nhu cầu bạn có thể log thêm những thông tin khác bạn muốn kiểm tra nhé.

Lấy các hyperlink có trong webiste

Sau khi ta đã kiểm tra link ban đầu không bị lỗi, ta sẽ chạy hàm lấy các hyperlink có trong URL đó như sau:

if (currentUrl.includes(startUrl)) {
    const $ = cheerio.load(pm.response.text());
    
    $("a").each(function () {
        const newLink = $(this).attr("href");
        
        if (!links.includes(newLink)) {
            links.push(newLink);
        }
    });

    $("img").each(function () {
        const newLink = $(this).attr("src");
        
        if (!links.includes(newLink)) {
            links.push(newLink);
        }
    });
}

Để lấy dữ liệu từ trang web, ta sẽ crawl HTML của web đó và tìm kiếm thông tin ta cần từ các tag có trong HTML lấy về. Trong bài viết này mình sẽ thư viện Cheerio để lấy HTML của website cần test và gán nó vào biến $. Sau khi có được HTML rồi, ta sẽ tạo vòng lặp each để tìm các tag <a> và tag <img>, sau đó  lấy các URL trong attribute “href” ở trong <a> và “src” ở trong <img>. Tiếp đến ta sẽ gán nó vào biến newLink. Ngoài ra tuỳ thuộc vào nhu cầu và tính chất của trang web, các bạn có thể bổ sung thêm các thẻ và attribute có chứa URL cần test như <link> chẳng hạn.

Vì ta chỉ cần check mỗi link 1 lần nên mình sẽ viết thêm 1 hàm if để kiểm tra xem URL lấy được đã được lấy trước đó hay chưa, nếu chưa thì sẽ bỏ link đó vào mảng links. Ở bước này bạn cũng có thể bổ sung thêm các điều kiện khác để check link lấy được tuỳ thuộc vào nhu cầu của bạn như không lấy link ads hay action link,…

Lọc các link không liên quan và lặp crawl

Chúng ta đã đi được hơn nữa quãng đường rồi. Sau khi lấy được các link có trong web và bỏ vào mảng links, giờ ta sẽ viết 1 function để trích xuất các link đó và chạy tiếp cũng như lọc những link không liên quan.

const [nextUrl, nextIndex] = getNextUrlAndIndex(links, currentIndex);
function getNextUrlAndIndex (links = [], index = 0) {
    const nextIndex = index + 1;
    
    if (links.length - 1 === nextIndex) {
        return [];
    }
    
    const linkUrl = links[nextIndex];
    
    if (!linkUrl) {
        // Skip null links
        console.log('Encountered a null link.');
        
        // Try to get the next link
        return getNextUrlAndIndex(links, nextIndex);
    }
    
    if (/^https?:\/\//.test(linkUrl)) {
        // Return if not a relative link
        return [linkUrl, nextIndex];
    }
    
    // If the link is relative, prepend with rootUrl
    const cleanedRoot = rootUrl.replace(/\/$/, '');
    const cleanedPath = linkUrl.replace(/^[\.\/]+/, '');
    
    return [[cleanedRoot, cleanedPath].join('/'), nextIndex];
}

Function này ta sẽ sử dụng biến links chứa mảng link đã lấy và biến index nhằm trích xuất vị trí link ta muốn chạy tiếp.

Hàm if đầu tiên sẽ check nếu như ta chạy xong hết mảng link thì sẽ trả về mảng rỗng.

Hàm if thứ 2 sẽ kiểm tra loại trừ các loại link mà bạn không muốn test, ở đây mình sẽ loại trừ null link, ngoài ra bạn có thể bổ sung thêm các loại link khác như link download chẳng hạn.

Hàm if tiếp theo sẽ dùng regex để kiểm tra xem link đó có nằm trong các trang con của mình hay không. Mình sẽ check bằng logic nếu như đầu URL đó giống với biến rootUrl thì sẽ truy cập tiếp vào trang đó và lấy tiếp các URL có trong trang con và lặp lại đến khi nào không còn tìm thấy nữa thì thôi.

Kết thúc vòng lặp

Cuối cùng chúng ta sẽ chạy 1 hàm if để kết thúc vòng lặp crawl này

if (nextUrl) {
    // Update global variables
    pm.globals.set("links", JSON.stringify(links));
    pm.globals.set("url", nextUrl);
    pm.globals.set("index", nextIndex);

    postman.setNextRequest("Check URL");
}
else {
    console.log("No more links to check!");
    
    // Clear global variables
    pm.globals.clear("links");
    pm.globals.clear("url");
    pm.globals.clear("index");
    
    // End the loop
    postman.setNextRequest(null);
}

Trong hàm if này nếu như vẫn còn get được link từ website thì sẽ tiếp tục gán vào biến Local để chạy tiếp bằng hàm postman.setNextRequest(“Check URL”);. Nếu như hết link thì mình sẽ đặt lệnh clear biến global để cho gọn phần biến tránh ảnh hưởng cho những lần chạy sau và set Next Request về null để kết thúc vòng lặp.

Kết

Vậy là chúng ta đã hoàn thành một collection crawl website đơn giản bằng Postman. Hi vọng các bạn có thể áp dụng được vào trong dự án của mình và hẹn gặp các bạn ở những bài viết tiếp theo.

Reference

Crawl Website

Regex

Postman Collection

Related Blog

Our culture

+0

    Tour “Đại lộ QC” – Hành trình khám phá nghề kiểm thử cùng ST

    Chào mừng bạn đến với series “Chuyện ngành chuyện nghề - Team QC”, nơi chúng mình kể lại những câu chuyện thật nhất về hành trình làm nghề, những niềm vui và… những pha “dở khóc dở cười” phía sau mỗi bản build. Để bắt đầu nghề QC thì không khó, nhưng để trở thành QC giỏi không phải điều dễ dàng. Trước khi lên đường khám phá, hãy cùng mình “bóc tem” một vài hiểu lầm kinh điển về nghề QC nhé! Có phải bạn đã từng nghĩ rằng: - Ai cũng học QC được? - Ai cũng làm QC được? - QC chỉ cần bấm bấm test test và report bug? Vậy thì hôm nay, hãy cùng gặp gỡ hướng dẫn viên du lịch - Nguyễn Quang Vũ (QC Team)  - người sẽ đưa các bạn tham quan một con đường huyền thoại mang tên “Đại lộ QC”. Thắt dây an toàn, cầm vé trên tay và chúng ta sẽ xuất phát ! Km 0 – Cổng “Khởi Đầu” Trước khi trở thành “người gác cổng chất lượng”, mỗi QC đều bắt đầu bằng giai đoạn… bấm mọi thứ có thể bấm. Đây là lúc bạn làm quen sản phẩm, hiểu người dùng, và tập làm bạn với bug. Bạn sẽ cần mô phỏng hành vi người dùng, bấm - nhìn - ghi để xem sản phẩm có chạy đúng như mong đợi. Tưởng đơn giản mà không hề đơn giản: phải quan sát và đặt câu hỏi đúng chỗ. ❓ Vì sao ai cũng nên dừng ở đây? - Đây là nơi hình thành tư duy kiểm thử và hiểu quy trình phát triển. Như học lái xe: nắm vững gương, đèn, phanh rồi mới tính chuyện đổ đèo. 💡 Mẹo sống còn: - Học cách viết test case rõ ràng. - Biết phân biệt bug vs feature (phao cứu sinh tình bạn với dev). - Ghi chép gọn gàng, ảnh/chụp màn hình là tem visa cho mỗi phát hiện. 🔌 Trạm tiếp năng lượng:  Kiểm thử các luồng “hơi đời” như mất mạng, pin 2%, nhập emoji vào ô số, đổi ngôn ngữ giữa chừng. Đây là nơi rất kích thích sự tò mò của các bạn! Km 10 – Ngã rẽ “Phát Triển” Ở Km 10, bạn chọn đường mình muốn đi, miễn đi sâu một nhánh: ⬅️ Nếu bạn chọn làn trái: Automation Test, nơi còn gọi là “Làng Code”. Bạn sẽ nhận được: - Bản đồ: biết code và tư duy code để tự động hoá những thứ lặp lại. - Điểm check-in: Script chạy qua đêm, CI/CD, báo cáo xanh lè sáng sớm. - Quà lưu niệm: Khả năng đọc API, log, mock data, dựng pipeline nhoáng cái là xong. ➡️ Còn nếu bạn chọn làn phải: Performance Test, được ví như “Thung lũng Hạ Tầng”. Bạn sẽ có 1 chuyến trải nghiệm thú vị khác: - Bản đồ: cần hiểu hệ thống, kiến trúc, infra logic; đo độ bền, độ tải, độ chịu nhiệt. - Điểm check-in: JMeter/K6, profiling, bottleneck, tuning database. - Quà lưu niệm: Biểu đồ đẹp như tranh, nơi có lời giải cho câu hỏi vì sao “chạy một mình thì nhanh, có người xem livestream thì… khựng”. 📍 Nguyên tắc vàng của Km 10:  “Biết nhiều một chút, nhưng phải biết sâu một phần.” Có chiều rộng để phối hợp, có chiều sâu để gánh trách nhiệm.  Ở đoạn đường này, QC không chỉ tìm lỗi mà còn đề xuất cải tiến, thiết kế trải nghiệm, góp phần tạo ra chất lượng toàn diện. Related Blogs: > Must-Have Tools for Business Analyst > How to Step Out of the “Forwarder” Shadow? Km 25 – Quảng trường “Tư Duy Làm Chủ” Sau một thời gian quen tay với việc test bug và viết test case, bạn sẽ nhận ra: QC không chỉ là người tìm lỗi, mà còn là người giúp sản phẩm tốt lên từng ngày. Đây là lúc bạn bắt đầu bước ra khỏi “vùng kiểm thử” quen thuộc để nhìn sản phẩm ở góc độ rộng hơn: người dùng đang cần gì, team đang gặp khó ở đâu, và giá trị thực mà sản phẩm mang lại là gì. Bạn bắt đầu làm gì? - Điều phối nhịp sprint, push tiến độ, sắp hàng ưu tiên, nhìn rủi ro bằng ống nhòm và nói chuyện người dùng như hàng xóm thân. ❓ Để ở lại quảng trường này lâu, bạn cần: - Hiểu quy trình từ yêu cầu → phát triển → phát hành. - Nắm sản phẩm & người dùng hơn cả tên thú cưng nhà mình. - “Thấu” team sản xuất: dev cần gì, design lo gì, PM sợ gì, khách hàng kỳ vọng gì. Bài học đường dài: QC giỏi có “la bàn hệ thống” - biết hướng về giá trị người dùng, không chỉ về “màu xanh của report”. Km 40 – Ghé thăm đặc khu “ST QC”  và Về đích  Sau khi băng qua những chặng đường đầy bug và deadline, mời bạn ghé trạm dừng chân tại đặc khu “ST QC”. Đây là nơi những người làm kiểm thử thật sự trưởng thành và tìm thấy hướng đi cho riêng mình. Tại đây, bạn sẽ được “đi tour” qua đủ mọi cung đường nghề QC. Từ Manual Test đến Automation hay Performance Testing, thử sức để biết bản thân phù hợp với hướng nào. Ở ST luôn được khuyến khích học hỏi, có mentor tận tình chỉ đường, và rất nhiều ngã rẽ nghề nghiệp cho bạn mở rộng: từ QA, QC Technical Lead, cho đến BA hay PM. Chúng mình tin vào văn hoá “đi thực chiến trước, giáo trình hoá sau”. Nghĩa là không học để biết, mà học để dùng, để làm cho sản phẩm tốt hơn mỗi ngày. Vé VIP cho người mới Mentor thâm niên luôn đồng hành cùng bạn.Starter Kit “xịn”: test template, bug report, release checklist, sample pipeline.Nhớ câu thần chú:  “Chất lượng là thói quen mỗi ngày, không phải phép màu cuối sprint.” Phụ lục cho hành khách yêu khám phá. Trên “Đại lộ QC”, bạn sẽ bắt gặp những biển báo quen thuộc: ⚠️ Cảnh báo dốc: Thiếu kiên trì, kỷ luật hay tư duy hệ thống rất dễ tụt dốc.🆘 Làn khẩn cấp: Khi hoang mang, hãy quay lại acceptance criteria và dữ liệu gốc.🏥 Trạm y tế: Nếu burnout, dừng lại nghỉ, xem lại ưu tiên và xin hỗ trợ đoàn mình không ai bị bỏ lại. Combo “Túi đồ nghề QC” Checklist / Test Case, Mindmap risk, Template Bug Report, Common Edge Case, Script tiện tay. Trang bị đủ hành trang để bạn tự tin băng qua mọi sprint nhé. “Đại lộ QC” không phải đường cao tốc thẳng tắp, mà nó còn có dốc, có đèo, có khúc cua tay áo. Nhưng đổi lại là một hành trình đáng nhớ: sản phẩm chạy mượt, người dùng mỉm cười, team tin tưởng nhau hơn. Con đường này dễ xuất phát nhưng khó về đích. Vì thế hãy  luôn vững tin với chiếc vé mang tên kiên trì, kỷ luật, tư duy hệ thống, chúng sẽ giúp bạn đến được nơi mình muốn. Nếu bạn đã sẵn sàng, mời lên xe chuyến sau. Hướng dẫn viên “trái ngành” vẫn ở đây, tay trái cầm bản đồ, tay phải cầm… checklist. Hẹn gặp bạn ở một cột mốc mới trên Đại lộ QC!

    12/11/2025

    74

    Our culture

    +0

      Tour “Đại lộ QC” – Hành trình khám phá nghề kiểm thử cùng ST

      12/11/2025

      74

      Knowledge

      Others

      +0

        Must-Have Tools for Business Analyst

        In today’s fast-evolving tech world, working smart has become even more crucial than working hard. In IT environments — and in any modern business — managing a growing amount of complex work can’t rely solely on memory, scattered emails, or individual Excel sheets. One of the most effective ways to boost productivity intelligently is through the use of supporting tools.This isn’t just a trend anymore — it’s quickly becoming the standard in many companies. For Business Analysts (BAs), the right tools don’t just make you more efficient — they make you more professional. Let’s explore some essential tools every BA should have in their toolkit 👇 1. Draw.io A free, intuitive diagramming tool to visualize processes, systems, data, or ideas.It’s ideal for modeling workflows and mapping business logic. Key Features: Free and no registration required — just go to diagrams.net.Flexible storage — save files locally or to Google Drive, OneDrive, GitHub, GitLab.Rich icon library — supports UML, BPMN, flowcharts, network diagrams, and more.UML & BPMN ready — perfect for use cases, activity diagrams, and business flows.Easy collaboration when stored on shared drives.Cross-platform — available on web, desktop, and as a VS Code extension. Limitations: Real-time collaboration isn’t as strong as tools like Figma.Performance may drop with very large or complex diagrams. 2. Miro Miro is an online collaborative whiteboard designed for teams to brainstorm, plan, and visualize ideas in real-time. Key Features: Infinite canvas — visualize projects without space limits.Real-time collaboration — comment, vote, and co-edit instantly.Rich templates — includes user story maps, journey maps, mindmaps, Kanban boards, and wireframes.Integrations — connects with Jira, Confluence, Slack, Teams, Google Drive, and more.Great for mapping processes, use cases, roadmaps, or even UI mockups. Limitations: Free plan limits the number of boards.Large boards with many assets may slow down performance. 3. Trello Trello is a Kanban-based task management tool that helps teams visualize and track progress easily. Key Features: Simple drag-and-drop interface.Highly customizable boards, lists, and cards.Each card can include checklists, attachments, labels, due dates, and assignees.Seamless integration with Google Drive, Slack, Jira, GitHub, and others.Real-time updates across all team members.Works on web, desktop, and mobile. Limitations: Free plan limits the number of integrations (Power-Ups). 4. Jira Jira by Atlassian is the industry-standard project management tool for Agile teams. Key Features: Built for Scrum and Kanban teams.Highly customizable workflows, fields, and automation rules.Transparent tracking of tasks, blockers, and progress.Integrates with hundreds of DevOps, CI/CD, and testing tools.Scales from individual tasks to enterprise-level project portfolios. Limitations: Steep learning curve for beginners.Can be costly for large teams.Requires experienced admins for setup and maintenance.May run slower on large, complex projects. 5. Typescale A handy tool for generating consistent typography systems (font size, line height, spacing) for web or app design. Key Features: Automates type scale creation.Multiple presets and flexible customizations.Preview and export CSS directly.Ensures responsive and accessible typography. Limitations: Not suitable for all design systems or content types.Limited control over detailed responsive behavior. 6. Adobe Color An intuitive color palette generator to create harmonious and accessible color schemes. Key Features: Easy-to-use color wheel with real-time updates.Auto-generates color harmonies based on color theory.Supports HEX, RGB, and CMYK formats.Integrates seamlessly with Adobe tools like Photoshop, Illustrator, and XD.Community palette sharing and inspiration gallery. Limitations: Contrast still needs manual checking for accessibility.Some auto-generated palettes may need manual tweaking.Colors can look different on various screens. 7. Contrast Checker A simple but vital tool to ensure readability and accessibility by checking text and background contrast per WCAG standards. Key Features: Simple interface — input colors and get instant feedback.Ensures compliance with accessibility guidelines.Real-time updates as you adjust colors.Bridges design and development — everyone can validate contrast easily. Limitations: Doesn’t reflect results accurately for complex backgrounds.Doesn’t account for font size, spacing, or user testing conditions. Why Use These Tools? Transparency: Everything — from tasks to deadlines — is clearly tracked. For example, Trello helps answer questions like “Who’s doing what?” and “What’s the current status?”Visualization: Tools like Draw.io help transform abstract logic into clear, easy-to-understand diagrams.Collaboration: Integrating tools like Miro, Jira, or Slack ensures everyone stays aligned and reduces miscommunication. Tips for Getting Started Start small: You don’t need every tool at once. Begin with Jira or Trello, then expand.Build shared habits: Tools only work when the whole team uses them consistently.Learn by doing: Explore free trials and tutorials, then apply them directly in your current projects.Stay updated: Tools evolve fast — keeping up helps you stay ahead. Using tools isn’t just about having more software — it’s about changing the way we work.They make our processes more transparent, our teamwork more seamless, and our output more efficient. For Business Analysts, these tools are not just “nice-to-have” — they’re what turn you from a task executor into a strategic enabler for your team. Read more related articles from SupremeTech!

        31/10/2025

        164

        Sang Ngo

        Knowledge

        +1

        • Others

        Must-Have Tools for Business Analyst

        31/10/2025

        164

        Sang Ngo

        Knowledge

        Others

        Our culture

        +0

          How to Step Out of the “Forwarder” Shadow?

          Have you ever, as a Comtor or Business Analyst (BA), felt like… a messenger? Every time the client asks something, you turn to the team, copy their answer, translate it, and send it back — just passing messages instead of actually owning the conversation. At SupremeTech, our BA team jokingly calls this role the “Professional Forwarder.” Through many “lost in translation” moments, we’ve learned valuable lessons on how to step out of that shadow — to become real connectors between the client and the team. Let’s hear from our BA team as they share practical tips to help you move beyond being a “forwarder” drawn directly from real project experience. Signs You Might Be Forwarding Too Much 1. The classic line: “Let me check with the team.”It’s not wrong — but if you’re saying it too often, it might mean you don’t fully understand the issue. 2. Lack of confidence in meetings: Many new BAs struggle with open-ended questions. When you don’t fully understand the product, you can’t confidently answer questions from both the client and your internal team. The PM asks about progress, you look at the Sprint Backlog full of numbers — and still don’t know where to start. 3. Avoiding technical talk: The moment you hear technical terms, you “pass the ball” to the PTL — without really understanding what’s being discussed. 3 Steps to Escape the “Forwarder Manager” Role So, how can you move from being a Forwarder to becoming a true communicator — someone who understands, connects, and leads discussions effectively? Here are three simple but powerful steps you can start practicing right away: 1. Before Forwarding, Ask Yourself: Do I understand at least 70% of this content?Have I tried to reproduce the bug, test the feature in the DEV environment, or explore the possible cause myself?If I were the dev/tester receiving this message, would I have enough context to understand it?Can I classify the issue — is it about UI/UX, logic, data, or business flow?Can I try to answer part of it first, then confirm later? 👉 This habit helps you learn something new every day, instead of just finishing tasks every day. 2. In Every Meeting – Observe and Lead What is the team really discussing? Do I understand the big picture?If the conversation is technical, how does it relate to the overall context?Is anyone confused? Can I help clarify? If you find yourself unsure about all three — take notes, take notes, and take notes.Meeting minutes and your own notes will help you retain details and follow up later for deeper understanding. 3. Build Strong Foundations Whether you’re a Comtor, BA, or PO, a solid foundation in product knowledge, business logic, and basic technical understanding helps you make better decisions — and lead your team effectively. Don’t get stuck thinking “that’s not my task.” Instead, learn actively by: Reading about technical keywords used in your project.Redrawing the business flow yourself to truly understand it.Asking devs, QCs, PTLs, and clients for their perspectives.Finding a technical advisor who can review your understanding and answer your tech-related questions. Every time you’re about to forward a message, pause for a minute — dig a little deeper.Each pause adds to your knowledge and analytical mindset. These small daily efforts will sharpen your skills and confidence — helping you grow not only as a professional BA, but also as a potential Project Leader who truly adds value to the team.

          31/10/2025

          174

          BA Team

          Knowledge

          +2

          • Others
          • Our culture

          How to Step Out of the “Forwarder” Shadow?

          31/10/2025

          174

          BA Team

          Team Người Việc: Winning with AI-Assisted Development at SupremeTech

          AI

          AI-assisted development

          +0

            How Team Người Việc Won SupremeTech’s AI Hackathon 2025 with AI-Assisted Development and Agile Thinking

            24 hours. 10 teams. Countless lines of code. One team claimed the spotlight and took half of the 100 million VND prize pool. SupremeTech’s first-ever AI Hackathon was more than just a competition, it was a test of endurance, creativity, and teamwork. For one intense day and night, our participants pushed the limits of AI-assisted development, turning raw ideas into functioning prototypes under extreme time pressure. Among them, three teams rose above the rest. Their solutions not only showcased strong technical execution but also revealed how AI hackathon use cases can bring real business value in areas such as customer experience, automation, and data-driven decision-making. These top three use cases highlight the future potential of AI and the passion of SupremeTech’s people to turn vision into reality. Brought home the Top Prize - Team Người Việc stood out for their sharp strategy and teamwork. Their winning project solved a familiar yet complex issue in the tourism industry: managing group travel efficiently while ensuring every participant enjoys a seamless experience. Presented in clear business logic, executed with agile methodology, and powered by AI-assisted development, their solution proved that innovation thrives when technology meets human insight. Introducing the Team: Small but Strong Team Người Việc brought together a crew of four: Hung Dinh, Huy Nguyen, and Dung Nguyen as front-end engineers, and Khanh Nguyen as the business analyst. While other teams had five members, this smaller team turned their size into strength. With Khanh shaping the business logic and user journey, and the three engineers transforming those ideas into a functional product, they created a strong link between business insight and technical execution. Each member brought a distinct perspective: one focused on monetization and business value, another on operational flow, and others on technical quality and user experience. Together, they created a strong team that has both business insight and technical execution. Khanh shared that: “Everyone respected each other’s opinions. We weren’t chasing perfection, we were building something real, something that worked”. The Challenge: Turning Hot and Heavy Topic into Opportunity When the AI Hackathon began, the participating teams didn’t get to choose their challenge. Each team drew a topic randomly from a pool of three, and fate handed team Người Việc a challenge that was both broad and complex: Destination and Experience Management System for Tourism. Instead of seeing it as an obstacle, the team saw great potential in this topic: “It’s actually very close to what SupremeTech does,” one member shared. “Tourism and service coordination are among the industries where our clients face similar pain points. If developed further, this could even become a real product for the company”. For most teams, tackling something this wide in just 24 hours would be overwhelming. But for Người Việc, it became the perfect opportunity to combine business logic, agile thinking, and AI-assisted development into a single solution. Dũng, one of the front-end engineers shared: “We didn’t see it as just a travel problem. It’s a coordination problem that every company faces because of too many people, too little time, and too many things to track.” The Idea: Transforming Tourism Coordination with AI Manual planning and coordination often create time-consuming processes, lack of feedback, and fragmented communication across travel agencies, corporate HR departments, and trip participants. To solve this, Người Việc envisioned an end-to-end platform that connects all stakeholders, from travel agencies and corporate planners to event organizers and trip participants.The system enables users to: Create and customize travel itinerariesConnect directly with travel agencies through a marketplace modelTrack schedules via QR codeProvide instant feedback during the trip. In short, it bridges the gap between demand and supply in hospitality, creating a more transparent, interactive, and seamless travel experience. The Process: From Brainstorming to AI-Assisted Development What set Người Việc apart was their strategic mindset before touching a single line of code. Instead of rushing to use AI tools right-away, the team began with a face-to-face brainstorming session, mapping out what a real group trip looks like from start to finish: from planning and agency communication to real-time updates and user feedback. To validate their ideas, they even called friends working in hospitality to understand pain points from the field such as: how agencies handle client requests, where information gets lost, and what travelers actually expect. Only after this discovery phase, the team moved into design and development. They first created clear user stories and workflows on their own, then applied story-based prompting by feeding those stories into ChatGPT and Copilot to generate database schemas, API endpoints, and code snippets. This structured use of AI helped them align technical output with business logic and speed up development. Their approach became a model of how AI-assisted development and agile methodology can complement each other, keeping logic clear while boosting speed. Their mantra throughout the process was simple yet powerful: Think first, then use AI smartly. This mindset kept their workflow focused, turning AI into a productivity multiplier instead of a shortcut, and became a highlight in their AI hackathon journey.Without a QC member, the team stayed flexible and shared responsibilities across roles. Each member could take on multiple tasks when needed, but they still kept a clear structure in how they worked. The PTL and BA stepped in as real users, testing features and giving feedback from a user’s point of view. After defining their user roles and business logic, Team Người Việc translated their ideas into a working prototype. Their platform acts as a bridge between corporate planners and travel agencies, creating a space where requests, itineraries, and feedback flow seamlessly in real time. The system’s core features included: Trip creation and customization: HR or operation teams can build itineraries, adjust timelines, and submit requests tailored to their needs.Agency collaboration: Travel agencies receive those requests, update details, and negotiate directly through the platform, no more back-and-forth emails or lost messages.Participant tracking: Each trip generates a public QR code, allowing members to follow updates, view schedules, and send instant feedback during the journey.Transparency and engagement: The platform closes the communication loop, giving every stakeholder a clearer view of the process. With these key flows completed, the team delivered a functional MVP, a product with clean logic, smooth handoffs between roles, and enough structure to be reused or scaled for other industries. Modern Tech Stack Built for AI-Driven Innovation To bring their concept to life within 24 hours, Team Người Việc designed a tech stack that was modern, lightweight, and AI-friendly. Every layer from frontend to deployment was chosen to balance speed, scalability, and maintainability. Frontend Layer: Fast and Built for Clarity The team developed the user interface using Next.js 15 to handle both page rendering and API routes. Combined with TypeScript, it provided type safety and consistency across all modules, reducing human errors in the rush of development. For styling and components, they used Tailwind CSS and shadcn/ui, which allowed them to quickly create a clean, responsive design without spending time reinventing basic UI elements. Despite the tight schedule, the frontend still delivered a cohesive experience from trip creation to QR-based tracking, proving that with the right stack, agility doesn’t mean sacrificing structure. Backend Layer: Structured Logic and Data Flow Behind the interface, the team used Prisma ORM to manage the database layer. Its schema-first approach, paired with TypeScript integration, helped them maintain data consistency while iterating rapidly. The backend services were also written in Next.js, utilizing server functions to keep everything unified and easy to deploy. This setup gave the team clear control over their data models and allowed them to focus on the business logic, ensuring that trip creation, feedback collection, and participant interactions all flowed smoothly without manual handling. Infrastructure & Deployment: Stability under Pressure To keep their development-to-demo pipeline fast and reliable, Người Việc deployed their system on AWS using Dokploy - a self-hosted CI/CD solution that automates Docker-based deployments. This environment allowed them to push code, test changes, and release updates seamlessly without dependency conflicts. By using Docker containers, they replicated production conditions from the start, ensuring that the MVP remained stable and demo-ready throughout the hackathon. The setup was simple enough for rapid iteration yet robust enough to be scaled for real client use. AI Tools: A Smarter, Not Faster, Way to Build AI played a key role in the team’s workflow but only after the foundation was set.ChatGPT acted as their assistant for ideation and logic design, helping refine user stories, define acceptance criteria, and clarify user flows. Meanwhile, GitHub Copilot served as their pair programmer, generating clean snippets, suggesting improvements, and handling repetitive coding tasks. Instead of using AI as a shortcut, Người Việc used it as an accelerator by integrating it at the right moments to enhance productivity while keeping control of direction and logic. >>> Read more related articles: AI-Assisted Ecommerce Solution Wins Third Place at SupremeTech AI Hackathon 2025How Human Intelligence and AI Capabilities Can Redefine Software Development | Featuring The 1st Runner-Up of SupremeTech AI Hackathon 2025 Judges’ Feedbacks Business Perspective From a business perspective, the judges saw Team Người Việc as a perfect example of practicality and vision. Their solution showed how AI-driven development can address real client needs, especially in industries like travel and hospitality. However, the judges also provided constructive feedback for future improvement. While the idea covered a broad scope from sales to operations, they suggested narrowing the focus to one specific stage in the travel management cycle. By doing so, the solution could achieve higher feasibility and faster adoption in real-world scenarios. The judges also encouraged documenting the team’s AI-assisted project management workflow as a reference for future AI hackathon journeys within SupremeTech. The final presentation showcased all the best qualities of their teamwork. The judges highlighted Người Việc’s clear storytelling, strong time management, and smooth demo delivery that effectively illustrated how their system worked. The team’s confident, structured presentation left a lasting impression and perfectly captured the spirit of SupremeTech’s AI Hackathon. Technical and Engineering Perspective From a technical point of view, the judges recognized Người Việc as a team that combined strong engineering skill with thoughtful use of modern tools. They developed their product on a well-defined code base with clear development standards, following a structured flow from analysis and design to implementation, which is remarkable under the time pressure of a 24-hour hackathon. The highlight of their approach was the story-based prompting technique, which kept the project’s logic coherent from start to finish. By crafting prompts around user stories rather than isolated tasks, the team ensured that every AI-generated piece of code served a real business purpose. This balance between automation and human reasoning became one of the defining features of their success. Teamwork: Staying Calm When Things Went Wrong No hackathon story is complete without chaos and Người Việc had their moment too. Just before the final presentation, disaster happened: the team’s slide suddenly became inaccessible because their shared drive was locked by the judges. With only minutes left, they borrowed a laptop, rebuilt the slides from scratch, and walked onto the stage calm and composed delivering a confident demo that looked effortless to the audience. The team recalled “After 22 hours of coding, what stayed with us wasn’t exhaustion. It was that moment when everyone looked at each other and said: We'll make it work, no matter what.” Voices from the Winners For Team Người Việc, winning the hackathon was not just about the prize, it was about learning how humans and AI can truly collaborate. Reflecting on the experience, Dũng shared: “We realized that AI isn’t just a tool, it’s a real teammate, if you know how to ‘talk’ to it. Each team used AI differently: some for brainstorming, some for UI design, others for presentation. But the prompts we gave were never the same, and that’s why the results were so different. AI only shows its real power when people know how to guide it.” As winners, the team also offered advice for those who will join future hackathons: “Prepare everything you can beforehand: boilerplate code, deployment setup, tools, and your fighting spirit. Once the event starts, every minute counts. And above all, trust your team” Conclusion Team Người Việc proved that real innovation is not only about technology, but about people working together with purpose. By combining business insight, teamwork, and the smart use of AI, they turned a difficult 24-hour challenge into a real achievement. For SupremeTech, this victory is more than just a competition result. It’s a reminder that the future of development starts with clear thinking, strong teamwork, and the courage to explore new ways of building with AI. Appendix: 1. How the Team Applied AI Throughout the Project StageApproachAI Application/ Tools UsedAnalysis & DesignThe whole team brainstormed together, role-playing as real users to map out workflows and features.No AI used — this was the most human-driven stage focused on critical thinking.User Story writingConverted rough ideas into logical workflows, defined goals, and acceptance criteria.ChatGPT acted as a virtual BA, turning brainstorm notes into professional User Stories and Acceptance Criteria.Coding (User Story Based)Developers implemented each User Story while communicating directly with the AI assistant for suggestions and refactoring.GitHub Copilot served as a coding partner, reading stories, suggesting code, refining syntax, and accelerating implementation.Testing & ReleaseThe PTL and BA acted as real users to test the product, identify bugs, and refine the UX before release.No AI used — manual testing for real-user validation. 2. Team Tech Stack LayerTech StackFrontend & Backend (Fullstack)Next.js 15 (App Router)UI Libraryshadcn/ui + TailwindCSSAI AssistantChatGPT + GitHub CopilotInfra / DeployAWS + Dokploy 📩 Read more articles about us here: SupremeTech’s Blog

            22/10/2025

            305

            Quy Huynh

            AI

            +1

            • AI-assisted development

            How Team Người Việc Won SupremeTech’s AI Hackathon 2025 with AI-Assisted Development and Agile Thinking

            22/10/2025

            305

            Quy Huynh

            Customize software background

            Want to customize a software for your business?

            Meet with us! Schedule a meeting with us!