Professional Documents
Culture Documents
0. VTV. Đề cương
0. VTV. Đề cương
2. Hãy liệt kê các kỹ thuật kiểm thử. Việc lựa chọn kỹ thuật để tạo ra các ca
kiểm thử phụ thuộc vào những yếu tố nào
Kiểm thử chức năng (Functional Testing): Xác minh các chức năng của phần mềm theo yêu cầu
đã xác định.
Kiểm thử tích hợp (Integration Testing): Kiểm tra sự tương tác giữa các module trong hệ thống.
Kiểm thử hệ thống (System Testing): Kiểm tra toàn bộ hệ thống sau khi tích hợp các module.
Kiểm thử chấp nhận (Acceptance Testing): Đảm bảo phần mềm đáp ứng yêu cầu của khách
hàng và người dùng cuối.
Kiểm thử hồi quy (Regression Testing): Kiểm tra phần mềm sau khi có sự thay đổi để đảm bảo
không có lỗi mới phát sinh.
Kiểm thử khói (Smoke Testing): Kiểm tra nhanh các chức năng chính của phần mềm để đảm
bảo hoạt động cơ bản.
Kiểm thử đơn vị (Unit Testing): Kiểm tra từng đơn vị nhỏ nhất của phần mềm, thường là từng
hàm hoặc từng đoạn mã.
Kiểm thử dòng chảy dữ liệu (Data Flow Testing): Kiểm tra cách dữ liệu được chuyển từ nơi này
đến nơi khác trong mã.
Kiểm thử điều kiện (Condition Testing): Kiểm tra các điều kiện logic trong mã nguồn.
Kiểm thử đường dẫn (Path Testing): Kiểm tra tất cả các đường dẫn có thể trong mã nguồn.
Kỹ thuật kiểm thử kinh nghiệm (Experience-based Testing):
Kiểm thử thăm dò (Exploratory Testing): Tester tự do kiểm thử phần mềm mà không cần tuân
thủ theo kế hoạch chi tiết.
Kiểm thử lỗi dựa trên kinh nghiệm (Error Guessing): Tester dự đoán các lỗi có thể có dựa trên
kinh nghiệm và kiến thức về hệ thống.
Kiểm thử dựa trên yêu cầu (Requirement-based Testing): Sử dụng các yêu cầu để tạo ra các ca
kiểm thử.
Kiểm thử trạng thái (State Transition Testing): Kiểm tra các trạng thái và chuyển tiếp trạng thái
của phần mềm.
Kiểm thử đồ thị nguyên nhân - kết quả (Cause-effect Graphing): Sử dụng các đồ thị nguyên
nhân - kết quả để tạo ra các ca kiểm thử.
Kiểm thử tập trung vào rủi ro (Risk-based Testing): Tập trung kiểm thử các phần có rủi ro cao
nhất của phần mềm.
Việc lựa chọn kỹ thuật kiểm thử phụ thuộc vào các yếu tố sau:
1. Bản chất của phần mềm: Tính chất và chức năng của phần mềm sẽ quyết định kỹ thuật nào phù
hợp nhất.
2. Yêu cầu và tiêu chuẩn chất lượng: Các yêu cầu và tiêu chuẩn mà phần mềm cần phải đáp ứng.
3. Rủi ro và tầm quan trọng: Mức độ rủi ro và tầm quan trọng của các phần khác nhau trong phần
mềm.
4. Nguồn lực và thời gian: Khả năng nguồn lực và thời gian có sẵn để thực hiện kiểm thử.
5. Mức độ phức tạp: Độ phức tạp của phần mềm và hệ thống kiểm thử.
6. Kinh nghiệm và kỹ năng của đội ngũ kiểm thử: Khả năng và kinh nghiệm của đội ngũ kiểm thử
trong việc sử dụng các kỹ thuật cụ thể.
7. Ngân sách: Số tiền có sẵn để thực hiện quá trình kiểm thử.
3. Ca kiểm thử là gì ? Hãy trình bày về các thông tin về một ca kiểm thử tiêu
biểu
Một ca kiểm thử (test case) là một bộ dữ liệu đầu vào cụ thể, cùng với các bước thực hiện và kết
quả dự kiến, được thiết kế để kiểm tra tính đúng đắn của một tính năng hoặc chức năng trong
phần mềm. Mỗi ca kiểm thử đại diện cho một tình huống hay trường hợp cụ thể mà người kiểm
thử muốn kiểm tra, và có thể bao gồm các bước thực hiện chi tiết để xác định xem phần mềm
hoạt động như mong đợi hay không.
Mục tiêu: Kiểm thử các đơn vị nhỏ nhất của phần mềm, thường là các hàm hoặc các module
riêng lẻ.
Người thực hiện: Thường do các lập trình viên thực hiện.
Công cụ hỗ trợ: JUnit, NUnit, TestNG, v.v.
Đặc điểm: Tập trung vào việc kiểm tra chức năng cụ thể và logic của từng đơn vị mã nguồn.
Mục tiêu: Kiểm tra sự tương tác giữa các đơn vị đã được kiểm thử đơn vị, đảm bảo chúng hoạt
động đúng khi kết hợp với nhau.
Người thực hiện: Thường do các tester hoặc lập trình viên thực hiện.
Công cụ hỗ trợ: Selenium, JUnit, TestNG, v.v.
Đặc điểm: Có hai phương pháp chính là kiểm thử từ trên xuống (top-down) và kiểm thử từ dưới
lên (bottom-up). Ngoài ra, có thể sử dụng kiểm thử sandwich, một sự kết hợp của hai phương
pháp trên.
Mục tiêu: Kiểm tra toàn bộ hệ thống phần mềm để đảm bảo rằng nó đáp ứng các yêu cầu đã đặt
ra.
Người thực hiện: Do các tester chuyên nghiệp thực hiện.
Công cụ hỗ trợ: HP ALM, JIRA, TestRail, v.v.
Đặc điểm: Bao gồm nhiều loại kiểm thử như kiểm thử chức năng, kiểm thử hiệu năng, kiểm thử
bảo mật, kiểm thử khả năng sử dụng, v.v.
Mục tiêu: Xác nhận rằng hệ thống phần mềm đáp ứng yêu cầu và mong đợi của khách hàng và
người dùng cuối.
Người thực hiện: Thường do khách hàng hoặc người dùng cuối thực hiện.
Công cụ hỗ trợ: Có thể sử dụng các công cụ quản lý kiểm thử như TestRail, JIRA, nhưng kiểm thử
chấp nhận thường là quá trình thủ công.
Đặc điểm: Có hai loại kiểm thử chính là kiểm thử alpha (thực hiện bởi nhân viên nội bộ) và kiểm
thử beta (thực hiện bởi khách hàng hoặc người dùng thực tế).
Mô tả: Kỹ thuật này bao gồm việc gặp gỡ và trò chuyện trực tiếp với các bên liên quan để thu
thập thông tin về yêu cầu của hệ thống.
Ưu điểm: Cho phép thu thập thông tin chi tiết và rõ ràng từ người dùng.
Nhược điểm: Tốn thời gian và phụ thuộc vào kỹ năng giao tiếp của người phỏng vấn.
Mô tả: Các cuộc họp nhóm nơi các bên liên quan cùng tham gia để thảo luận và xác định yêu
cầu.
Ưu điểm: Tạo điều kiện cho sự hợp tác và đồng thuận giữa các bên liên quan.
Nhược điểm: Có thể khó quản lý nếu có quá nhiều người tham gia hoặc các ý kiến xung đột.
Mô tả: Sử dụng các câu hỏi có cấu trúc để thu thập thông tin từ một nhóm lớn các bên liên
quan.
Ưu điểm: Có thể tiếp cận một lượng lớn người dùng trong thời gian ngắn.
Nhược điểm: Câu trả lời có thể không chi tiết và thiếu sự tương tác trực tiếp.
Mô tả: Quan sát trực tiếp cách người dùng làm việc và sử dụng hệ thống hiện tại.
Ưu điểm: Cung cấp cái nhìn thực tế về quy trình và các vấn đề hiện tại.
Nhược điểm: Người dùng có thể không hành động tự nhiên khi bị quan sát.
Mô tả: Xem xét và phân tích các tài liệu hiện có như báo cáo, biểu đồ, và tài liệu hướng dẫn.
Ưu điểm: Cung cấp thông tin chi tiết về hệ thống hiện tại và các yêu cầu.
Nhược điểm: Tài liệu có thể lỗi thời hoặc không đầy đủ.
Mô tả: Sử dụng các kịch bản (use case) để mô tả cách hệ thống sẽ được sử dụng trong các tình
huống thực tế.
Ưu điểm: Giúp xác định rõ ràng các yêu cầu chức năng từ góc nhìn của người dùng.
Nhược điểm: Có thể không phù hợp cho việc xác định các yêu cầu phi chức năng.
Mô tả: Phân tích các công việc mà người dùng thực hiện để đạt được mục tiêu cụ thể.
Ưu điểm: Cung cấp cái nhìn chi tiết về các quy trình công việc và các bước cần thiết.
Nhược điểm: Có thể phức tạp và tốn nhiều thời gian.
8. Brainstorming:
Mô tả: Các buổi họp nhóm để tạo ra ý tưởng và giải pháp mới.
Ưu điểm: Khuyến khích sáng tạo và thu thập nhiều ý tưởng khác nhau.
Nhược điểm: Có thể dẫn đến quá nhiều ý tưởng mà không có sự tập trung.
Mô tả: Phân tích các điểm mạnh, điểm yếu, cơ hội và mối đe dọa liên quan đến hệ thống.
Ưu điểm: Giúp hiểu rõ bối cảnh và các yếu tố ảnh hưởng đến yêu cầu.
Nhược điểm: Có thể không cung cấp chi tiết cụ thể về các yêu cầu.
Mô tả: Sử dụng các vòng phản hồi từ một nhóm chuyên gia để đạt được sự đồng thuận về các
yêu cầu.
Ưu điểm: Thu thập ý kiến từ các chuyên gia mà không cần gặp mặt trực tiếp.
Nhược điểm: Quá trình có thể kéo dài và phức tạp.
6. Trình bày về các loại kiểm thử hộp trắng tĩnh phổ biến: (Phản biện hình
thức, Phản biện chéo, Thông qua, Thanh tra, Các chuẩn và hướng dẫn trong
lập trình, Danh sách các hạng mục chung cho việc khảo sát mã nguồn)
Định nghĩa: Phản biện hình thức là quá trình kiểm tra mã nguồn để phát hiện các lỗi,
điều kiện không mong muốn hoặc tiềm ẩn trong mã mà không cần thực thi chương trình.
Các công cụ: Thường sử dụng các công cụ phân tích mã nguồn tự động như SonarQube,
Pylint, ESLint, Coverity, và các công cụ kiểm tra mã hợp chuẩn.
Định nghĩa: Phản biện chéo là quá trình các nhà phát triển hoặc kiểm thử viên khác nhau
xem xét mã nguồn để phát hiện lỗi và cải thiện chất lượng mã.
Phương pháp: Thường được thực hiện thông qua các cuộc họp, đánh giá mã từ các
thành viên khác trong nhóm phát triển hoặc các bên ngoài.
Định nghĩa: Thông qua là một loại phản biện chéo tập trung vào việc kiểm tra và phân
tích mã nguồn một cách chi tiết, nhằm tăng cường hiểu biết về mã và phát hiện lỗi.
Mục đích: Các nhóm thực hiện walkthrough để đảm bảo rằng mọi người trong nhóm đều
hiểu mã nguồn và không bỏ sót lỗi.
Định nghĩa: Các chuẩn và hướng dẫn lập trình như MISRA-C (cho C/C++), PEP-8 (cho
Python), và các hướng dẫn lập trình nội bộ của công ty cũng có thể được sử dụng làm
phương tiện để kiểm tra mã nguồn.
Áp dụng: Đảm bảo rằng mã nguồn tuân thủ các quy tắc lập trình và tiêu chuẩn đã được
thiết lập, giúp cải thiện tính ổn định và bảo trì của phần mềm.
Danh sách các hạng mục chung cho việc khảo sát mã nguồn:
Định nghĩa: Các hạng mục này là những điểm cụ thể trong mã nguồn mà các kỹ sư kiểm
thử hộp trắng tĩnh thường kiểm tra để đảm bảo chất lượng mã.
Ví dụ: Bao gồm kiểm tra cấu trúc điều khiển (như các câu lệnh if, switch), xử lý lỗi, quản
lý bộ nhớ, bảo mật, hiệu suất, và tuân thủ các quy tắc lập trình.
7. Các kỹ thuật kiểm thử hàm: kiểm thử giá trị biên (Kiểm thử giá trị biên
mạnh, Kiểm thử giá trị biên tổ hợp, Kiểm thử các giá trị đặc biệt), kiểm thử
lớp tương đương (Kiểm thử lớp tương đương yếu, Kiểm thử lớp tương
đương mạnh, Kiểm thử lớp tương đương đơn giản), kiểm thử bằng bảng
quyết định, kiểm thử tổ hợp.
Kiểm thử giá trị biên mạnh (Strong Boundary Value Testing):
Mô tả: Kiểm tra các giá trị ở cả hai đầu của miền giá trị có thể có của các biến đầu vào,
bao gồm giá trị nhỏ nhất, giá trị lớn nhất và các giá trị ngay sát với chúng.
Kiểm thử giá trị biên tổ hợp (Combination of Boundary Value Testing):
Mô tả: Kết hợp các giá trị biên của nhiều biến đầu vào để kiểm tra sự tương tác giữa
chúng.
Kiểm thử các giá trị đặc biệt (Special Value Testing):
Mô tả: Kiểm tra các giá trị mà người dùng hoặc hệ thống có thể coi là đặc biệt hoặc
ngoại lệ, như các giá trị 0, giá trị trống, hoặc các ký tự đặc biệt.
Kiểm thử lớp tương đương yếu (Weak Equivalence Class Testing):
Mô tả: Chia các giá trị đầu vào thành các lớp tương đương mà trong mỗi lớp, hệ thống
được kỳ vọng sẽ xử lý giống nhau. Chỉ cần kiểm tra một giá trị từ mỗi lớp.
Kiểm thử lớp tương đương mạnh (Strong Equivalence Class Testing):
Mô tả: Kiểm tra tất cả các giá trị trong mỗi lớp tương đương để đảm bảo tất cả các giá trị
đều được xử lý đúng.
Kiểm thử lớp tương đương đơn giản (Simple Equivalence Class Testing):
Mô tả: Chia các giá trị đầu vào thành các lớp tương đương đơn giản và kiểm tra một số ít
giá trị đại diện từ mỗi lớp.
Mô tả: Sử dụng bảng quyết định để xác định tất cả các kết hợp có thể có của các điều
kiện và hành động tương ứng trong hệ thống. Kiểm thử dựa trên việc kiểm tra mỗi cặp
điều kiện-hành động.
Mô tả: Kiểm thử tất cả các tổ hợp có thể có của các giá trị đầu vào để đảm bảo rằng hệ
thống xử lý đúng trong mọi tình huống.
8. Trình bày quy trình kiểm thử dựa trên mô hình và lấy ví dụ minh hoạ
Trong giai đoạn này, nhóm kiểm thử tập trung vào việc hiểu yêu cầu và các tính năng của phần
mềm để xác định các kịch bản kiểm thử.
Mô tả: Lập kế hoạch để xác định phạm vi, tài nguyên, lịch trình và các phương pháp kiểm thử cụ
thể.
Mô tả: Thiết kế các ca kiểm thử dựa trên các yêu cầu và các trường hợp sử dụng được xác định
trước đó.
Mô tả: Thực hiện các ca kiểm thử đã thiết kế, ghi nhận kết quả và báo cáo lại cho nhóm phát
triển.
Mô tả: Đánh giá kết quả kiểm thử để xác định các lỗi, vấn đề và hiệu suất của phần mềm.
6. Kiểm tra hệ thống và kiểm thử hệ thống tích hợp
Mô tả: Kiểm tra các tương tác giữa các thành phần của hệ thống và xác minh tính tương thích.
Mô tả: Phê duyệt kết quả kiểm thử và triển khai phần mềm.
Ví dụ minh họa:
Giả sử bạn là một nhà phát triển đang làm việc trên một dự án ứng dụng di động cho một cửa
hàng bán lẻ. Sau khi xây dựng các tính năng cơ bản như đăng nhập, tìm kiếm sản phẩm và thanh
toán, bạn cần kiểm tra tính năng tìm kiếm sản phẩm. Quy trình kiểm thử sẽ bao gồm:
Xác định yêu cầu kiểm thử: Yêu cầu chính là đảm bảo tính năng tìm kiếm sản phẩm hoạt động
chính xác và mượt mà.
Lập kế hoạch kiểm thử: Xác định số lượng và loại ca kiểm thử cần thiết, lựa chọn công cụ kiểm
thử phù hợp.
Thiết kế các ca kiểm thử: Thiết kế các ca kiểm thử để kiểm tra tính năng tìm kiếm theo tên sản
phẩm, danh mục, giá cả và sự phù hợp với các tiêu chí khác.
Triển khai và thực thi kiểm thử: Thực thi các ca kiểm thử và ghi nhận kết quả.
Phân tích và báo cáo kết quả kiểm thử: Phân tích kết quả để xác định và báo cáo lỗi và vấn đề
liên quan đến tính năng tìm kiếm sản phẩm.
Kiểm tra hệ thống và kiểm thử hệ thống tích hợp: Kiểm tra tích hợp giữa tính năng tìm kiếm và
các chức năng khác như thanh toán để đảm bảo hoạt động ổn định.
Phê duyệt và triển khai: Phê duyệt và triển khai bản phát hành sau khi đã đảm bảo tính ổn định
và chất lượng của tính năng tìm kiếm sản phẩm.
Mô tả: Một loại biểu đồ UML dùng để mô tả cấu trúc tĩnh của hệ thống bằng cách hiển
thị các lớp, thuộc tính, phương thức, và các mối quan hệ giữa các đối tượng.
Ứng dụng: Thường được sử dụng để thiết kế và phân tích cấu trúc của hệ thống trước khi
viết mã.
Mô tả: Biểu đồ UML mô tả các trạng thái khác nhau của một đối tượng trong suốt vòng
đời của nó và các sự kiện chuyển đổi giữa các trạng thái.
Ứng dụng: Hữu ích trong việc mô hình hóa hành vi của các đối tượng có trạng thái phức
tạp.
Mô tả: Biểu đồ UML mô tả luồng công việc hay hoạt động trong một hệ thống, bao gồm
các hoạt động song song và điều kiện rẽ nhánh.
Ứng dụng: Sử dụng để mô hình hóa quy trình kinh doanh và luồng công việc.
4. Biểu đồ tuần tự (Sequence Diagram):
Mô tả: Biểu đồ UML thể hiện sự tương tác giữa các đối tượng trong một hệ thống theo
trình tự thời gian. Nó hiển thị các đối tượng tham gia, thông điệp trao đổi giữa chúng, và
thời gian thực hiện.
Ứng dụng: Hữu ích trong việc thiết kế và phân tích các trường hợp sử dụng và các kịch
bản cụ thể.
Mô tả: Biểu đồ UML tập trung vào cấu trúc của sự tương tác giữa các đối tượng. Nó cho
thấy các đối tượng và mối quan hệ của chúng, cùng với các thông điệp trao đổi.
Ứng dụng: Thường được sử dụng khi cần nhấn mạnh cấu trúc của sự tương tác hơn là
trình tự thời gian.
Mô tả: Biểu đồ UML hiển thị các thành phần của hệ thống và các mối quan hệ giữa
chúng. Các thành phần này có thể là các module, lớp, hoặc các đối tượng khác.
Ứng dụng: Sử dụng để mô hình hóa kiến trúc của hệ thống và cách các thành phần khác
nhau tương tác.
Mô tả: Biểu đồ UML mô tả cách thức triển khai các thành phần phần mềm lên phần
cứng. Nó hiển thị các nút phần cứng, các thành phần được triển khai trên các nút này, và
các mối quan hệ giữa chúng.
Ứng dụng: Sử dụng để mô hình hóa kiến trúc vật lý của hệ thống, đặc biệt là trong các
hệ thống phân tán.
Mô tả: Biểu đồ UML mô tả các yêu cầu chức năng của hệ thống dưới dạng các trường
hợp sử dụng và các tác nhân (người dùng hoặc hệ thống khác) tương tác với chúng.
Ứng dụng: Hữu ích trong việc thu thập và xác định các yêu cầu chức năng của hệ thống
từ góc nhìn của người dùng.
Mô tả: Biểu đồ mô tả cấu trúc dữ liệu của hệ thống, bao gồm các thực thể, thuộc tính, và
các mối quan hệ giữa các thực thể.
Ứng dụng: Sử dụng để thiết kế và phân tích cấu trúc cơ sở dữ liệu.
Xem xét tài liệu mô hình: Xem qua các tài liệu của mô hình như tài liệu yêu cầu, bản thiết kế, tài
liệu kiểm thử, tài liệu kỹ thuật và các bản mô tả chức năng để hiểu các tính năng và yêu cầu của
phần mềm.
Phân tích yêu cầu: Dựa trên mô hình và tài liệu, phân tích các yêu cầu để xác định các
kịch bản kiểm thử. Các kịch bản này phải bao gồm các trường hợp sử dụng và các kịch
bản khác mà người dùng cuối có thể sử dụng để tương tác với hệ thống.
Sử dụng mô hình để xác định các ca kiểm thử: Dựa trên các yêu cầu, sử dụng mô hình
để xác định các ca kiểm thử cụ thể cho từng phần của hệ thống. Ví dụ, trong mô hình
Agile, bạn có thể sử dụng các user story để tạo các ca kiểm thử; trong mô hình Waterfall,
sử dụng các tài liệu yêu cầu và thiết kế để tạo các ca kiểm thử.
Thiết kế các ca kiểm thử: Viết các bộ dữ liệu đầu vào, các bước thực hiện và các kết
quả dự kiến cho mỗi ca kiểm thử. Các ca kiểm thử nên phản ánh các trường hợp sử dụng
thực tế và các yêu cầu chức năng của phần mềm.
Đảm bảo toàn diện: Đảm bảo rằng các ca kiểm thử bao gồm các trường hợp biên, các
tình huống bất thường và các kịch bản tương tự mà người dùng cuối có thể gặp phải khi
sử dụng phần mềm.
Triển khai và thực hiện các ca kiểm thử: Sử dụng các ca kiểm thử được thiết kế để thực hiện
kiểm thử phần mềm. Ghi nhận các kết quả kiểm thử và đánh giá tính năng và hiệu suất của phần
mềm dựa trên các ca kiểm thử đã triển khai.
Phân tích và báo cáo kết quả: Phân tích các kết quả kiểm thử để xác định và báo cáo về các lỗi,
vấn đề và các cải tiến cần thiết để cải thiện chất lượng phần mềm.
11. Trình bày kiến trúc của một bộ công cụ kiểm thử tự động
Mô tả: Giao diện người dùng là phần mà người sử dụng (thường là kỹ sư kiểm thử) tương tác để
thiết lập, quản lý và thực thi các ca kiểm thử.
Chức năng: Cung cấp các công cụ để tạo, chỉnh sửa và quản lý các kịch bản kiểm thử. Đây là nơi
người dùng nhập dữ liệu đầu vào cho các ca kiểm thử, chọn các tập lệnh để thực hiện, xem và
phân tích kết quả kiểm thử.
2. Thư viện và công cụ hỗ trợ (Libraries and Support Tools):
Mô tả: Bao gồm các thư viện và công cụ phần mềm cần thiết để thực hiện các ca kiểm thử và xử
lý kết quả.
Chức năng: Cung cấp các API và thư viện cho việc tương tác với ứng dụng kiểm thử, giao tiếp với
các hệ thống bên ngoài (như cơ sở dữ liệu, API, các ứng dụng khác), quản lý dữ liệu mẫu (sample
data), và phân tích kết quả kiểm thử.
Mô tả: Phần quản lý và thực thi các ca kiểm thử được định nghĩa từ giao diện người dùng.
Chức năng: Điều khiển quá trình thực thi các ca kiểm thử, gửi các lệnh và dữ liệu đầu vào tới
ứng dụng cần kiểm thử, thu thập và ghi lại kết quả từ ứng dụng sau khi thực thi các ca kiểm thử.
Mô tả: Phần quản lý và phân tích các kết quả từ các ca kiểm thử.
Chức năng: Lưu trữ, hiển thị và phân tích các kết quả kiểm thử, bao gồm cả các báo cáo chi tiết
và tổng quan về trạng thái của các ca kiểm thử. Cung cấp các công cụ để phân tích sự thay đổi
trong kết quả theo thời gian và đối chiếu với các lần chạy trước đó.
5. Cơ sở dữ liệu (Database):
Mô tả: Lưu trữ và quản lý dữ liệu liên quan đến các ca kiểm thử và kết quả.
Chức năng: Bao gồm lưu trữ các kịch bản kiểm thử, dữ liệu đầu vào, kết quả kiểm thử và các
thông tin liên quan. Dữ liệu này có thể được sử dụng để phân tích hiệu suất, đánh giá tiến độ và
so sánh giữa các phiên bản phần mềm khác nhau.
Mô tả: Cung cấp các cơ chế để liên kết và tích hợp với các công cụ và hệ thống khác trong quy
trình phát triển phần mềm.
Chức năng: Hỗ trợ giao tiếp với các công cụ quản lý dự án (Project Management Tools), hệ
thống quản lý mã nguồn (Version Control Systems), các công cụ tự động hóa khác (Automation
Tools), và các hệ thống triển khai (Deployment Systems).
Kiểm thử tích hợp nhỏ (Incremental Integration Testing): Các thành phần phần mềm
được kết hợp từng bước một và kiểm tra tính tương thích, sự hoạt động của từng cặp
thành phần. Các lỗi có thể được phát hiện và sửa chữa ngay khi các thành phần mới được
thêm vào hệ thống.
Kiểm thử hạt nhân (Big Bang Integration Testing): Tất cả các thành phần được kết
hợp lại với nhau một cách đồng thời và kiểm tra hoạt động của toàn bộ hệ thống. Phương
pháp này thường được sử dụng khi các thành phần đã ổn định và kiểm thử cuối cùng
trước khi phát hành.
Kiểm thử hợp nhất (Top-Down Integration Testing): Kiểm thử bắt đầu từ thành phần
cấp cao nhất của hệ thống và từ từ tích hợp các thành phần con hơn. Các phần còn lại có
thể được giả lập hoặc sử dụng giả thay thế để giúp trong việc kiểm thử.
Kiểm thử đáy lên (Bottom-Up Integration Testing): Kiểm thử bắt đầu từ các thành
phần cấp thấp nhất và từ từ tích hợp các thành phần cao hơn. Các chức năng quan trọng
nhất thường được thử nghiệm sớm hơn và có thể được giả lập để giúp kiểm thử.
Kiểm thử hàm (Component Integration Testing): Kiểm tra tích hợp các module hoặc
thành phần con của hệ thống để đảm bảo rằng chúng hoạt động đúng đắn khi được kết
nối với nhau.
Kiểm thử giao tiếp (Interface Integration Testing): Xác nhận tính tương thích của các
giao diện giữa các thành phần khác nhau để đảm bảo truyền thông và trao đổi dữ liệu
diễn ra một cách chính xác.
Kiểm thử dịch vụ (Service Integration Testing): Kiểm tra tích hợp các dịch vụ hoặc
các thành phần dịch vụ của hệ thống để đảm bảo rằng chúng hoạt động như mong đợi khi
được sử dụng cùng nhau.
Lập kế hoạch kiểm thử: Xác định các thành phần cần kiểm thử, chiến lược kiểm thử
phù hợp và tài nguyên cần thiết cho quá trình kiểm thử tích hợp.
Thiết lập môi trường kiểm thử: Chuẩn bị môi trường kiểm thử với các bản sao của các
thành phần và dữ liệu giả lập (nếu cần).
Thực hiện kiểm thử: Thực hiện các ca kiểm thử theo kế hoạch đã lập trình và ghi lại kết
quả.
Phân tích và báo cáo kết quả: Đánh giá kết quả kiểm thử, báo cáo các lỗi phát hiện và
đề xuất các biện pháp khắc phục.
Phát hiện lỗi sớm: Giúp phát hiện và sửa chữa các lỗi tích hợp từ giai đoạn sớm của quá
trình phát triển phần mềm.
Đảm bảo tính tương thích: Xác nhận tính tương thích giữa các thành phần và các yêu
cầu chức năng của hệ thống.
Tăng khả năng mở rộng: Cho phép kiểm tra và xác nhận rằng hệ thống có thể mở rộng
một cách hợp lý với các thành phần mới được thêm vào.
Nâng cao chất lượng: Cải thiện chất lượng của sản phẩm bằng cách giảm thiểu các lỗi
tích hợp và đảm bảo tính hoạt động ổn định.
13. Trình bày về kiểm thử hệ thống là gì, những nội dung cần kiểm thử là gì?
Kiểm thử hệ thống là quá trình kiểm tra toàn diện và tổng thể của hệ thống phần mềm để đảm
bảo rằng nó hoạt động đúng đắn và đáp ứng được các yêu cầu kỹ thuật và chức năng đã đặt ra.
Đây là giai đoạn cuối cùng trong quy trình phát triển phần mềm trước khi triển khai vào môi
trường sản xuất. Mục tiêu chính của kiểm thử hệ thống là xác nhận tính toàn vẹn của hệ thống và
đảm bảo rằng nó đáp ứng được mong đợi của người sử dụng cuối cùng.
Các nội dung cần kiểm thử trong kiểm thử hệ thống bao gồm:
14. Bạn hãy trình bày về mục tiêu của kiểm thử an toàn và các nội dung các loại
kiểm thử an toàn.
Kiểm thử an toàn (Security Testing) là quá trình kiểm tra hệ thống, ứng dụng hoặc môi trường để
phát hiện các lỗ hổng bảo mật có thể bị khai thác bởi các kẻ tấn công. Mục tiêu chính của kiểm
thử an toàn là bảo vệ hệ thống khỏi các cuộc tấn công và đảm bảo tính bảo mật của thông tin
quan trọng. Các nội dung chính của kiểm thử an toàn bao gồm:
1. Phát hiện lỗ hổng bảo mật: Kiểm thử an toàn tập trung vào việc tìm ra các lỗ hổng bảo
mật trong hệ thống, chẳng hạn như các lỗ hổng về xác thực, ủy quyền, kiểm soát truy cập,
hay các lỗ hổng mã độc.
2. Đánh giá rủi ro (Risk Assessment): Quá trình này giúp định danh và đánh giá các rủi ro
tiềm ẩn mà các lỗ hổng bảo mật có thể gây ra, từ đó đưa ra các biện pháp phòng ngừa và
cải tiến.
3. Kiểm tra và xác minh tuân thủ: Kiểm thử an toàn cũng có thể liên quan đến việc kiểm
tra xem hệ thống, ứng dụng hoặc công nghệ tuân thủ các tiêu chuẩn bảo mật nhất định
như PCI-DSS (Payment Card Industry Data Security Standard) hay GDPR (General Data
Protection Regulation).
4. Kiểm tra khả năng chống chịu (Resilience Testing): Kiểm thử này tập trung vào việc
kiểm tra khả năng của hệ thống chống lại các cuộc tấn công hoặc các hành động tấn công
mạng nhằm giảm thiểu tác động của chúng.
5. Kiểm thử bảo mật ứng dụng (Application Security Testing): Tập trung vào việc phát
hiện và khắc phục các lỗ hổng bảo mật trong ứng dụng phần mềm, bao gồm cả việc kiểm
tra mã nguồn và kiểm tra hành vi ứng dụng.
6. Kiểm thử bảo mật hệ thống (Network Security Testing): Tập trung vào kiểm tra các
thiết bị mạng, cấu hình hệ thống, và các cơ chế bảo mật mạng để đảm bảo tính bảo mật
toàn diện của hệ thống.
15. Phân biệt kiểm thử hệ thống, kiểm thử chấp nhận và kiểm thử hồi quy
Mục đích: Kiểm thử hệ thống nhằm kiểm tra toàn bộ hệ thống hoạt động như mong đợi
hay không trước khi triển khai.
Phạm vi: Tập trung vào kiểm tra hệ thống toàn diện, bao gồm cả tích hợp giữa các thành
phần.
Đối tượng: Kiểm thử hệ thống thường áp dụng cho hệ thống đã hoàn thiện để đảm bảo
tính ổn định và chức năng của toàn bộ hệ thống.
Mục đích: Kiểm thử chấp nhận là để xác nhận rằng hệ thống hoặc phần mềm đáp ứng
các yêu cầu và mong đợi của người dùng cuối.
Phạm vi: Thường được thực hiện từ góc nhìn của người dùng cuối hoặc khách hàng để
đảm bảo tính hợp lý và sự phù hợp của hệ thống.
Loại kiểm thử: Có thể bao gồm kiểm thử chấp nhận người dùng (User Acceptance
Testing - UAT) hoặc kiểm thử chấp nhận hệ thống (System Acceptance Testing - SAT).
Mục đích: Kiểm thử hồi quy nhằm đảm bảo rằng các thay đổi, sửa đổi hoặc bổ sung mới
không ảnh hưởng đến tính chất hoạt động của các tính năng đã kiểm tra trước đó.
Phạm vi: Tập trung vào kiểm tra các tính năng, chức năng đã kiểm tra trong quá trình
phát triển để đảm bảo tính ổn định và không có tác động phụ từ các thay đổi mới.
Thực hiện: Thường được thực hiện tự động để tiết kiệm thời gian và đảm bảo tính nhất
quán trong quá trình kiểm thử.