Welcome to my repository, which contains coursework for the Software Testing course offered at the University of Tehran. This repository includes code for assignments and projects completed throughout the course. The course was instructed by:
The Software-Testing course at the University of Tehran provided an in-depth exploration of various testing methodologies and techniques. The course covered a broad spectrum of topics, beginning with acceptance testing and fixture management, and extending to advanced concepts like model-driven test design and graph coverage.
Students delved into different types of coverage, including graph and logic coverage, learning to apply these techniques to source code and design specifications. The course also addressed input space partitioning, syntax-based coverage, and the development of test oracles.
Further, students explored more specialized areas such as metamorphic testing, symbolic and concolic testing, and software security. The curriculum included practical approaches to search-based software testing, random and directed random testing, property-based testing, fuzz testing, and FSM-based testing, culminating with tools and methods such as FSEN21 and Randoop.
Please find below a brief overview of the contents of this repository:
-
HW1/
: This assignment introduces unit testing and the JUnit framework, a tool for testing software written in Java. The goal is to understand the basics of writing and executing unit tests to verify the correctness of individual program components. -
HW2/
: This assignment focuses on using the PITest tool for mutation testing. The objective is to work with PITest to evaluate the effectiveness of tests by introducing mutations into the code and analyzing the results. -
HW3/
: This assignment involves using JUnit-quickcheck and EvoSuite tools to generate automated test cases for a project management system. -
HW4/
: This assignment focuses on using the Randoop tool to generate automated test cases for a project management system.
This repository is for archival and reference purposes only. The code here might not be updated or maintained. Use it at your own discretion.