Skip to content

Commit

Permalink
* Refactor how AIResponseParserTest parameterizes file names (ints in…
Browse files Browse the repository at this point in the history
…stead of full file names).

* Remove ChatGPTServiceTest.java as it was an older way to generate long responses from ChatGPT for testing.
* Add another test file and include in parameters for AIResponseParserTest.java
  • Loading branch information
tmcdonnell2 committed Aug 19, 2023
1 parent ed0f516 commit 9a17db8
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 152 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ class AIResponseParserTest {
private static final Logger logger = LoggerFactory.getLogger(AIResponseParserTest.class);

@ParameterizedTest
@ValueSource(strings = {"test1.txt", "test2.txt", "test3.txt"})
void correctResponseLength(String filename) {
try (InputStream in =
getClass().getClassLoader().getResourceAsStream("AITestResponses/" + filename)) {
@ValueSource(ints = {1, 2, 3, 4})
void correctResponseLength(int fileNumber) {
try (InputStream in = getClass().getClassLoader()
.getResourceAsStream("AITestResponses/test" + fileNumber + ".txt")) {
String response = new String(Objects.requireNonNull(in).readAllBytes());
String[] aiResponse = AIResponseParser.parse(response);

Expand Down

This file was deleted.

27 changes: 27 additions & 0 deletions application/src/test/resources/AITestResponses/test4.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
Software engineering is a multidisciplinary field that encompasses various aspects of developing, designing, testing, and maintaining software systems. It involves the application of engineering principles and practices to create reliable, efficient, and high-quality software solutions. Let's delve into the different aspects of software engineering in detail:

1. Software Development Life Cycle (SDLC): The SDLC is a systematic approach to software development that consists of several phases including requirements gathering, system design, coding, testing, deployment, and maintenance. Each phase has its own set of activities and deliverables to ensure the successful development of software.

2. Requirements Engineering: This phase involves understanding and documenting the needs and expectations of stakeholders. It includes gathering functional and non-functional requirements, analyzing them for feasibility, prioritizing them, and creating a comprehensive requirements specification document.

3. System Design: In this phase, the overall architecture and structure of the software system are defined. It includes creating high-level designs that outline the system components, their interactions, data flow diagrams, database schemas, user interfaces, etc.

4. Coding: The coding phase involves writing the actual source code based on the design specifications. It requires expertise in programming languages such as Java, C++, Python or JavaScript to implement algorithms and logic to achieve desired functionality.

5. Testing: This aspect ensures that the developed software meets quality standards by identifying defects or bugs through various testing techniques such as unit testing (testing individual components), integration testing (testing interactions between components), system testing (testing entire system functionality), performance testing (evaluating system performance under load), etc.

6. Software Configuration Management: This aspect deals with managing changes to software artifacts throughout their lifecycle. It includes version control systems (e.g., Git), build automation tools (e.g., Jenkins), release management processes to ensure proper tracking and control over changes made during development.

7. Software Maintenance: After deployment, software requires ongoing maintenance to fix bugs or issues, enhance functionality, and adapt to changing requirements. This includes activities like bug fixing, patching, performance optimization, and software updates.

8. Software Quality Assurance: This aspect focuses on ensuring that the software meets specified quality standards. It involves defining quality metrics, conducting code reviews, performing audits, and implementing quality control processes to identify and rectify defects.

9. Software Project Management: Effective project management is crucial for successful software development. It involves planning, organizing, coordinating resources (human, financial), setting milestones and deadlines, managing risks, and ensuring timely delivery of high-quality software.

10. Software Documentation: Comprehensive documentation is essential for understanding the software system's design, functionality, and usage. It includes requirements documents, design specifications, user manuals, API documentation, and other technical documents to aid developers and users.

11. Software Engineering Ethics: Ethical considerations are important in software engineering to ensure responsible behavior towards stakeholders. This includes protecting user privacy and data security, adhering to legal regulations (e.g., GDPR), avoiding conflicts of interest or bias in decision-making processes.

12. Software Engineering Tools: Various tools support different aspects of software engineering such as Integrated Development Environments (IDEs) like Visual Studio or Eclipse for coding; project management tools like Jira or Trello for tracking tasks; testing frameworks like JUnit or Selenium for automated testing; collaboration tools like Slack or Microsoft Teams for communication among team members.

These aspects collectively contribute to the successful development of reliable software systems that meet user requirements while adhering to industry best practices and ethical standards.

0 comments on commit 9a17db8

Please sign in to comment.