This repository contains selected artifacts from CS-320 (Software Testing, Automation, and Quality Assurance).
For Project One, the primary portfolio submission is the Contact Service set:
6-1ProjectOne/ContactService/Contact.java6-1ProjectOne/ContactService/ContactService.java6-1ProjectOne/ContactService/ContactTest.java6-1ProjectOne/ContactService/ContactServiceTest.java
Additional Project One work in this repository includes Appointment and Task services with matching JUnit tests, showing the same validation-first and test-driven quality approach across modules.
I ensure functionality and security by validating all required inputs at object creation and update time, then enforcing those same rules in service operations. In this project, I used strict constraints such as maximum field lengths, non-null checks, and exact phone-number format validation, then backed those constraints with JUnit tests for both valid and invalid paths. I also tested duplicate IDs, missing records, and invalid lookup/update requests so failures are caught early and handled predictably.
I start from stated requirements and convert each one into a concrete rule in code plus a matching test case. For example, requirements like "ID must be unique," "phone must be 10 digits," and "address length is limited" became explicit validation methods and service-level checks. I treat tests as executable requirements: if a requirement exists, there should be at least one passing test for valid input and one failing test for invalid input.
I design software by separating responsibilities: data classes enforce field-level integrity, while service classes manage business operations like add, update, and delete. This keeps logic modular, easier to test, and easier to maintain. I also design for reliability by preferring small focused methods, predictable exceptions for invalid states, and broad test coverage so behavior remains stable as the code evolves.