Mặc dù không nguy hiểm như lỗi cấp độ blocker, nhưng vẫn ảnh hưởng đến tính ổn định và chất lượng của ứng dụng.. Kiểm thử tự động chất lượng mã Phân tích và đánh giá rủi ro bảo mật Phân
Trang 1STATIC TEST REPORT PROJECT SHOP FIGURE ONLINE
LECTURER : ĐÀO THỊ THANH
Members:
Lê Ngọc Khang
Lê Văn Dũng Phan Lạc Trung Nguyễn Thị Dung
Đỗ Anh Quân
– Hanoi, Jan 2024 –
Table of Contents
I Project Report
1 Status Report
2 Team Involvements
3 Issues/Suggestions
Trang 2II Introduction
1 Introduction your Project
2 Introduction to the Testing Tool
3 Test Strategy
III Test Results
A Project Report
1 Status Report
#Work Item tatus otes (Work Item in Details)
1 Introduction to the Testing Tompletedên tool, mô tả tool, các cấp độ lỗi, tính năng, mục đích và mục tiêu
2 Introduction your Project ompleted Giới thiệu qua về project được kiểm thử của nhóm
3 Test Strategy ompletedìm hiểu về chiến lược test bằng tool
2 Team Involvements
1 Introduction your Project Khang Giới thiệu qua về project được kiểm thử của nhóm
2ntroduction to the Testing ToDũng Tên tool, mô tả tool, các cấp độ lỗi, tính năng, mục đích vàmục tiêu
3 Format Dung Định dạng bản báo cáo của nhóm
4 Test Strategy Quân/Trung Tìm hiểu về chiến lược test bằng tool
Trang 33 Issues/Suggestions
#sue tatus otes (Solution, Suggestion, etc.)
1Không setup được SonarQube ompletedhuyển sang dùng SonarCloud
2Khó xếp lịch họp ompletedĐã xếp được lịch họp
B Introduction
1 Introduction your Project
Dự án của nhóm là một website bán hàng trực tuyến với các sản phẩm liên quan đến các nhân vật hư cấu Mục tiêu của dự án là trở thành một nơi đặc biệt dành cho những người yêu thích và sưu tầm các sản phẩm liên quan đến waifu Figure Shop là cửa hàng chuyên cung cấp các sản phẩm nghệ thuật và đồ trang trí, đặc biệt là các figure và hàng hóa liên quan đến các nhân vật waifu trong thế giới anime, manga và game
2 Introduction to the Testing Tool
- Tên tool: SonarCloud
- Mô tả tool:
SonarCloud là phiên bản dựa trên đám mây của SonarQube, cho phép các nhà phát triển liên tục kiểm tra và phân tích code của họ để tìm và khắc phục các sự cố liên quan đến chất lượng
mã, bảo mật và khả năng bảo trì Nó hỗ trợ nhiều ngôn ngữ lập trình khác nhau như Java, C#, JavaScript, Python, v.v
SonarCloud tích hợp với các công cụ phát triển phổ biến như GitHub, GitLab, Bitbucket, Azure DevOps, v.v Các nhà phát triển có thể sử dụng SonarCloud để nhận phản hồi theo thời gian thực về chất lượng mã của họ và cải thiện chất lượng mã tổng thể
Cả SonarCloud và SonarQube đều cung cấp các chức năng tương tự, nhưng SonarCloud là dịch vụ dựa trên đám mây và yêu cầu đăng ký, trong khi SonarQube là nền tảng nguồn mở có thể được cài đặt tại chỗ hoặc trên máy chủ đám mây
- Các cấp độ lỗi:
Blocker: Là các vấn đề nghiêm trọng nhất và cần phải được khắc phục ngay lập tức Nếu có lỗi cấp độ blocker, mã nguồn có thể không thể chạy hoặc chạy không đúng
Critical: Là các vấn đề quan trọng và cũng cần được khắc phục ngay Mặc dù không nguy hiểm như lỗi cấp độ blocker, nhưng vẫn ảnh hưởng đến tính ổn định và chất lượng của ứng dụng Major: Đây là các vấn đề quan trọng nhưng không ảnh hưởng nhiều đến tính ổn định Mã nguồn với lỗi cấp độ lớn vẫn có thể chạy nhưng có thể gặp phải vấn đề trong quá trình sử dụng Minor : Các vấn đề nhỏ, thường là các cảnh báo hoặc điều kiện không tốt, không ảnh hưởng nhiều đến tính ổn định của ứng dụng
Info: Cung cấp thông tin về mã nguồn mà không phải là lỗi Có thể bao gồm các cảnh báo về quy ước mã nguồn, nhưng không phải là vấn đề lớn
- Các tính năng của tool:
Trang 4Kiểm thử tự động chất lượng mã
Phân tích và đánh giá rủi ro bảo mật
Phân loại lỗi và cảnh báo
Báo cáo, thống kê về chất lượng mã nguồn sau khi quét
Hỗ trợ đa ngôn ngữ
Tích hợp vào các hệ thống quản lý (github gitlab)
Cho phép người dùng tương tác trực tiếp trên web
- Mục đích của việc sử dụng SonarCloud:
Tự động hóa quy trình kiểm thử tĩnh
Phát hiện sớm lỗi và lỗ hổng phần mềm
Dễ dàng tích hợp các công cụ quản lý
Dựa vào kết quả kiểm thử để nâng cao chất lượng phần mềm
- Mục tiêu của việc sử dụng SonarCloud:
Tăng hiệu suất kiểm thử phần mềm
Tăng chất lượng mã và bảo mật
Thúc đẩy việc tuân thủ coding convention
3 Test Strategy
Test approach:
Chiến lược thử nghiệm tổng thể:
Tích hợp SonarCloud vào quy trình kiểm thử của dự án để đảm bảo kiểm soát chất lượng mã nguồn trong suốt quá trình phát triển phần mềm
Tập trung chính vào việc sử dụng SonarCloud như một công cụ đánh giá và phản hồi tự động
Kỹ thuật thử nghiệm:
Nhóm em đã sử dụng kỹ thuật kiểm thử hộp trắng thông qua Sonarcloud để đánh giá chất lượng
mã nguồn Bởi vì ưu điểm của kĩ thuật này là tester biết về cấu trúc nội bộ / thiết kế
Nó cho phép tìm kiếm các lỗi ẩn bên trong cũng như giúp cho việc test trở nên kỹ càng hơn Nó
sẽ bao gồm thêm việc phân tích mã nguồn, phát hiện lỗi cú pháp và kiểm tra các nguyên tắc quản lý mã nguồn
Phương pháp thử nghiệm:
Nhóm em đã tích hợp SonarCloud vào quá trình kiểm thử của dự án, đảm bảo mọi commit hoặc pull request đều được kiểm tra tự động
Các phản hồi về chất lượng mã nguồn và các vấn đề liên quan được hiển thị trực tiếp trong giao diện của SonarCloud và được chú ý trong quá trình kiểm thử và xem xét mã
Mức độ thử nghiệm:
Nhóm em đã triển khai SonarCloud ở mức độ nhỏ Đó chính là kiểm thử đơn vị Nó sẽ đảm bảo rằng đường dẫn trong một đơn vị đều được đánh giá và cải thiện
Điều này giúp duy trì một tiêu chuẩn chất lượng mã nguồn cao và giảm thiểu rủi ro lỗi trong quá trình phát triển
Trang 54 Fix bug
1 Đỗ Anh Quân
1.1 Unexpected unknown property "background-font-weight"
- Loại lỗi: Code smell
- Nguyên nhân :Tên thuộc tính không chính xác: Không có thuộc tính CSS như background-font-weight
- Mức độ:Block
- Ảnh trước khi sửa:
- Ảnh sau khi sửa:
1.2 A "NullPointerException" could be thrown; "oldItem" is nullable here
- Loại lỗi: Bug
- Nguyên nhân: Bởi vì nó đang hoạt động trên một giá trị trên một đối tượng có thể có giá trị null
- Mức độ:Major
- Ảnh trước khi sửa:
Trang 6- Ảnh sau khi sửa:
1.3 A "NullPointerException" could be thrown; "p" is nullable here
- Loại lỗi: Bug
- Nguyên nhân :Bởi vì p có thể có giá trị null và mã đang thực hiện thao tác trên nó mà không cần kiểm tra trước
- Mức độ: Major
- Ảnh trước khi sửa:
- Ảnh sau khi sửa:
1 4 'count' is not modified in this loop
- Loại lỗi: Bug(logic deffect)
Trang 7- Nguyên nhân :Bởi vì sử dụng biến đếm trong vòng lặp for mà không có bất kỳ thay đổi nào đối với giá trị của nó trong vòng lặp
- Mức độ: Blocker
-Ảnh trước khi sửa:
- Ảnh khi sửa lỗi:
2 Lê Văn Dũng
2.1 This function expects no arguments, but 1 was provided
- Loại lỗi: Function Argument Error
- Nguyên nhân: Dó lập trình viên tùy ý gọi hàm có tham số hoặc không ,nên gây ra trường hợp này
- Cấp độ lỗi: Critical
- Ảnh lỗi:
Trang 8- Ảnh sau khi sửa lỗi:
2.2 A "NullPointerException" could be thrown; "product" is nullable here
- Loại lỗi: Runtime Bug (Lỗi Thực Thi)
- Nguyên nhân : Do lập trình viên chủ quan không để ý đến trường hợp object is nullable
- Cấp độ lỗi: Major
- Ảnh lỗi:
Trang 9- Ảnh sau khi sửa lỗi:
2.3 Unexpected duplicate "line-height"
- Loại lỗi: Code Smells
- Nguyên nhân : Do lập trình viên quên không xóa những lệnh lặp đi
Trang 10- Cấp độ lỗi: Major
- Ảnh lỗi:
- Ảnh sau khi sửa lỗi:
3 Nguyễn Thị Dung
Trang 113.1 Use try-with-resources or close this "CallableStatement" in a "finally" clause
- Loại lỗi: Resource Leak (Rò rỉ tài nguyên)
- Nguyên nhân: Lỗi này thường xảy ra khi lập trình viên quên đóng tài nguyên sau khi sử dụng, điều này có thể dẫn đến rò rỉ tài nguyên và ảnh hưởng đến hiệu suất hệ thống
- Cấp độ: Blocker
- Ảnh lỗi:
- Ảnh sau khi sửa lỗi:
3.2 Unexpected duplicate "display"
- Loại lỗi: Code Smells
- Nguyên nhân: Do lập trình viên quên không xóa những lệnh lặp đi
Trang 12- Cấp độ: Major
- Ảnh lỗi:
- Ảnh sau khi sửa lỗi:
3.3 Add an "alt" attribute to this image
- Loại lỗi: Code Smells
- Nguyên nhân: do lập trình viên không nghĩ đến trường hợp ảnh bị mất
- Cấp độ: Minor
- Ảnh lỗi:
Trang 13- Ảnh sau khi sửa lỗi:
4 Phan Lạc Trung
4.1 Unexpected shorthand "background" after "background-clip"
- Loại lỗi: Syntax-related bug
- Nguyên nhân: do việc sử dụng thuộc tính background sau thuộc tính background-clip, mà không
có một thuộc tính nào cắt ngắn (shorthand) giữa chúng
- Cấp độ: Critical
- Ảnh lỗi:
- Ảnh sau khi sửa lỗi:
Trang 144.2 Unexpected missing generic font family
- Loại lỗi: Syntax-related bug
- Nguyên nhân: xuất hiện khi trong khai báo font, không có generic font family (ví dụ như serif, sans-serif, monospace) ở cuối cùng của danh sách font family Khi không có generic font family
- Cấp độ: Major
- Ảnh lỗi:
- Ảnh sau khi sửa lỗi:
4.3 A "NullPointerException" could be thrown; "getItemById()" can return null
- Loại lỗi: Logic Bug
- Nguyên nhân: Do phương thức "getItemById()" có thể trả về một giá trị null mà sau đó không được kiểm tra trước khi sử dụng
Trang 15- Cấp độ: Major
- Ảnh lỗi:
- Ảnh sau khi sửa lỗi:
4.4 Unexpected duplicate "transition"
- Loại lỗi: Syntax error
- Nguyên nhân: CSS cho phép tên thuộc tính trùng lặp nhưng chỉ phiên bản cuối cùng của tên trùng lặp mới xác định giá trị thực tế sẽ được sử dụng cho tên đó Do đó, việc thay đổi giá trị của các lần xuất hiện khác của tên trùng lặp sẽ không có tác dụng và có thể gây ra hiểu lầm và lỗi
- Cấp độ: Major
- Ảnh lỗi:
Trang 16- Ảnh sau khi sửa lỗi:
5 Lê Ngọc Khang
5.1
- Loại lỗi: Resource Leak
- Nguyên nhân: PreparedStatement không được đóng sau khi sử dụng, có thể dẫn đến rò rỉ tài nguyên
- Mức độ: Major
- Ảnh trước khi sửa:
Trang 17- Ảnh sau khi sửa:
5.2
-Loại lỗi: Lack of Documentation
-Nguyên nhân: Không có mô tả cho bảng trong cơ sở dữ liệu, điều này có thể gây khó khăn khi cố gắng hiểu cấu trúc và mục đích của bảng
-Mức độ: Info
-Ảnh trước khi sửa:
Trang 18-Ảnh sau khi sửa:
5.3
-Loại lỗi: Dead Store
-Nguyên nhân: Biến session được gán một giá trị nhưng sau đó không được sử dụng Điều này tạo
ra một “Dead Store”, nghĩa là một lưu trữ không cần thiết
-Mức độ: Minor
-Ảnh trước khi sửa:
Trang 19-Ảnh sau khi sửa:
5.4
-Loại lỗi: Hard-Coded Secret
-Nguyên nhân: Khóa bí mật của Facebook (FACEBOOK_APP_ID và
FACEBOOK_APP_SECRET) được mã hóa cứng trong mã nguồn, điều này có thể tạo ra một lỗ hổng bảo mật nếu mã nguồn bị tiết lộ
-Mức độ: Critical
-Ảnh trước khi sửa:
-Ảnh sau khi sửa: