1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn các phương pháp ca kiểm thử và ứng dụng

78 410 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 78
Dung lượng 1,36 MB

Nội dung

B ộ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC s PHẠM HÀ NỘI TRẦN HÙNG CƯỜNG CÁC PHƯƠNG PHÁP THIẾT KÉ CA KIỂM THỬ VÀ ỨNG DỤNG Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 60 48 01 01 Tóm tắt luận văn thạc sĩ máy tính HẢ NỘI, 2015 B ộ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC s PHẠM HÀ NỘI TRÀN HÙNG CƯỜNG CÁC PHƯƠNG PHÁP THIẾT KÉ CA KIỂM THỬ VÀ ỨNG DỤNG Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 60 48 01 01 LUẬN VĂN THẠC s ĩ MÁY TÍNH Người hướng dẫn khoa học: TS Lê Văn Phùng Hà nội, năm 2015 LỜ I CẢM ƠN Đầu tiên xin gửi lời cảm ơn chân thành đến thày TS Lề Văn Phùng Viện Công nghệ thông tin - Viện khoa học công nghệ Việt Nam tận tình hướng dẫn, bảo cho suốt trình làm luận văn Tôi xin gửi lời cảm ơn đến thày cô trường Đại học sư phạm Hà Nội 2, thầy cô Viện Công nghệ thông tin - Viện khoa học công nghệ Việt Nam truyền đạt kiến thức giúp đỡ suốt trình học Tôi xin gửi lời cảm ơn tới đồng nghiệp, gia đình bạn bè người động viên tạo điều kiện giúp đỡ suốt hai năm học vừa qua LỜI CAM ĐOAN Tôi xin cam đoan toàn nội dung luận văn tự nghiên cứu, đọc, dịch tài liệu, tổng hợp thực hiện, công trình nghiên cứu hướng dẫn khoa học thầy TS Lê Văn Phùng Các số liệu, kết luận văn trung thực, rõ ràng Trong luận văn có sử dụng số tài liệu tham khảo trình bày phần tài liệu tham khảo Tôi xin chịu trách nhiệm với nội dung viết luận văn Hà nội, ngày 05 tháng 05 năm 2015 Người viết luận văn Trần Hùng Cường MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN DANH MỤC CÁC HÌNH V Ẽ DANH MỤC CÁC BẢNG MỞ ĐẰU .8 Lý chọn đề tài Mục đích nghiên cứu Nhiệm vụ nghiên cứu Đối tượng phạm vi nghiên cứu Giả thuyết khoa học Phương pháp nghiên cứu Chương : TỔNG QUAN VỀ KIÊM THỬ PHẦN M ỀM 10 1.1 Tổng quan kỹ nghệ phàn mềm 10 1.2 Khái niệm kiểm thử phần mềm 112 1.3 Chiến lược kiểm thử 17 1.3.1 Khái niệm chiến lược kiểm thử 17 1.3.2 Mô hình chiến lược tổng thể 21 1.3.3 Một sổ chiến lược kiểm thử khác 22 1.4 Các phương pháp kiểm thử 27 1.5 Các kỹ thuật kiểm thử 31 1.5.1 Các kỹ thuật kiểm thử hộp trang 31 1.5.2 Các kỹ thuật kiểm thử hộp đen 32 1.5.3 So sánh kiểm thử chức (hộp đen) kiểm thử cấu trúc Ợiộp trắng) .33 Chương : CÁC PHƯƠNG PHÁP THIẾT KẾ CA KIỂM THỬ 35 2.1 Phương pháp bao phủ câu lệnh (Statement Coverge) 37 2.1.1 Phương pháp bao phủ định (Décision coverage) 38 2.1.2 Phương pháp bao phủ điều kiện (Condition Coverage) 39 2.1.3 Phương pháp bao phủ định/ điều kiện (Décision/ Condition coverage) .41 2.1.4 Phương pháp bao phủ đa điều kiện (Multiple Condition Coverage) 43 2.2 Phương pháp phân lớp tương đương (Equivalence Patitioning) 48 2.3 Phương pháp phân tích giá trị biên (Boundary Value Analysis) 50 2.4 Phương pháp đồ thị nguyên nhân - kết (Cause - Effect Graphing) 52 2.5 Phương pháp đoán lỗi (Error Guessing) 60 Chương 3: PHAN MỀM THỬ NGHIỆM THIẾT KẾ CA KIÊM THỬ 62 3.1 Phương pháp kỹ thuật áp dụng thử nghiệm 62 3.2 Một số giao diện chương trình 73 3.3 Form 73 3.3.1 Form chọn dường dẫn tới liệu 73 3.3.2 Hiển thị liệu 74 3.3.3 Tính toán độ phức tạp .74 3.3.4 Xuất phương án kiểm thử 74 3.4 Đánh giá kết thử nghiệm hướng phát triển 75 3.4.1 Đảnh giả 75 3.4.2 Hướng phát triển 75 KẾT LUẬN 75 Kết thu 76 Hướng nghiên cứu .76 TÀI LIỆU THAM KHẢO .76 Tiếng Việt 777 Tiếng Anh 77 DANH MỤC CÁC KÍ HIỆU, CHỮ CÁI VIÉT TẮT CNTT Công nghệ thông tin CSDL Co sở liệu Software technology Công nghệ phân mêm Software Engineering Kỹ nghệ phân mêm Software testing Kiểm thử phần mềm Software quality assurance (SQA) Bảo đảm chât luợng phân mêm Template Tiêu Test case Ca kiểm thử Comparision testing Kiêm thử so sánh Dynamic testing Kiêm thử động Acceptance testing Kiêm thử châp thuận Statement Coverge Bao phủ câu lệnh Decision coverage Bao phủ quyêt định Decision/ Condition coverage Bao phủ quyêt định/ điêu kiện Equivalence Patitioning Phân lớp tuong đuơng Branch and Relational Operation Chiên luợc kiêm thử DANH MỤC CÁC HÌNH VẼ Hình 1.1 Sơ đồ luồng thông tin idem thử Hình 1.2 Tiến trình idem, thử Hình 1.3 Sơ đồ thành phần hỗ trợ phẩn mềm đạt chất lượng Hình 1.4 Mô hình chiến lược Mem, thử tống thể Hình 1.5 Mô hình kiểm thử then gian thực Hình 1.6 Kiếm thử so sánh/kiểm thử dựa vào Hình 1.7 Các vẩn đề với kiểm thử vét cạn Hình 1.8 Mô hình hộp đen Hình 2.1 Chương trình kiểm thử Hình 2.2 Mã máy cho chương trình Hình 2.1 Hình 2.3 Xác định ca kiểm thử đường đỉầi kiện Hình 2.4 Một mẫu cho việc liệt kê ỉớp tương đương Hình 2.5 Mô hình phân hoạch phân tích giá trị biên Hình 2.6 Các bước tiến hành theo kỹ thuật đồ thị nhân- Hình 2.7 Xây dựng đồ thị nhân -quả đồ thị Hình 2.8 Các phương án lựa chọn ca kiểm thử Hình 2.9 Các kỷ hiệu đồ thị nguyên nhân —kết Hình 2.10 Các kỷ hiệu ràng buộc Hình 2.11 Những xem xét sử dụng dò theo đồ thị Hình 3.1 Các cấu trúc đồ thị dòng (sequence, if, while, until, case) Hình 3.2 Sơ đồ điều khiển chương trình Hình 3.3 Sơ đỏ luồng điều khiển Hình 3.4 Đồ thị dòng Hình 3.5 Độ phức tạp chu trình xác định từ đồ thị dòng Hình 3.6 Sơ đồ điều khiển chương trình Hình 3.7 Sơ đồ luồng điều khiển gộp Hình 3.8 Đồ thị dỏng Hình 3.9 Đồ thị dỏng dùng để xác định ma trận kiếm thử Hình 4.0 Form chương trình Hình 4.1 Form chọn dường dẫn tới liệu Hình 4.2 Form hiển thị liệu Hình 4.3 Form tỉnh toán độ phức tạp Hình 4.4 Form phương án Mem thử 17 18 20 23 25 28 31 34 39 43 48 49 53 54 54 55 58 59 60 63 65 66 66 67 68 69 69 70 73 74 74 74 75 DANH MỤC CÁC BẢNG Bảng 3.0 Bảng định đồ thị nhân -quả 55 Bảng 3.1 Tập đường 68 Bảng 3.2 Bảng tỉnh độ phức tạp đồ thị dòng V(G) .71 Bảng 3.3 Bảng ma trận kiếm thử A = (dịỷ 71 Bảng 3.4 Tập đường kiếm th 73 MỞ ĐẦU Lý chọn đề tài Các phương pháp thiết kế ca kiểm thử ứng dụng có vai trò quan trọng việc đưa ứng dụng vào áp dụng thực tế Kiểm thử giai đoạn trình phát triển, hoàn thành sản phẩm Trước sản phẩm phát hành tất chức giao diện, ứng dụng sản phẩm cần qua kiểm thử Một sản phẩm thiết kế tốt tránh khỏi sai sót Kiểm thử hiệu phát sai sót này, tránh lỗi trước phát hành sản phẩm Kiểm thử đứng vai trò người sử dụng, giúp cho sản phẩm có thích ứng phù hợp với thị hiếu nhu cầu người dùng Vì vậy, kiểm thử việc càn thiết, cần nghiên cứu kiểm thử để tìm phương pháp kiểm thử hiệu phù hợp với ứng dụng sản phẩm Vì chọn đề tài cho luận văn thạc sĩ là: “Các phương pháp ca kiểm thử ứng dụng” Mục đích nghiên cứu - Xác định vai trò phương pháp ca kiểm thử ứng dụng nghiên cứu khoa học chế tạo sản phẩm Trên sở nghiên cứu phân tích giải pháp an toàn việc kiểm thử sản phẩm, phân phối, trao đổi, phương thức quản lý nhằm mang lại hiệu cao trình đưa sản phẩm vào ứng dụng thực tế Nhiệm vụ nghiên cứu - Nghiên cứu lý thuyết tổng quan phương pháp ca kiểm thử ứng dụng: Các khái niệm bản, tiến trình kiểm thử, phương pháp, kỹ thuật kiểm thử ứng dụng - Nghiên cứu phương pháp thiết kế ca kiểm thử ứng dụng, vấn đề cần lưu ý thiết kế, kiểm thử ứng dụng sản phẩm 62 Chương 3: PHÀN MỀM THỬ NGHIỆM THIẾT KẾ CA KIỂM THỬ 3.1 Phương pháp kỹ thuật áp dụng thử nghiệm Phần lý thuyết để thực ví dụ lập trình thử nghiệm thiết kế ca kiểm thử xác định độ phức tạp chu trình (số ca kiểm thử) Kỹ thuật đồ thị dòng kỹ thuật phương pháp kiểm thử hộp trắng đàu tiên Tom McCabe đề nghị “kiểm thử đường sở” Phương pháp xác định đường sở giúp cho người thiết kế ca hcrp kiểm thử suy dẫn cách đo độ phức tạp logic thiết kế thủ tục dùng cách đo hướng dẫn để xác định tập sở đường thực Các trường hợp kiểm thử suy dẫn để thực tập sở, đảm bảo để thực câu lệnh chương trình lần kiểm thử Trong phương pháp xác định tập đường sở, hệ thống ký pháp đơn giản dùng để biểu diễn cho luồng điều khiển, gọi đồ thị dòng (hay đồ thị chương trình) Đồ thị dòng mô tả cho dòng điều khiển logic dùng ký pháp minh hoạ hình 3.1 Mỗi kết cấu có cấu trúc có ký hiệu đồ thị dòng tương ứng Hình 3.1 Các cẩu trúc đồ thị dỏng (sequence,if, while, until, case) Đồ thị dòng thực chất kỹ thuật dựa cấu trúc điều khiển chương trình Nó gần giống đồ thị luồng điều khiển chương trình Đồ thị dòng nhận từ đồ thị luồng điều khiển cách: Gộp lệnh điều khiển liên tiếp thành lệnh; Thay lệnh rẽ nhánh đường điều khiển nút “vị tự ” 63 Cấu trúc đồ thị dòng gồm: Mỗi nút (hình tròn) biểu thị hay số lệnh rẽ nhánh, thay cho điểm phân nhánh hay hội tụ đường điều khiển Mỗi cạnh nối hai nút biểu diễn dòng điều khiển Kết đồ thị dòng thể hiện: Chia mặt phẳng thành nhiều miền Có nút vị tự biểu thị phân nhánh cung Mỗi cung nối cặp nút biểu diễn luồng điều khiển V í dụ: Đầu vào: Xét cấu trúc điều khiển chương trình Do while records remain Read record If record field = then process record; store in buffer; increment counter; Else if record field2 = then reset record; Else process record; store in file; Endif Endif Enddo 64 Quá trình giải: Bước 1: Đánh số (mã hóa) lệnh: Do while records remain Read record If record field = then process record; store in buffer; increment counter; Else if record field2 = then reset record; Else process record; store in file; 10 Endif Endif 11 Enddo Bước 2: vẽ Sơ đồ điều khiển chương trình Hình 3.2 Sơ đồ điều khiển chương trình 65 Trong lập trình, vẽ đồ thị tốt, cần xác định tổng số nút tổng số cung Bước 3: vẽ Sơ đồ luồng điều khiển Trong chương trình : rút gọn số nút cung Hình 3.3 Sơ đồ luồng điều khiển Bước 4: tính thông số đồ thị dòng theo công thức (1) (3) Các thông số đồ thị dòng ví dụ gồm: nút (=N), đó: nút vị tự (= P) 11 cung (= E) * Hình 3.4 Đồ thị dòng Đồ thị dòng chia mặt phẳng thành miền: R l, R2, R3, R4 66 Hình 3.5 Độ phức tạp chu trình xác định từ đồ thị dòng Để bảo đảm câu lệnh kiểm thử lần, cần tìm tất đường điều khiển độc lập chương trình (khác lệnh) Số đường độc lập chương trình giới hạn số ca kiểm thử cần tiến hành Nó gọi độ phức tạp chu trình chương trình Tập đường độc lập/cơ {basicpaths) chương trình trùng với đường độc lập đồ thị dòng (tìm đơn giản hơn) Bước 5: Tỉnh độ phức tạp chu trình để xác định số đường (ca) kiểm thử Tính toán đô phức tap chu trình: Độ phức tạp chu trình V(G) đồ thị G tính theo cách sau: (1) (2) (3) V(G) = E - N + (=11-9+2 = 4) V(G) = số miền phẳng (= 4) V(G) = p + (= 3+ =4) Trong đó: E = số cung; N = số nút; p= số nút vị tự Với ví dụ đồ thị dòng ta có: V(G) = Xác đinh ca kiểm thứ: Từ đồ thị dòng, xác định độ phức tạp chu trình V(G)=4 suy cần thiết kế đường kiểm thử, tạo thành tập đường bảng 2.5 Bước 6: xác định tập đường 67 Bảng 3.1 Tập đường Tập đường a 11 b 2-3 4-5 10 c 2-3 10 d 2-3 10 Bước 7: Phương pháp Ma trận kiểm thử để xác định tập đường kiểm thử Ví dụ: Xét cấu trúc điều khiển chương trình Do while ghi chưa xử lý Read ghi chưa xử lý if giá trị trường thứ ghi = then xử lý ghi; Cất vào nhớ; tăng biến đếm; else if giá trị trường thứ hai ghi = then tạo lại ghi; else xử lý ghi; Cất vào tệp; 10 end if end if 11 end Các dòng lệnh có liên quan đến xử lý liệu đánh số thứ tự (1, , 1 ) , từ sơ đồ điều khiển chương trình 68 ĩ 11 - Hội öMß 10 Hình 3.6 Sơ đồ điều khiển chương trình Trên sở gộp lệnh thực liền kề với lệnh thực liền kề rẽ nhánh, ta có sơ đồ luồng điều khiển (hình 3.7) 69 Hình 3.7 Sơ đồ luồng điầt khiển gộp Hình 3.8 Đồ thị dòng Từ sơ đồ luồng điều khiển gộp xác định đồ thị dòng (hình 3) Các thông số đồ thị dòng gồm: nút (= N), đó: nút vị tự (= P) (nút đánh dấu tô màu sẫm) 11 cung (= E) Cho đơn giản, đánh số lại đồ thị dòng đồ thị dòng 70 Từ đồ thị dòng này, xác định “ma trận kiểm thử”: M a trận kiểm thử, ký hiệu A=(aij) với i,j=l,2,3, ,n, mộtma trận vuông cấp n, có kích thước số nút (n) đồ thị dòng: - Mỗi dòng/ cột ứng với tên nút; - Mỗi ô: tên cung nối nút dòng đến nút cột Nhân liên tiếp k ma trận ta ma trận có sốởmỗi ô số đường k cung từ nút dòng tới nút cột Ma trận kiểm thử sử dụng liệu có cấu trúc để kiểm tra đường bản: số đường qua nút (có thể tính trọng số chúng) Ma trận kiểm thử công cụ mạnh việc đánh giá cấu trúc điều khiển chương trình Khi kiểm thử, ta thêm trọng số cho cung ma trận kiểm thử (ma trận kiểm thử có trọng số) sau: Xác suất cung thực thi Thời gian xử lý tiến trình qua cung Bộ nhớ đòi hỏi tiến trình qua cung Nguồn lực đòi hỏi tiến trình qua cung Bảng 3.2 Bảng tính độ phức tạp đồ thị dòng V(G): nút 1 1 1 1 V(G) = + -1 = 1 + -1 = 1-1=0 + -1 = 1-1=0 1-1 = 1-1=0 1-1=0 V(G)= V theo cột+l=3 +1 = (Các số ma trận đánh dấu nút dòng tới nút cột, ví dụ nút dòng xác định chuyển tới nút cột nên có tọa độ (2,3) đánh dấu 1) 71 Do ta có bảng ma trận kiểm thử A= (aỊj) với ij=l,2,3,4, 9: 1 1 1 1 1 Bảng 3.3 Bảng ma trận kiếm thử A = (djj) Từ ma trận A, xác định độ phức tạp đồ thị vỉ dụ bằngcông thức: V (G ) = (Z í=i « Z ’= i “ ij ) - 1) +1 = Đe thuận tiên cho việc lập trình, xác định cách tính độphức tạp theo quy trình sau: Bước 1: tính tổng theo hàng ma trận A trừ dòng cuối Ti=an+ ai2+ ai3+ +ai9 = T 2=a2i+ a22+ S23+ + a29 = T3=a3i+ a32+ a33+ +a39 = T —& + &42_l_ “I“ “I- &49 = T5=a5i+ a52+ a53+ +a59 = T6=a6i+ a62+ a33+ + a 69 = T = & + &72~^" " K ~^~âyg = T8=a8i+ a82+ a83+ +as9 = Tg= 3-93_l— ■ ~^~[...]... - ứ n g dụng thử nghiệm đối với phương pháp ca kiểm thử và ứng dụng, nêu các kết quả đạt được, chưa đạt được và hướng giải quyết các vấn đề khi kiểm thử và ứng dụng sản phẩm 4 Đổi tượng và phạm vỉ nghiên cứu - Đối tượng nghiên cứu của đề tài tập trung vào các phương pháp ca kiểm thử và ứng dụng phần mềm và phàn cứng - Phạm vi nghiên cứu của đề tài được giới hạn trong vấn đề kiểm thử và ứng dụng sản... tả, kiểm thử hộp đen cho các sản phẩm này được thực hiện với cùng ca kiểm thử và cùng các dữ liệu vào -Khi so sánh các kết quả thu được, nếu có khác biệt nghĩa là có sai trong một sản phẩm nào đó! Hình 1.6 Kiểm thử so sánh/ kiểm thử dựa vào nhau 1.4 Các phương pháp kiểm thử Có rất nhiều phương pháp thiết kế trường hợp kiểm thử cho phần mềm Những phương pháp này cung cấp cho người phát triển một cách... sản phẩm 5 Đóng góp mới của luận văn - Xác định được các tiêu chuẩn thích hợp cho việc chọn phương pháp thiết kế ca kiểm thử và ứng dụng 6 Phương pháp nghiên cứu - Phương pháp tổng hợp phân tích các vấn đề liên quan đến đề tài - Phương pháp thống kê kết hợp với phương pháp chuyên gia -Phương pháp kết hợp lý thuyết với thực nghiệm trên máy tính 10 Chương 1: TỔNG QUAN VỀ KIỂM THỬ PHÀN MỀM l.l.T ổng quan... một tập các giá trị đầu vào và một danh sách các kết quả đầu ra mong muốn và thực tế Việc thiết kế ca kiểm thử là rất quan trọng trong các hoạt động bảo đảm chất lượng phần mềm và đó cũng là phần trọng tâm được nghiên cứu sâu trong luận văn này 1.3.Chiến lươc kiểm thử • 1.3.1 Khái niêm chiến lươc kiểm thử • • Chiến lược kiểm thử là sự tích hợp các kỹ thuật thiết kế ca kiểm thử tạo thành một dãy các bước... “tốt” và “thắng lợi” - Ca kiểm thử tốt là ca kiểm thử có xác suất cao tìm ra 1 lỗi - Ca kiểm thử thắng lợi là ca kiểm thử làm lộ ra ít nhất 1 lỗi Vấn đề đặt ra ở chỗ nếu không tìm được lỗi nào thì có thể kết luận phần mềm hoàn hảo không? Câu trả lời chung là chưa hẳn như vậy Kiểm thử có nhiều lợi ích, trong đó phải kể đến các lợi ích quan trọng: - Ca kiểm thử thắng lợi làm lộ ra khiếm khuyết - Kiểm thử. .. năng đó; Phương pháp này còn được gọi là kiểm thử động (Dynamic testing) - Kiểm thử hộp đen là phương pháp thử phần mềm thông qua việc dùng máy chạy chương trình để điều tra trạng thái tác động của chương trình Đó là kiểm thử dựa trên các ca kiểm thử xác định bằng sự thực hiện của đối tượng kiểm thử hay chạy các chương trình - Kiểm thử hộp đen kiểm tra cách thức hoạt động động của mã lệnh, tức là kiểm. .. kiểm thử chức năng (hộp đen) và kiểm thử cẩu trúc (hộp trắng) Kiểm thử chức năng coi các đối tượng kiểm thử như một hộp đen, chú trọng vào việc kiểm tra các quan hệ vào ra và những chức năng giao diện bên ngoài Trong đó kiểm thử cấu trúc coi các đối tượng như một hộp trong suốt, các thành phần cài đặt bên trong được nhìn thấy và được kiểm tra Dưới đây là một số đặc điểm so sánh: - Đối tượng: Kiểm thử. .. chức năng là các chuyên gia kiểm thử hay có thể là đơn vị thứ ba, còn đối với kiểm thử cấu trúc người kiểm thử là người phát triển chương trình Phương pháp kiểm thử hộp trắng cũng có thể được sử dụng để đánh giá sự hoàn thành của một bộ kiểm thử mà được tạo cùng với các phương pháp kiểm thử hộp đen Điều này cho phép các nhóm phần mềm khảo sát các phần của một hệ thống ít khi được kiểm tra và bảo đảm... đồ luồng thông tin kiểm thử biểu thị cho một phép biến đổi cực kỳ phức tạp Chúng ta sẽ xem xét các khái niệm và tiến trình phục vụ cho luồng thông tin kiểm thử và các phép biến đổi kiểm thử Hình 1.1 Sơ đồ luồng thông tin kiểm thử 17 9 ĩ Kiêm thử thường được thực hiện theo tiên trình sau: Hình 1.2 Tiến trình kiểm thử Ở đây, Ca kiểm thử (test case) là một tình huống kiểm thử tương ứng với một mạch hoạt... tạo, đáp ứng được yêu cầu khách hàng Thích ứng với mức kiểm thử cụ thể Đáp ứng các đối tượng quan tâm khác nhau Kiểm thử là một tập họp những hoạt động mà có thể được lập kế hoạch trước và tiến hành một cách có hệ thống Một tập các bước mà trong đó chúng ta có thể vận dụng những kỹ thuật thiết kế ca kiểm thử và phương pháp kiểm thử được gọi là một tiêu bản (template) Một tiêu bản để kiểm thử có những

Ngày đăng: 19/08/2016, 21:00

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w