Skip to content

darrenleeleelee1/Testing_for_CUGR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

Unit Testing and Fuzz Testing for CUGR

Introduction

This project aims to add unit testing and fuzz testing to the CUGR (CUHK VLSI Global Router) project, a detailed routability-driven global router developed by the research team supervised by Prof. Evangeline F. Y. Young at The Chinese University of Hong Kong (CUHK). CUGR focuses on the final detailed routing results, adopting several efficient and effective methods for generating connected rectangles that guide the detailed router.

CUGR Github repository: https://github.com/cuhk-eda/cu-gr

Objective

The objective is to develop a comprehensive suite of unit tests and fuzz tests to ensure the correctness, stability, and robustness of the CUGR project. These tests will help identify potential issues and vulnerabilities in the codebase and ensure that the global router performs as expected.

Approach

  1. Analyze the CUGR project codebase to identify key components and functions that require testing.
  2. Develop unit tests for the identified components and functions using appropriate testing frameworks and libraries.
  3. Implement fuzz testing to identify vulnerabilities and unexpected behavior in the CUGR project. Fuzz testing involves providing invalid, unexpected, or random data as input to the software to find potential crashes, memory leaks, or other issues.
  4. Integrate the unit tests and fuzz tests into the CUGR project's build process, ensuring that all tests are executed and passed during the build.

Technologies

The following technologies and libraries will be used for implementing unit tests and fuzz tests for the CUGR project:

  1. Google Test: A widely-used C++ testing framework for writing and executing unit tests.
  2. LibFuzzer: A library for coverage-guided fuzz testing, which can be used with LLVM's Clang compiler.
  3. AddressSanitizer: A fast memory error detector that can be used in conjunction with LibFuzzer to identify memory-related issues.

Plan

  1. Familiarize yourself with the CUGR project codebase and identify key components and functions that require testing.
  2. Set up the testing environment, including installing and configuring Google Test, LibFuzzer, and AddressSanitizer.
  3. Write and execute unit tests for the identified components and functions using Google Test.
  4. Implement fuzz testing using LibFuzzer and AddressSanitizer to identify vulnerabilities and unexpected behavior in the CUGR project.
  5. Integrate the unit tests and fuzz tests into the CUGR project's build process.
  6. Document the tests, including the test cases, the testing process, and any issues discovered and resolved during testing.
Week Duration Tasks
Week 1 5/4 - 5/10
  1. Team members familiarize themselves with the CUGR project codebase.
  2. Identify key components and functions to be tested.
Week 2 5/11 - 5/17
  1. Set up the testing environment, including installing and configuring Google Test, LibFuzzer, and AddressSanitizer.
  2. Start writing Google Test unit tests.
Week 3 5/18 - 5/24
  1. Complete writing all Google Test unit tests.
  2. Run unit tests, ensuring all tests pass.
  3. Begin implementing fuzz testing using LibFuzzer and AddressSanitizer.
Week 4 5/25 - 5/31
  1. Complete fuzz testing.
  2. Record issues found during fuzz testing.
  3. Resolve all issues found during fuzz testing.
Week 5 6/1 - 6/7
  1. Integrate unit tests and fuzz tests into the CUGR project's build process.
  2. Complete test documentation, including test cases, testing process, and issues discovered and resolved during testing.
  3. Write project report and summary.

Group 12

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published