Previous to this project, my agile team at Securian Financial used Postman to test API calls for all their owned applications. However, Postman changed the available capabilities in their free tier, which made it no longer effective to meet the team’s testing requirements. Securian recommended using IntelliJ HTTP Client as the primary tool for ad-hoc API testing as Postman would no longer be supported by the end of the year.
First, I completed research on IntelliJ HTTP Client, HTTP fundamentals and authorization headers, and the differences and similarities of REST and SOAP API’s. I also reviewed the applications documentation to determine the requirements for developing comprehensive tests that addressed all aspects of the application.
The initial challenge I overcame was learning how to correctly format HTTP requests for both REST and SOAP API's. I had to learn both JSON and XML formatting. In addition, several of the applications utilized AWS for user authorization. I acquired proficiency in various AWS products and developed a solid understanding of authorization fundamentals.
I found that in order to effectively test the HTTP response interactions within the application, it was necessary for me to teach myself JavaScript programming. Upon completing the test development, I found that while the testing process was efficient, the HTTP files were excessively lengthy. To address this, I created separate JavaScript files to export common methods, thereby reducing the size of the HTTP testing file.
Example of simple GET request using IntelliJ HTTP Client:
I speed up the testing process for these three applications by over 80%.
For my semester project in Object-Oriented Programming, my team created a photo editor application. The photo editor application needed to include many features such as:
The visual design of the application is straightforward, allowing for new and experienced users to easily navigate the various features and apply them. The photo editor application also makes it easy to upload a photo, by drag-and-dropping the photo directly into the application window or using a File Explorer window. In addition, the application has an easy save photo option.
Functional Requirements
Upload Photos to Editor - The application allows users to upload photos either by drag-and-drop or through a file selection dialog under the "File" tab. It supports .png, .jpeg, and .gif files, catering to common image formats.
Resize Photos - Users can resize uploaded photos via the "Resize" tab, with predefined scales or custom dimensions using sliders. This feature offers flexibility in adjusting the photo size according to the user's needs.
Recolor Photos - The "Adjust Color" tab enables users to modify the brightness, hue, contrast, and saturation of photos using sliders. This provides a simple interface for enhancing or changing the mood of an image.
Apply Filters - Users can apply various filters (black and white, grayscale, red, blue, and green) through the "Apply Filter" tab. An option to revert to the original photo ensures flexibility in editing.
Clear Workspace - The "Clear Workspace" function under the "File" tab prompts users to save before clearing, ensuring that work is not lost accidentally. This helps maintain a clean workspace for new projects.
Save Photo to Device - The "Save" option allows users to choose the file name, location, and format for saving edited photos. A confirmation message enhances the user experience by confirming the action.
Quality - The application's clear display options, variety of editing tools, and reliable upload/download capabilities ensure a high-quality user experience.
Extensibility - By using the abstract class "Filter", the application is designed for easy expansion. Well-documented code enhances maintainability and future development.
Performance/Response Time - The efficient processing of user interactions and quick upload/save times demonstrate the application's optimal performance and responsiveness.
Reliability - Extensive testing and a structured approach to code organization ensure that the application's functionalities, like filtering, recoloring, resizing, and file handling, are reliable.
I conceived the initial idea for the photo application and took a leadership role in delegating tasks among team members. I managed our group communications and helped to maintain our project's deadlines.
I developed a Use Case Diagram and created the UML Class Diagram, defining the initial classes for the program while assisting team members with the diagram concepts. I developed the application's Photo interface and the UserPhoto class. I also assisted a team member with creating the .fxml file using Scene Builder, addressing challenges he faced. I developed and testing approximately 80% of the code.
I integrated the PhotoEditorGUI.fxml into the project and independently created and edited several classes, including UserPhoto, Photo, Filter, BlackAndWhiteFilter, GrayscaleFilter, RedFilter, BlueFilter, and GreenFilter. Additionally, I implemented several methods in the controller class.
For the end of the project, I authored the software architecture and design documentation, as well as the development process section and my project review. I also designed five updated user interface layouts.
We successfully created a GUI for our photo application.
To ensure the security of our applications, the Securian Financial Information Security team conducts weekly assessments to identify potential code vulnerabilities. As a developer, it is crucial to uphold security standards across all applications. My weekly responsibilities included reviewing the vulnerability report, identifying the appropriate updates for our dependencies, implementing those updates, and subsequently testing the code to identify and resolve any issues.
I acquired proficiency in using GitHub for version control, including the processes of pulling, pushing, and committing changes. Additionally, I learned how to manage program versions by posting to and pulling from JFrog/Artifactory. To successfully complete vulnerability tasks, I also developed the ability to interpret corporate code and effectively document my changes utilizing corporate resources.