Kiểm thử hộp trắng – White box Testing là gì?

Đinh Thao

Trong quá trình nghiên cứu và phát triển ứng dụng hoặc phần mềm mới thì bạn không thể nào đảm bảo sẽ không có bất kỳ lỗi nào xảy ra. Do đó, kiểm thử chính là phương thức hiệu quả nhất để giúp bạn có thể nhanh chóng kiểm tra lỗi và đem tới sản phẩm hoàn chỉnh nhất. Hiện nay có 2 phương pháp kiểm thử chính là kiểm thử hộp trắng và kiểm thử hộp đen. Trong bài viết hôm nay testerpro.vn sẽ giới thiệu tới bạn phương pháp kiểm thử hộp trắng.

Kiem thu hop trang

Kiểm thử hộp trắng là gì?

Kiểm thử hộp trắng – White box Testing là một trong những phương pháp kiểm thử phần mềm phổ biến nhất hiện nay, cách kiểm thử này cho tester biết về cấu trúc bên trong của sản phẩm. Từ đó có thể kiểm tra code lập trình và thuật toán trong đó. 

Cách kiểm thử hộp trắng phải tuân theo quy trình cụ thể: Tester phải kiểm tra từ đầu vào của phần mềm đó đi qua các mã code sau đó mới có thể tìm được đầu ra phù hợp nhất. 

Thông thường các dữ liệu đầu vào sẽ được xác định sẵn từ trước đó và mục đích chính khi này là kiểm tra xem đầu ra có đúng với kế hoạch không, nếu như đầu ra sai với dự kiến ban đầu thì khi này sản phẩm phần mềm đó đang gặp lỗi.

Chính vì thế trong quá trình kiểm thử hộp trắng các kiến thức có liên quan tới lập trình và kiến thức có liên quan IT rất quan trọng và cần thiết. 

Kiểm thử hộp trắng

Bên cạnh đó kiểm thử hộp trắng bao gồm các công việc phân tích luồng dữ liệu, điều khiển dòng, mã thực hành, trình bày dòng thông tin, các thông tin ngoại lệ và lỗi có liên quan trong dự án để quản lý và kiểm tra được toàn bộ các hoạt động của dự án phần mềm đó. 

Các phương pháp kiểm thử hộp trắng

Kiểm thử đường cơ bản – Đồ thị dòng

Kiểm tra đường cơ bản – đồ thị dòng là phương pháp kiểm tra được phát minh đầu tiên bởi Tom McCabe. Với phương thức kiểm tra này khá giống với đồ thị trong luồng điều khiển của mỗi chương trình.

Bên cạnh đó, đây cũng là phương pháp kiểm tra thuật giải được sử dụng phổ biến nhất hiện nay. Với chế độ hiển thị trực quan từ đó các thuật giả và thành phần của mối quan có thể dễ dàng nhìn thấy được.

Thêm vào đó, bạn không cần lo lắng về quá trình kiểm tra độ phức tạp của logic thủ tục bởi phương pháp kiểm thử này sẽ hỗ trợ bạn để giải quyết các vấn đề trên.

Thông thường với phương pháp kiểm thử đường cơ bản – đồ thị dòng thì người ta thường chia thành 2 thành phần chính là các cung và các nút kết nối.

– Các thành phần có trong nút điều khiển:

Kiểm thử hộp trắng là gì? Các đường kiểm thử cơ bản

– Các cấu trúc có trong đồ thị dòng:

Kiểm thử hộp trắng và những cấu trúc có trong dòng đồ thị

Kiểm thử dựa trên luồng điều khiển

Kiểm thử luồng điều khiển là quá trình kiểm thử tương xứng giữa các nhóm câu lệnh với các cạnh điều khiển. Các yếu tố quyết định trong luồng điều khiển:

– Là điểm bắt đầu trong 1 đơn vị, chương trình bất kỳ

– Thông thường các câu lệnh có chứa trong khối xử lý sẽ được khai báo chính xác.

– Các điểm có chức năng quyết định trong luồng điều khiển sẽ được tương ứng với các câu lệnh có trong điều kiện của các khối lặp lại hoặc rẽ nhánh.

– Sau các câu lệnh rẽ nhánh sẽ là các điểm nối tương ứng với nó.

Kiểm thử hộp trắng dựa trên luồng điều khiển

– Cuối cùng, điểm kết thúc trong đơn vị chương trình sẽ tương ứng với điểm kết thúc trên luồng điều khiển.

Bên cạnh đó, mục đích của kiểm thử dựa trên luồng điều khiển là để mọi hoạt động đang thi hành trong 1 đơn vị phần mềm bất kỳ đang diễn ra đúng theo kế hoặc hoặc dự kiến ban đầu,

Kiểm thử dựa trên luồng dữ liệu ( Data – flow Testing)

Với quá trình kiểm thử này thông thường sẽ bao gồm quá trình xây dựng phần mềm từ đó kiểm tra các vấn đề xảy ra có liên quan. Sẽ có 2 cách kiểm tra tích hợp trên hệ thống phần mềm đó là:

– Kiểm tra tích hợp theo thứ tự từ trên xuống dưới: Quá trình này bao gồm việc xây dựng hệ thống khung bên trong và quá trình đưa toàn bộ thành phần vào bên trong đó. 

– Kiểm tra tích hợp theo thứ tự từ dưới lên trên: Là quá trình kiểm tra các thành phần trong cơ sở và từ đó có thể bổ sung thêm các thành phần khác có liên quan đến chức năng. 

Quy trình thực hiện kiểm tra dựa trên luồng dữ liệu:

– Xây dựng ý tưởng và thực hiện vẽ luồng dữ liệu chính trong chương trình phần mềm.

– Xác định tiêu chuẩn phù hợp cho việc kiểm thử luồng dữ liệu.

– Tìm và chọn đường đi cho dữ liệu dựa và điều kiện cho trước để thỏa mãn được tiêu chuẩn đặt ra.

– Tạo và tiến hành thực hiện kiểm thử cho đường đi xác định. 

Kiểm thử hộp trắng - kiểm thử luồng dữ liệu

Kiểm thử đột biến ( Mutation Testing)

Đây là 1 trong các loại kiểm thử phần mềm khá phổ biến hiện nay với chức năng chính là để kiểm tra các câu lệnh. Đặc biệt là kiểm tra test case và kiểm tra câu lệnh xem có xảy ra lỗi gì hay không.

Hơn thế nữa, với phương pháp kiểm thử này hệ thống còn đưa ra cho người dùng những thiếu sót đang xảy ra và từ đó chương trình phần mềm sẽ hoàn chính nhất.

Kiểm thử hộp trắng - kiểm thử đột biến

Các kỹ thuật kiểm thử hộp trắng

Khác với kỹ thuật kiểm thử hộp đen là chỉ kiểm thử chức năng bên ngoài thì với kỹ thuật kiểm thử hộp trắng sẽ giúp bạn nhanh chóng phân tích về cấu trúc code bên trong và toàn bộ dữ liệu có liên quan tới phần mềm.

Statement coverage

Mục đích chính của kỹ thuật kiểm thử này chính là để kiểm tra lại độ chính xác trong từng câu lệnh vừa viết. Vì thế, kiểm tra câu lệnh cũng chính là khi dòng mã được kiểm tra.

Nếu bạn kiểm tra theo sơ đồ thì kiểm tra lần lượt các nút theo thứ tự bởi việc này mới có thể giúp tìm ra các lỗi đang được bao phủ bên trong của phần mềm.

Kiểm thử hộp trắng - Statement coverage

Branch Coverage

Là quá trình kiểm tra các nhánh trong sơ đồ, mỗi nhánh phải được kiểm duyệt qua ít nhất 1 lần. Không chỉ vậy, với kỹ thuật này tất cả các điểm quyết định trong sơ đồ cũng cũng được duyệt qua ít nhất 1 lần.

Để hiểu cụ thể hơn bạn có thể theo dõi hình sơ đồ minh họa sau.Trong đó các ô có khung màu cam chính là điểm quyết định trong 1 nhánh bao phủ. 

Kiểm thử hộp trắng - branch Coverage

Condition Coverage

Với kỹ thuật này toàn bộ các điều kiện thỏa mãn của code phải được bao phủ trong dự án. Ví dụ:

1. READ A,B

2. IF (A==0, B==0)

3. PRINT “0”

Trong ví dụ trên, có 2 điều kiện cần thỏa mãn là A==0, B==0. Trong quá trình thực hiện test bạn cần kiểm tra giá trị kết quả của điều kiện trên, có thể là TRUE hoặc FALSE. 

Multiple Condition Coverage

Đối với kỹ thuật này thì tất cả quá trình kết hợp dữ liệu có thể xảy ra thì đều được kiểm thử ít nhất 1 lần. Ví dụ:

1. READ A,B

2. IF (A==0, B==0)

3. PRINT “0”

Xét trong ví dụ trên thì bạn cần kiểm thử các điều kiện cần thiết cho 2 điều kiện riêng lẻ.

Nếu như càng nhiều điều kiện thì số lần kiểm thử sẽ là 2n.

Kiểm thử hộp trắng - Multiple Condition Coverage

Basis Path Testing

Với quá trình kiểm thử hộp trắng dựa trên kỹ thuật này thì đồ thị của luồng điều khiển có thể được tạo trực tiếp từ mã code hoặc dựa vào sơ đồ.

Sau đó số lượng đường dẫn sẽ được tính toán dựa vào sự phức tạp của Cyclomatic. Từ đây, bạn mới có thể xác định được số lượng cần thiết để áp dụng chính xác vào từng đường dẫn kiểm tra độc lập. 

Các bước thực hiện cụ thể như sau:

– Thiết lập biểu đồ cho luồng điều khiển cần thực hiện 

– Kiểm tra và tính toán sự phức tạp trong 1 chu trình nhất định.

– Tìm kiếm đường dẫn độc lập 

– Cuối cùng là thiết kế, xây dựng hệ thống sơ đồ test case phù hợp với từng đường dẫn.

Kiểm thử hộp trắng - Basis Path Testing

Cyclomatic Complexity

Đây chính là kỹ thuật giúp bạn có thể đo được chính xác độ phức tạp của logic đường dẫn có trong phần mềm. Từ đó mới có thể nhanh chóng xác định được chính xác số lượng đường dẫn cụ thể.

Ví dụ: Đồ thị V(G), G coi như là độ phức tạp trong quá trình thực hiện. Tính V(G) biết:

1. V(G) = P + 1, trong đó P là số nút phụ trong biểu đồ

2. V(G) = E – N + 2, trong đó E là số cạnh của biểu đồ và N là tổng nút biểu đồ

3. V(G) = Số lượng ký tự không bị xếp chồng lên nhau trong biểu đồ.

=> Lấy V(G) = 4

Không có đường dẫn độc lập = 4

  • #P1: 1 – 2 – 4 – 7 – 8
  • #P2: 1 – 2 – 3 – 5 – 7 – 8
  • #P3: 1 – 2 – 3 – 6 – 7 – 8
  • #P4: 1 – 2 – 4 – 7 – 1 – . . . – 7 – 8
Kiểm thử hộp trắng

Loop Testing

Kiểm thử vòng lặp – Loop Testing là kỹ thuật kiểm thử với mục đích tập trung vào độ chính xác và tính hợp lệ có trong cấu trúc của vòng lặp. Thông thường với kiểm thử hộp trắng chúng được áp dụng để kiểm thử về vòng lặp có trong chương trình. 

Được phát triển dựa vào nhiều thuật toán code chính vì thế chúng rất quan trọng trong việc kiểm tra dữ liệu vòng lặp đầu hoặc cuối. 

Một vài lỗi có thể xảy ra trong các vòng lặp như:

1. Các vòng lặp có tính đơn giản thường có kích thước tương ứng với số n nào đó, vì vậy mọi trường hợp có thể được thiết kế để hạn chế lỗi:

– Bỏ qua toàn bộ vòng lặp

– Chỉ kiểm tra các vòng lặp 1 lần duy nhất.

– Kiểm tra 2 lượt.

– Kiểm tra m sẽ vượt qua nếu số m > n.

Kiểm thử hộp trắng - kiểm thử vòng lặp

2. Với vòng lặp lồng ghép vào nhau

Với trường hợp này thì tất cả các vòng lặp đều được đặt sẵn với số lượng cho trước theo quy định. Và quá trình kiểm tra thông thường sẽ bắt đầu từ vòng lặp ở vị trí trong cùng nhất.

Ưu, nhược điểm của kiểm thử hộp trắng

Ưu điểm

– Thông thường trước khi kiểm thử thì tester phải đợi GUI để quá trình test có thể được bắt đầu nhưng với kiểm thử hộp trắng thì giai đoạn này có thể bỏ qua vì test sẽ bắt đầu sớm hơn dự kiến.

– Quá trình test nhanh chóng và chi tiết hơn, từ đó mọi đường dẫn có thể bao phủ hoàn toàn.

– Giúp kiểm tra các lỗi và vấn đề phát sinh trong mã lệnh trở lên dễ dàng hơn.

– Hỗ trợ tester trong việc tìm kiếm và phát hiện các lỗi bên trong phần mềm

– Kiểm thử hộp trắng giúp cho mã hóa được tối ưu hơn.

– Việc kiểm tra lỗi được thực hiện kỹ càng hơn bởi quá trình kiểm thử đi sâu vào cấu trúc và hình thức bên trong của phần mềm.

Nhược điểm

– Tuy có nhiều thuận tiện nhưng đòi hỏi tester phải có kiến thức chuyên môn cao, nhiều năm kinh nghiệm. Bên cạnh đó kiến thức về phần mềm phải nắm vững thì mới có thể thực hiện các bài kiểm tra phức tạp.

– Nếu bạn thường xuyên thay đổi Maintenance test script thì dự án có thể trở thành gánh nặng đối với bạn.

– Do quá trình thực hiện kiểm thử hộp trắng thì mọi thông tin thường có liên quan tới phần mềm đang test vì thế trong quá trình triển khai có thể nhiều công cụ không có sẵn cho bạn thực hiện.

Công cụ kiểm thử hộp trắng

Để quá trình kiểm thử diễn ra thành công với kết quả như mong muốn thì các công cụ hỗ trợ là không thể thiếu. Với kiểm thử hộp trắng cũng vậy, công cụ sẽ hỗ trợ để thúc đẩy quá trình thực hiện nhanh hơn, điển hình như các công cụ sau:

– EclEmma: Với nhiều tính năng đặc biệt vì thế nó thường được sử dụng để kiểm thử, phân tích và thử nghiệm độ hiệu quả của phần mềm. 

– NUnit: Là công cụ kiểm tra dành cho các phần mềm sử dụng ngôn ngữ .NET, do đó các tính năng của nó phù hợp nhất trên các nền tảng .NET.

– PyUnit: Là công cụ giúp người dùng có thể nhanh chóng tìm ra các lỗi ngay trong giai đoạn phát triển dự án phần mềm. Từ đó giúp lỗi sửa kịp thời và mất ít chi phí phát sinh có liên quan.Bên cạnh đó bài kiểm tra với công cụ này thường được xây dựng dựa trên ngôn ngữ lập trình Python. 

– Đơn vị HTML: Là công cụ hỗ trợ tốt cho các phần mềm lập trình bằng ngôn ngữ JavaScript. Và mục đích sử dụng chính là để phân tích, thử nghiệm hoặc lấy các thông tin có liên quan từ website hoặc phần mềm.

– CppUnit: Là công cụ hỗ trợ kiểm thử phần mềm được xây dựng bằng ngôn ngữ C++. Với dữ liệu đầu ra được xác định bằng văn bản hoặc dưới dạng XML. 

Phân biệt kiểm thử hộp trắng và kiểm thử hộp đen

Kiểm thử hộp trắng với kiểm thử hộp đen có gì khác nhau?
Tiêu chuẩn Kiểm thử hộp đenKiểm thử hộp trắng
Khái niệmLà kiểm tra toàn bộ các phương pháp sử dụng để kiểm thử phần mềm mà không cần quan tâm tới cấu trúc code bên trong của nó. Hiểu đơn giản thì đây là phương pháp kiểm thử bên ngoài phần mềm. Là phương pháp kiểm thử với mục đích để kiểm tra cấu trúc bên trong của phần mềm đó.
Trách nhiệmKiểm thử hộp đen là quá trình kiểm thử bên ngoài, do đó chúng không liên quan DevelopersDo kiểm tra cấu trúc bên trong phần mềm nên thường được thực hiện trực tiếp bởi các Developers.
Mức độ test Quá trình kiểm thử ở cấp độ cao: System test hoặc Acceptance testThường được kiểm thử trong cấp độ thấp như Unit test, Integration Test.
Kiến thức chuyên mônKhông yêu cầu về kiến thức liên quan tới lập trìnhBắt buộc phải có sự hiểu biết về lập trình và có kiến thức liên quan tới chuyên môn khác.
Quá trình thực hiện chương trình Vì kiểm thử bên ngoài nên không cần hiểu rõ về cấu trúc code bên trong và không cần hiểu về chức năng của chúng.Phải hiểu được chức năng và cấu trúc bên trong thì mới có thể kiểm tra và phát hiện lỗi kịp thời.
Cơ sở kiến thức đào tạoThông thường kiểm thử hộp đen sẽ bắt đầu với tài liệu yêu cầu kỹ thuật. Còn với hộp trắng là các tài liệu có liên quan tới thiết kế chi tiết.

Trên đây là toàn bộ các kiến thức có liên quan tới kiểm thử hộp trắng mà chúng tôi muốn giới thiệu tới bạn. Mong rằng bài viết trên là hữu ích tới bạn giúp bạn bỏ túi thêm nhiều kiến thức bỏ ích để phục vụ cho quá trình học tập và làm việc có hiệu quả hơn. Cảm ơn bạn đã đón đọc, đừng quên theo dõi Testerpro.vn để cập nhật thêm nhiều thông tin mới hơn nữa nhé!

5/5 - (2 bình chọn)
Từ khóa:
Bình luận
Icon Phone