{ Cassandra Sand }

Portfolio

Testing Modernization Project
Background

    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.

Goals
  • Understand the capabilities of IntelliJ HTTP Client for ad-hoc API testing.
  • Determine a plan to implement IntelliJ HTTP Client for testing Treasury-owned projects.
  • Simplify and modernize the team's testing framework.
  • Decrease manual work involved in testing to improve team efficiency.
Actions

    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:

Results
  • I completed testing frameworks for three of the team's application during my ten weeks on the team.
  • I speed up the testing process for these three applications by over 80%.

  • It enhanced my understanding of corporate engineering processes by improving my ability to research and resolve issues encountered in my code.
Project Documentation

Sample of Testing Documentation

Photo Editor Application
Background

    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 ability to resize photos with predefined scaling or with custom dimensions using sliders.
  • The ability to recolor photos by adjusting their brightness, hue, contrast and saturation.
  • The option to apply filters such as black and white, grayscale, red, blue, and green.

 

         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.

Goals
  • 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.

  • Non-functional Requirements
    • 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.

Actions

    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.

    

Results
Project Documentation

Software Architecture and Design

UML Diagram

User Interface Designs

Vulnerability Remediation
Background

    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.

Goals
  • Enhance Application Security - Implement measures to identify and mitigate code vulnerabilities effectively.
  • Conduct Regular Vulnerability Assessments - Review weekly vulnerability reports to stay informed about potential security risks. 
  • Update Dependencies - Ensure all application dependencies are current and secure by applying necessary updates promptly.
  • Perform Thorough Testing - Test the updated code rigorously to identify and address any bugs or issues that arise from the updates.
  • Document Security Measures - Maintain clear documentation of vulnerability assessments, updates made, and testing results for accountability and future reference.

 

Actions

    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.

Results
  • I completed 15 different Jira tickets related to vulnerability remediation.
  • I learned how to use Snyk and Jfrog/Artifactory.
  • It helped me get familiar with my Securian agile teams applications.
  • I gained an understanding of how our team's applications incorporate external code dependencies, both from within Securian and from external sources beyond our agile team's direct scope.

Programming Languages

Applications Used