inflearn logo

Nếu code legacy không có bài kiểm thử nào, mỗi lần sửa đều thấy sợ: bắt 5 lỗi ẩn bằng Claude Code và kiểm chứng bằng kiểm thử đột biến

Đã học cách dùng Claude Code rồi, nhưng áp dụng thế nào vào hệ thống legacy của chúng ta? Chúng ta sẽ dùng Claude Code để bổ sung lớp bảo vệ cho dịch vụ đặt hàng Spring Boot chưa có bài kiểm thử nào, tìm ra 5 lỗi ẩn và kiểm chứng các bài kiểm thử do AI viết bằng kiểm thử đột biến.

1 học viên đang tham gia khóa học này

Độ khó Cơ bản

Thời gian Không giới hạn

TDD
TDD
Spring Boot
Spring Boot
JUnit
JUnit
Mockito
Mockito
Refactoring
Refactoring
TDD
TDD
Spring Boot
Spring Boot
JUnit
JUnit
Mockito
Mockito
Refactoring
Refactoring

Bạn sẽ nhận được điều này sau khi học.

  • Dùng Claude Code để bổ sung kiểm thử đặc tính và golden master nhằm cố định hành vi hiện tại cho các lớp dịch vụ chưa có kiểm thử.

  • Viết các quy tắc prompt để AI không âm thầm sửa lỗi hoặc bịa ra giá trị mong đợi.

  • Tạo các điểm nối để kiểm thử thời gian hiện tại, phương thức tĩnh và SQL trong service với thay đổi tối thiểu.

  • Lựa chọn kiểm thử đơn vị, kiểm thử lát cắt (JDBC/web) và kiểm thử tích hợp phù hợp với mục đích.

  • Xác minh các bài kiểm thử do AI tạo ra bằng độ bao phủ JaCoCo và điểm đột biến PIT.

  • Trước tiên kiểm thử các chính sách đang thất bại → sau đó sửa lỗi với những thay đổi tối thiểu.

  • Chúng tôi lưu lại quy trình cho nhóm thông qua các quy tắc kiểm thử trong CLAUDE.md, kỹ năng bổ sung kiểm thử và ngưỡng CI.

Từ 0 lên 88 bài kiểm thử, phát hiện cả 5 lỗi ẩn và đạt điểm mutation 92% — đây là những con số đo được trong phần thực hành của khóa học.

Đã học cách sử dụng Claude Code rồi, nhưng áp dụng vào hệ thống cũ của chúng ta như thế nào? Dùng Claude Code để xây dựng lớp bảo vệ cho dịch vụ đặt hàng Spring Boot chưa có bất kỳ bài kiểm thử nào, tìm ra 5 lỗi ẩn và xác minh các bài kiểm thử do AI viết bằng kiểm thử đột biến.

Đây không phải là khóa học dạy cách viết kiểm thử từ đầu. Khóa học bắt đầu từ một đoạn mã legacy hiện có nhưng chưa có bất kỳ bài kiểm thử nào, giao cho AI đọc mã, viết kiểm thử đặc tính, vá lỗi và tái cấu trúc, đồng thời dùng màn hình chạy thực tế để cho thấy con người cần kiểm tra lại những gì. Bạn sẽ trực tiếp chứng kiến lỗi vẫn lọt qua dù độ bao phủ kiểm thử cao, rồi dùng điểm mutation testing để lọc ra những “bài kiểm thử chỉ chạy cho qua”.

Sau khi hoàn thành khóa học này

  • Dùng Claude Code để bổ sung kiểm thử đặc tính/Golden Master, cố định hành vi hiện tại cho các lớp dịch vụ chưa có kiểm thử.

  • Sử dụng các quy tắc trong prompt để ngăn AI âm thầm sửa lỗi hoặc tự bịa ra các giá trị mong đợi.

  • Tạo các điểm chèn cho thời gian hiện tại, phương thức tĩnh và SQL bên trong service với thay đổi tối thiểu.

  • Lựa chọn kiểm thử đơn vị, kiểm thử lát cắt (JDBC/web) và kiểm thử tích hợp phù hợp với mục đích.

  • Xác minh các bài kiểm thử do AI tạo ra bằng độ bao phủ JaCoCo và điểm đột biến PIT.

  • Viết bài kiểm thử chính sách thất bại trước → sửa lỗi với mức thay đổi tối thiểu.

  • Lưu lại quy trình cho nhóm bằng các quy tắc kiểm thử trong CLAUDE.md, kỹ năng bổ sung kiểm thử và ngưỡng CI.

Khóa học này phù hợp với những ai:

  • Lập trình viên backend đã thử dùng Claude Code nhưng chưa biết phải áp dụng thế nào với mã nguồn không có kiểm thử của công ty.

  • Lập trình viên Spring kế thừa hệ thống cũ, mỗi lần sửa đều lo không biết thứ gì sẽ hỏng.

  • Trưởng nhóm cần tiêu chí để đánh giá liệu có thể tin tưởng các bài kiểm thử do AI tạo ra hay không

Chương trình học (8 phần · 42 bài · khoảng 319 phút)

  • Phần 1. Đến thành công đầu tiên — Bản demo hoàn chỉnh: từ 0 bài kiểm thử đến phát hiện 5/5 lỗi, lỗi đầu tiên trong 5 phút: đơn hàng 50.000 won bị tính phí vận chuyển, dù bị mắc kẹt vẫn bắt đầu lại: môi trường thực hành và thẻ checkpoint, dù đã tự kiểm tra 82% vẫn không thấy lỗi: đo mức chuẩn, khi câu hỏi “Hãy giải thích cho tôi” cho ra câu trả lời sai: thiết kế câu hỏi đọc hiểu

  • Phần 2. Để AI đọc mã nguồn cũ — Tài liệu nói thế này nhưng mã lại khác: đối chiếu chính sách, Không ai biết DB được dùng ở đâu: bản đồ tác dụng phụ, Khi mọi thứ có vẻ quan trọng: xếp hạng các điểm rủi ro khi thay đổi, Khi AI chắc chắn về một tệp không liên quan: xác định phạm vi đọc, Những gì đã đọc sẽ biến mất vào ngày hôm sau: ghi chú đặc tính

  • Phần 3. Kiểm thử đặc tính và Golden Master — Hãy cố định trước khi sửa: kiểm thử đặc tính, tìm giá trị đáng ngờ ở ranh giới: cố định bằng bảng giá trị biên, AI âm thầm sửa lỗi: câu lệnh nhắc “chỉ cố định”, có quá nhiều tổ hợp: ghi lại Golden Master, Golden Master đã thay đổi: phê duyệt và đọc điểm khác biệt, hành vi đáng ngờ ngày càng tích tụ: sổ ghi các lỗi tiềm ẩn

  • Phần 4. Cắt đứt phụ thuộc tại các điểm nối — Không có chỗ cho kiểm thử chen vào: điểm nối, tháng 11 không thể tái hiện: tiêm đồng hồ, phiếu giảm giá bị chặn vào ngày 31 tháng 5: lỗi thứ hai do điểm nối thời gian, phương thức tĩnh cản đường: bọc phép tính phiếu giảm giá, SQL nằm ngay trong service: tập hợp các truy vấn

  • Mục 5. Tách riêng và chọn loại kiểm thử — Tách một phương thức khổng lồ thì hành vi có thay đổi không: trích xuất phép tính, AI đã thay đổi cả chữ ký: rà soát diff để vá lại, kiểm thử vừa chậm vừa dễ hỏng: bảng tiêu chí cho unit test, slice test và integration test, truy vấn theo từng điểm có đúng không: slice test JDBC, phản hồi lỗi âm thầm thay đổi: slice test web, đặt hàng được nhưng hủy đơn lại bất thường: một luồng integration test

  • Mục 6. Kiểm chứng các bài kiểm thử do AI tạo — Độ bao phủ cao nhưng bug vẫn lọt qua: đọc JaCoCo, bài kiểm thử có thực sự kiểm tra không: cố tình phá hỏng mã, đột biến vẫn sống sót: bài kiểm thử chỉ chạy qua, quá nhiều không thể sửa thủ công: giao AI săn đột biến, cần xem xét những gì khi review: năm loại bài kiểm thử AI cần loại bỏ

  • Mục 7. Sửa lỗi và tái cấu trúc — Sửa lỗi thì kiểm thử thuộc tính bị hỏng: thứ tự đảo ngược, VIP nhưng chỉ được tích điểm 1%: lỗi so sánh chuỗi, Được giảm giá nhưng lại tích được nhiều điểm hơn: tiêu chí tích điểm, Hủy đơn rồi mà điểm lại tăng: bỏ sót thu hồi, Có thể chia nhỏ service khổng lồ không: phát hiện hồi quy trước và sau khi chia nhỏ

  • Phần 8. Quy tắc nhóm · CI · Đồ án cuối khóa — Người tiếp theo cũng mắc cùng lỗi: quy tắc kiểm thử trong CLAUDE.md, lần nào cũng nhập cùng một prompt: kỹ năng bổ sung kiểm thử, chẳng ai chạy cả: ngưỡng CI, đồ án cuối khóa: tạo lưới an toàn cho một lớp legacy của tôi, những lỗi không thể phát hiện bằng H2 và mock — bước tiếp theo

Môi trường thực hành

Tải kho lưu trữ legacy-shop trong tệp ZIP thực hành (Spring Boot 3.5, Gradle Wrapper, cơ sở dữ liệu H2 nhúng) và chạy bằng JDK 21 trở lên. Mỗi bài học có các thẻ checkpoint Git (cp-00~cp-41), nên nếu gặp khó khăn, bạn có thể bắt đầu lại từ điểm đó. Tệp còn có các tệp prompt cho từng bài học và các tập lệnh bin/ai, bin/t, bin/score. Chỉ bài thực hành so sánh với MySQL ở bài học cuối cùng mới cần Docker.

Kiến thức tiên quyết

  • Đã từng sử dụng Claude Code

  • Đã từng sử dụng kiểm thử đơn vị (JUnit)

  • Đã từng xây dựng và chạy dự án Spring Boot.

Những nội dung không được đề cập trong khóa học này

  • Cơ bản về cú pháp JUnit·Mockito

  • Phát triển tính năng mới từ đầu bằng TDD

  • Các triết lý thiết kế như kiến trúc Hexagonal và DDD.

  • Kiểm thử tích hợp nâng cao dựa trên MySQL và container thực tế (chủ đề của khóa học tiếp theo)

  • Cài đặt và cách sử dụng cơ bản Claude Code

Thông tin hướng dẫn

Lời thuyết minh của bài giảng này được tạo bằng giọng nói tổng hợp (AI), còn kết quả chạy Claude Code trên màn hình là nguyên văn kết quả thực tế. Câu trả lời của AI có thể hơi khác nhau mỗi lần chạy. Tất cả dữ liệu đều là dữ liệu giả lập dùng cho mục đích đào tạo, và các con số có thể thay đổi tùy theo môi trường thực thi.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Một lập trình viên backend đã thử Claude Code nhưng bế tắc, không biết nên áp dụng thế nào với code của công ty vốn không có kiểm thử.

  • Lập trình viên Spring luôn lo sợ không biết điều gì sẽ hỏng mỗi lần tiếp nhận và sửa code cũ.

  • Trưởng nhóm cần tiêu chí để đánh giá liệu có thể tin cậy các bài kiểm thử do AI tạo ra hay không.

Cần biết trước khi bắt đầu?

  • Đã từng dùng Claude Code.

  • Đã từng viết unit test (JUnit).

  • Đã từng build và chạy dự án Spring Boot.

Xin chào
Đây là dorian05202988

Xác minh sự nghiệp

Tôi là một chuyên gia dữ liệu với hơn 20 năm kinh nghiệm trong lĩnh vực cơ sở dữ liệu và CNTT. Trong vai trò DBA và quản lý nhóm Nền tảng Cơ sở dữ liệu, tôi phụ trách các nền tảng cơ sở dữ liệu, với chuyên môn về MySQL, PostgreSQL, Oracle, MongoDB, tinh chỉnh SQL, AWS, Terraform và Python. Dựa trên kinh nghiệm trong các lĩnh vực trò chơi, tài chính và dịch vụ CNTT, tôi trình bày về cơ sở dữ liệu và kiến trúc đám mây. Tôi đã xuất bản 『Học các mẫu SQL tinh chỉnh thực tế Oracle』 và 『Sổ tay ứng dụng dự án thực tế Oracle Pro*C』, đồng thời thuyết trình về serverless, lựa chọn cơ sở dữ liệu và chiến lược đa cơ sở dữ liệu tại AWS Summit 2018·2019 và sự kiện 데이터야 놀자 2020. Gần đây, tôi tập trung vào phân tích và khuyến nghị tinh chỉnh truy vấn chậm bằng Bedrock LLM, tự động hóa việc tính toán thông số DB, cũng như quy trình tra cứu thông qua máy chủ DB Meta MCP và bot Slack. Tôi giải thích về tự động hóa cơ sở dữ liệu dành cho nhà phát triển và việc ứng dụng AI vào công việc dành cho người không chuyên về phát triển thông qua các bài thực hành phù hợp với đối tượng và mục tiêu của từng khóa học. Thay vì áp dụng nguyên xi các đề xuất của AI, tôi truyền đạt các tiêu chí đánh giá như kiểm tra tính tương đương của kết quả, kế hoạch thực thi và điều kiện quan sát; nếu thiếu căn cứ thì tạm thời chưa áp dụng. Dữ liệu vận hành của công ty và thông tin xác thực không được đưa vào tài liệu giảng dạy.

Thêm

Chương trình giảng dạy

Tất cả

42 bài giảng ∙ (5giờ 19phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Chưa có đủ đánh giá.
Hãy trở thành tác giả của một đánh giá giúp mọi người!

Khóa học khác của dorian05202988

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!

Ưu đãi có thời hạn

1.014.474 ₫

30%

1.449.249 ₫