Giáo trình kiểm thử phần mềm phần 1 - Phạm Ngọc Hùng, Trương Anh Hoàng, Đặng Văn Hưng

Giáo trình kiểm thử phần mềm phần 1 của Phạm Ngọc Hùng cung cấp nền tảng vững chắc về các phương pháp kiểm thử hiện đại và thực tiễn trong phát triển phần mềm.

Chuyên ngành

Công nghệ phần mềm

Người đăng

Ẩn danh

Thể loại

Giáo trình

2014

152
0
0

Phí lưu trữ

45 Point

Tóm tắt

I. Tổng quan giáo trình kiểm thử phần mềm Phạm Ngọc Hùng

Giáo trình kiểm thử phần mềm phần 1 của tác giả Phạm Ngọc Hùng, Trương Anh Hoàng và Đặng Văn Hưng được xuất bản tháng 1 năm 2014. Đây là tài liệu đào tạo quan trọng trong lĩnh vực đảm bảo chất lượng phần mềm tại Việt Nam. Giáo trình trình bày các kiến thức nền tảng về kiểm thử. Nội dung bao gồm tổng quan về kiểm thử, các ví dụ minh họa, cơ sở toán học rời rạc, khảo sát đặc tả và mã nguồn, cùng các kỹ thuật kiểm thử hàm. Mỗi chương được xây dựng có hệ thống. Từ lý thuyết đến thực hành. Người học được tiếp cận các khái niệm cơ bản như ca kiểm thử, kiểm thử hàm, kiểm thử cấu trúc. Giáo trình cũng giới thiệu cách phân loại lỗi và sai trong phần mềm. Các mức kiểm thử từ đơn vị đến hệ thống được giải thích rõ ràng. Với cấu trúc logic và ví dụ cụ thể, giáo trình trở thành tài liệu tham khảo hữu ích cho sinh viên và người làm nghề kiểm thử phần mềm.

1.1. Các thuật ngữ và định nghĩa cơ bản về kiểm thử

Giáo trình định nghĩa các thuật ngữ cốt lõi trong kiểm thử phần mềm. Ca kiểm thử là đơn vị cơ bản để đánh giá chất lượng sản phẩm. Khái niệm kiểm thử hàm xem chương trình như một hàm ánh xạ từ miền dữ liệu đầu vào sang đầu ra. Kiểm thử cấu trúc tập trung vào mã nguồn bên trong. Mối quan hệ giữa đặc tả và cài đặt được làm rõ qua biểu đồ Venn. Giáo trình phân biệt giữa lỗi (fault) và sai (failure). Mỗi thuật ngữ được giải thích kèm ví dụ minh họa. Cách tiếp cận hộp đen và hộp trắng được trình bày song song. Người học nắm vững nền tảng lý thuyết trước khi thực hành.

1.2. Các mức kiểm thử và phân loại lỗi phần mềm

Giáo trình trình bày các mức kiểm thử từ thấp đến cao. Kiểm thử đơn vị kiểm tra từng module riêng lẻ. Kiểm thử tích hợp đánh giá sự tương tác giữa các module. Kiểm thử hệ thống kiểm tra toàn bộ sản phẩm. Việc phân loại lỗi giúp xác định nguyên nhân gốc. Lỗi có thể xuất phát từ đặc tả, thiết kế hoặc lập trình. Mỗi loại lỗi yêu cầu phương pháp kiểm thử khác nhau. Giáo trình nhấn mạnh tầm quan trọng của việc phát hiện lỗi sớm. Chi phí sửa lỗi tăng theo giai đoạn phát triển. Do đó kiểm thử cần được thực hiện liên tục trong suốt vòng đời dự án.

II. Các vấn đề và thách thức trong kiểm thử phần mềm

Kiểm thử phần mềm đối mặt nhiều thách thức phức tạp. Một vấn đề lớn là xác định ca kiểm thử hiệu quả. Kiểm thử hàm dựa trên đặc tả nhưng có thể tạo ra nhiều ca kiểm thử dư thừa. Kiểm thử cấu trúc phụ thuộc vào mã nguồn, thay đổi khi cài đặt thay đổi. Cuộc tranh luận giữa hai phương pháp này kéo dài nhiều năm. Giáo trình của Phạm Ngọc Hùng phân tích ưu nhược điểm từng cách tiếp cận. Bài toán tam giác được dùng làm ví dụ điển hình. Nhiều chi tiết đời thực bị bỏ qua để đảm bảo tính đơn giản. Ví dụ như hệ thống ATM có nhiều câu hỏi về giới hạn giao dịch chưa được giải quyết đầy đủ. Bộ điều khiển gạt nước ô tô minh họa sự phức tạp của hệ thống thực. Việc mô tả đúng các điều kiện kiểm thử đòi hỏi sự tỉ mỉ. Người kiểm thử phải cân nhắc nhiều trường hợp biên. Các vấn đề về khởi tạo dữ liệu cũng cần được xem xét kỹ lưỡng.

2.1. Tranh luận giữa kiểm thử hàm và kiểm thử cấu trúc

Kiểm thử hàm xem phần mềm như hộp đen. Thông tin duy nhất là đặc tả của hệ thống. Các ca kiểm thử độc lập với cách cài đặt. Điều này giúp rút ngắn thời gian phát triển dự án. Tuy nhiên kiểm thử hàm thường có tính dư thừa cao. Kiểm thử cấu trúc tập trung vào mã nguồn bên trong. Phương pháp này đảm bảo kiểm tra được các đường dẫn chương trình. Nhưng ca kiểm thử thay đổi khi mã nguồn thay đổi. Giáo trình trình bày cả hai cách tiếp cận để người học tự đánh giá. Sự kết hợp hai phương pháp thường mang lại kết quả tốt nhất.

2.2. Xác định ca kiểm thử từ đặc tả phần mềm

Việc xác định ca kiểm thử là bước quan trọng trong quy trình kiểm thử. Với kiểm thử hàm, đặc tả là nguồn thông tin chính. Người kiểm thử phải phân tích từng chức năng của hệ thống. Bài toán NextDate minh họa cách xây dựng ca kiểm thử cho hàm ngày tháng. Bài toán tam giác đòi hỏi xem xét nhiều loại tam giác khác nhau. Giáo trình nhấn mạnh việc phát triển ca kiểm thử song song với cài đặt. Điều này giúp tiết kiệm thời gian và tăng hiệu quả. Mỗi ca kiểm thử cần được mô tả rõ ràng với đầu vào và đầu ra kỳ vọng. Việc ghi chép kết quả kiểm thử cũng rất quan trọng để theo dõi tiến độ.

III. Phương pháp và kỹ thuật kiểm thử hàm hiệu quả

Giáo trình giới thiệu nhiều kỹ thuật kiểm thử hàm chuyên sâu. Kiểm thử giá trị biên là phương pháp quan trọng đầu tiên. Kỹ thuật này tập trung vào các giá trị ở ranh giới miền dữ liệu. Kiểm thử lớp tương đương phân chia dữ liệu đầu vào thành các nhóm tương đương. Mỗi nhóm đại diện cho một tập hợp giá trị có hành vi giống nhau. Kiểm thử bằng bảng quyết định phù hợp với hệ thống có nhiều điều kiện phức tạp. Giáo trình trình bày cả kiểm thử giá trị biên mạnh và yếu. Kiểm thử tổ hợp xem xét sự kết hợp giữa các tham số đầu vào. Các ví dụ cụ thể như bài toán Triangle và NextDate minh họa rõ ràng. Người học được hướng dẫn cách áp dụng từng phương pháp. Giáo trình cũng chia sẻ kinh nghiệm thực tế khi triển khai các kỹ thuật này. Việc lựa chọn phương pháp phù hợp phụ thuộc vào đặc thù của từng dự án.

3.1. Kiểm thử giá trị biên và lớp tương đương

Kiểm thử giá trị biên tập trung vào các giá trị ở biên miền xác định. Ví dụ với bài toán tam giác, các giá trị như 0, 1, 200 được kiểm tra kỹ. Kiểm thử giá trị biên mạnh bao gồm cả giá trị ngay trên và ngay dưới biên. Kiểm thử lớp tương đương chia dữ liệu thành các lớp tương đương yếu và mạnh. Lớp tương đương yếu chỉ cần một giá trị đại diện cho mỗi lớp. Lớp tương đương mạnh yêu cầu kiểm tra nhiều giá trị hơn. Giáo trình minh họa qua bài toán NextDate với các tháng có 30 và 31 ngày. Việc áp dụng đúng kỹ thuật giúp giảm số ca kiểm thử mà vẫn đảm bảo chất lượng. Kinh nghiệm thực tế cho thấy kết hợp cả hai phương pháp mang lại hiệu quả cao nhất.

3.2. Kiểm thử bằng bảng quyết định và kiểm thử tổ hợp

Bảng quyết định là công cụ mạnh mẽ cho hệ thống phức tạp. Phương pháp này liệt kê tất cả điều kiện và hành động tương ứng. Giáo trình dùng ví dụ bộ điều khiển gạt nước ô tô để minh họa. Chốt có bốn vị trí và núm vặn có ba vị trí tạo thành nhiều tổ hợp. Kiểm thử tổ hợp xem xét sự kết hợp giữa các tham số. Kỹ thuật này hữu ích khi có nhiều biến đầu vào tương tác với nhau. Việc xây dựng bảng quyết định đòi hỏi sự cẩn thận và chính xác. Mỗi điều kiện phải được xác định rõ ràng. Giáo trình cung cấp hướng dẫn từng bước để áp dụng phương pháp này. Kết quả kiểm thử dễ đánh giá và tái sử dụng cho các dự án tương tự.

IV. Ứng dụng thực tiễn và giá trị giáo trình kiểm thử

Giáo trình kiểm thử phần mềm phần 1 của Phạm Ngọc Hùng có giá trị thực tiễn cao. Nội dung được áp dụng rộng rãi trong đào tạo đại học Việt Nam. Các bài toán minh họa gần gũi với thực tế phát triển phần mềm. Bài toán tam giác, NextDate, hệ thống ATM và bộ điều khiển gạt nước đều là những ví dụ điển hình. Giáo trình giúp sinh viên hiểu rõ quy trình kiểm thử từ lý thuyết đến thực hành. Các kỹ thuật như kiểm thử giá trị biên, lớp tương đương được trình bày có hệ thống. Cơ sở toán học rời rạc cung nền tảng vững chắc cho việc phân tích kiểm thử. Giáo trình cũng nhấn mạnh vai trò của khảo sát đặc tả và mã nguồn. Việc áp dụng các chuẩn và hướng dẫn lập trình giúp tăng chất lượng sản phẩm. Tài liệu này đóng góp quan trọng vào lĩnh vực đảm bảo chất lượng phần mềm tại Việt Nam. Nó giúp chuẩn bị đội ngũ kỹ sư kiểm thử chuyên nghiệp cho ngành công nghệ thông tin.

4.1. Áp dụng vào các bài toán thực tế trong đào tạo

Giáo trình sử dụng nhiều bài toán thực tế để minh họa lý thuyết. Bài toán tam giác là ví dụ kinh điển trong kiểm thử phần mềm. Người học phải xác định loại tam giác dựa trên ba cạnh đầu vào. Bài toán NextDate tính ngày kế tiếp, đòi hỏi xử lý nhiều trường hợp đặc biệt. Hệ thống ATM rút tiền đơn giản mô phỏng giao dịch ngân hàng thực tế. Bộ điều khiển gạt nước ô tô thể hiện hệ thống nhúng điển hình. Mỗi bài toán đều có phát biểu rõ ràng và cài đặt mẫu. Sinh viên được thực hành viết ca kiểm thử cho từng bài toán. Cách tiếp cận từ đơn giản đến phức tạp giúp người học tiến bộ dần. Giáo trình khuyến khích phát triển tư duy kiểm thử có hệ thống.

4.2. Giá trị của giáo trình trong đào tạo kiểm thử phần mềm

Giáo trình Phạm Ngọc Hùng là tài liệu chuẩn cho nhiều trường đại học. Nội dung bao quát từ cơ bản đến nâng cao về kiểm thử phần mềm. Cấu trúc chương logic giúp người học tiếp cận kiến thức theo trình tự hợp lý. Phần cơ sở toán học cung cấp công cụ phân tích mạnh mẽ. Các kỹ thuật kiểm thử hàm được trình bày chi tiết với ví dụ cụ thể. Giáo trình nhấn mạnh mối quan hệ giữa lý thuyết và thực hành. Người học không chỉ biết cách kiểm thử mà còn hiểu tại sao phải kiểm thử như vậy. Tài liệu này giúp xây dựng nền tảng vững chắc cho nghề kiểm thử chuyên nghiệp. Nó cũng phục vụ nghiên cứu và tham khảo trong các dự án phần mềm thực tế tại Việt Nam.

21/04/2026

Trích đoạn nội dung tài liệu

GIÁO TRÌNH KIỂM THỬ PHẦN MỀM Phạm Ngọc Hùng, Trương Anh Hoàng và Đặng Văn Hưng Tháng 1 năm 2014 ii Mục lục 1 Tổng quan về kiểm thử 1 1.1 Các thuật ngữ và định nghĩa cơ bản về kiểm thử .2 Ca kiểm thử .3 Mô tả bài toán kiểm thử qua biểu đồ Venn .4 Việc xác định các ca kiểm thử .1 Kiểm thử hàm .2 Kiểm thử cấu trúc .3 Tranh luận về kiểm thử hàm so với kiểm thử cấu trúc .5 Phân loại các lỗi và sai .6 Các mức kiểm thử . 19 2 Một số ví dụ 21 2.1 Bài toán tam giác .1 Phát biểu bài toán .3 Cài đặt truyền thống .4 Cài đặt có cấu trúc . 26 iii iv MỤC LỤC 2.1 Phát biểu bài toán .3 Hệ thống rút tiền tự động đơn giản .1 Phát biểu bài toán .4 Bộ điều khiển gạt nước ô tô . 34 3 Cơ sở toán học rời rạc cho việc kiểm thử 37 3.1 Lý thuyết tập hợp .1 Phần tử của tập hợp .2 Định nghĩa tập hợp .3 Tập hợp rỗng .5 Các phép toán về tập hợp .6 Quan hệ giữa các tập hợp .7 Phân hoạch tập hợp .8 Các đồng nhất thức về tập hợp .1 Miền xác định và miền giá trị .1 Quan hệ giữa các tập hợp .2 Quan hệ trên một tập hợp .1 Các phép toán lôgic .2 Biểu thức lôgic .3 Tương đương lôgic .1 Bậc của đỉnh .2 Ma trận tới .3 Ma trận liền kề .4 Đường đi trong đồ thị .5 Tính liên thông .7 Chỉ số chu trình .1 Bậc vào và bậc ra .2 Loại của đỉnh .3 Ma trận liền kề của đồ thị có hướng .4 Đường đi và tựa đường đi .5 Ma trận đạt được .6 Tính N -liên thông .7 Thành phần liên thông mạnh .3 Các loại đồ thị dùng cho kiểm thử .1 Máy hữu hạn trạng thái . 76 4 Khảo sát đặc tả và mã nguồn 79 vi MỤC LỤC 4.1 Khảo sát đặc tả .1 Tiến hành duyệt đặc tả mức cao .1 Hãy là khách hàng của sản phẩm .2 Hãy nghiên cứu các chuẩn và hướng dẫn hiện hành .3 Hãy xem xét và kiểm thử các phần mềm tương tự .2 Các kỹ thuật kiểm thử đặc tả ở mức thấp .1 Danh sách các hạng mục cần thẩm định về các thuộc tính của đặc tả .2 Danh sách các hạng mục cần thẩm định về các thuật ngữ của đặc tả .1 Khảo sát thiết kế và mã nguồn hay là việc kiểm thử hộp trắng tĩnh .2 Phản biện hình thức .3 Phản biện chéo .6 Các chuẩn và hướng dẫn trong lập trình .7 Danh sách các hạng mục chung cho việc khảo sát mã nguồn . 94 5 Kiểm thử hàm 97 5.1 Sự phức tạp của kiểm thử hàm .2 Phương pháp hệ thống .3 Lựa chọn phương pháp phù hợp . 106 MỤC LỤC vii 5.2 Kiểm thử giá trị biên .1 Giá trị biên .2 Một số dạng kiểm thử giá trị biên .1 Kiểm thử giá trị biên mạnh .2 Kiểm thử giá trị biên tổ hợp .3 Kiểm thử các giá trị đặc biệt .3 Ví dụ minh họa .1 Kiểm thử giá trị biên cho Triangle .2 Kiểm thử giá trị biên cho NextDate .4 Kinh nghiệm áp dụng .3 Kiểm thử lớp tương đương .1 Lớp tương đương .2 Phân loại kiểm thử lớp tương đương .1 Kiểm thử lớp tương đương yếu .2 Kiểm thử lớp tương đương mạnh .3 Kiểm thử lớp tương đương đơn giản .3 Ví dụ minh họa .1 Kiểm thử lớp tương đương cho Triangle .2 Kiểm thử lớp tương đương cho NextDate .3 Kiểm thử tương đương yếu cho NextDate .4 Kiểm thử tương đương mạnh cho NextDate .4 Kinh nghiệm áp dụng .4 Kiểm thử bằng bảng quyết định .1 Bảng quyết định .2 Ví dụ minh họa .3 Kinh nghiệm áp dụng .5 Kiểm thử tổ hợp . 132 viii MỤC LỤC 5.1 Kiểm thử đôi một .2 Ma trận trực giao .3 Kinh nghiệm áp dụng . 135 6 Kiểm thử dòng điều khiển 137 6.1 Kiểm thử hộp trắng .2 Đồ thị dòng điều khiển .4 Kiểm thử dựa trên độ đo .1 Kiểm thử cho độ đo C1 .2 Kiểm thử cho độ đo C2 .3 Kiểm thử cho độ đo C3 .4 Kiểm thử vòng lặp . 152 7 Kiểm thử dòng dữ liệu 159 7.1 Kiểm thử dựa trên gán và sử dụng giá trị biến .2 Các vấn đề phổ biến về dòng dữ liệu .3 Tổng quan về kiểm thử dòng dữ liệu động .4 Đồ thị dòng dữ liệu .5 Các khái niệm về dòng dữ liệu .6 Các độ đo cho kiểm thử dòng dữ liệu .7 Sinh các ca kiểm thử .2 Kiểm thử dựa trên lát cắt . 178 MỤC LỤC ix 7.1 Ý tưởng về kiểm thử dựa trên lát cắt .3 Một số lưu ý với kiểm thử dựa trên lát cắt . 192 8 Kiểm thử dựa trên mô hình 197 8.1 Khái niệm về kiểm thử dựa trên mô hình .2 Các phương pháp đặc tả mô hình .1 Máy hữu hạn trạng thái .2 Ôtômat đơn định hữu hạn trạng thái .3 Biểu đồ trạng thái .4 Máy trạng thái UML .5 Các phương pháp đặc tả khác .3 Sinh các ca kiểm thử từ mô hình .4 Sinh đầu ra mong muốn cho các ca kiểm thử .5 Thực hiện các ca kiểm thử .6 Ví dụ minh họa .1 Đặc tả hệ thống .2 Sinh các ca kiểm thử .3 Thực hiện các ca kiểm thử .7 Thuận lợi và khó khăn của kiểm thử dựa trên mô hình .8 Một số công cụ kiểm thử dựa trên mô hình . 217 9 Kiểm thử tự động và công cụ hỗ trợ 219 9.1 Tổng quan về kiểm thử tự động .2 Kiến trúc của một bộ công cụ kiểm thử tự động .3 Một số công cụ kiểm thử tự động . 229 10 Kiểm thử tích hợp 231 10.2 Các loại giao diện và lỗi giao diện .3 Tích hợp dựa trên cấu trúc mô-đun .1 Tích hợp từ trên xuống .2 Tích hợp từ dưới lên .3 Tích hợp bánh kẹp .4 Tích hợp dựa trên đồ thị gọi hàm .1 Tích hợp đôi một . 238 MỤC LỤC xi 10.2 Tích hợp láng giềng . 239 11 Kiểm thử hệ thống, chấp nhận và hồi quy 241 11.2 Kiểm thử hệ thống .1 Kiểm thử tính dễ dùng .2 Kiểm thử giao diện người dùng .3 Kiểm thử hiệu năng .2 Kiểm thử hiệu năng liên quan .3 Kiểm thử chấp nhận .4 Kiểm thử hồi quy .2 Kỹ thuật kiểm thử hồi quy . 262 xii MỤC LỤC Lời nói đầu Chúng ta đã và đang chứng kiến sự tăng trưởng đáng kinh ngạc của ngành công nghiệp phần mềm trong vài thập kỷ qua. Nếu như trước đây phần mềm máy tính chỉ được sử dụng để tính toán khoa học kỹ thuật và xử lý dữ liệu thì ngày nay nó đã được ứng dụng vào mọi mặt của của đời sống hàng ngày của con người, từ các ứng dụng nhỏ để điều khiển các thiết bị dùng trong gia đình như các thiết bị nghe nhìn, điện thoại, máy giặt, lò vi sóng, nồi cơm điện, đến các ứng dụng lớn hơn như trợ giúp điều khiển các phương tiện và hệ thống giao thông, trả tiền cho các hoá đơn, quản lý và thanh toán về tài chính, vân vân. Vì thế con người ngày càng phụ thuộc chặt chẽ vào các sản phẩm phần mềm và do vậy đòi hỏi về chất lượng của các sản phẩm phần mềm ngày càng cao, tức là các phần mềm phải được sản xuất với giá thành hạ, dễ dùng, an toàn và tin cậy được. Kiểm thử có phương pháp là một hoạt động không thể thiếu trong quy trình sản xuất phần mềm để đảm bảo các yếu tố chất lượng nêu trên của các sản phẩm phần mềm. Theo thống kê thì việc kiểm thử tiêu tốn khoảng 50% thời gian và hơn 50% giá thành của các dự án phát triển phần mềm. Tăng năng suất kiểm thử là một nhu cầu thiết yếu để tăng chất lượng phần mềm. Vì thế nghiên cứu để phát triển các kỹ thuật, công cụ kiểm thử hữu hiệu và đào tạo đội ngũ kiểm thử có kỹ năng và kinh nghiệm là các đóng góp thiết thực nhất để tăng cường chất lượng của các sản phẩm phần mềm. Từ yêu cầu thực tế này, ngày nay rất nhiều trường đại học trong nước và quốc tế đã đưa môn “Kiểm thử và đảm bảo chất lượng Phần mềm” thành một môn giáo dục chuyên ngành của công nghệ phần mềm ở cả bậc đại học và cao học. Chúng tôi thấy rằng các học viên cao học và sinh viên cần được đào tạo bài bản về cơ sở của kiểm thử phần mềm, bao gồm cả các kiến thức hàn lâm cơ bản lẫn các kỹ thuật thực hành trong ngành công nghiệp phần mềm để có thể đáp ứng công việc của cả nghiên cứu viên lẫn kiểm thử viên. Chúng tôi viết cuốn giáo trình này xiii xiv MỤC LỤC không ngoài mục đích nhằm đáp ứng yêu cầu thiết yếu đó. Cuốn giáo trình này sẽ cung cấp cho sinh viên, học viên cao học và giảng viên những chất liệu cơ bản bao phủ những nét chính về những phát triển lý thuyết cơ sở của việc kiểm thử phần mềm và các thực hành kiểm thử chung trong ngành công nghiệp phần mềm. Vì các khái niệm về chất lượng phần mềm là quá rộng, chúng tôi chỉ định giới thiệu những nét chung nhất và cái nhìn tồng thể về kiểm thử và đảm bảo chất lượng phần mềm mà thôi. Thực ra thì phần mềm có rất nhiều loại khác nhau, với nhiều miền ứng dụng khác nhau. Ở mỗi loại và mỗi miền ứng dụng riêng biệt lại có các đặc thù riêng và cần được bổ trợ bởi các kỹ thuật kiểm thử riêng cho chúng. Chúng tôi không có tham vọng đi vào các chi tiết như vậy mà chỉ giới thiệu lý thuyết và thực hành kiểm thử chung và cơ bản nhất nhằm trang bị cho sinh viên những kỹ năng cơ bản để có thể hiểu và tự phát triển các kỹ thuật kiểm thử thích hợp cho các hệ thống phức tạp và chuyên dụng hơn trong thực tiễn sau này. Giáo trình này được viết dựa vào kinh nghiệm giảng dạy môn kiểm thử và đảm bảo chất lượng phần mềm của chúng tôi trong vài năm năm qua tại Khoa Công nghệ Thông tin, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội và hàng chục năm kinh nghiệm của chúng tôi trong thực tế phát triển phần mềm. Để viết giáo trình này, chúng tôi đã tham khảo nhiều cuốn sách được dùng phổ biến trên thế giới về kiểm thử và đảm bảo chất lượng phần mềm. Chúng tôi cũng sử dụng thêm các tài liệu nghiên cứu gần đây để cập nhật các phương pháp và kết quả nghiên cứu hiện nay về lĩnh vực này như được nêu trong phần tài liệu tham khảo ở cuối cuốn tài liệu này.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ