Skip to content

Latest commit

 

History

History
159 lines (111 loc) · 11.6 KB

TESTING.md

File metadata and controls

159 lines (111 loc) · 11.6 KB

Testing

Return back to the README.md file.

Table of Contents

Introduction

Software testing is a common practice and a crucial step in the development process that ensures the quality, functionality and reliability of a web application. There are two primary approaches to testing - manual and automated. They both play vital roles in the process.

Both manual and automated testing have their strengths and limitations, but let's focus on the strengths. Manual testing offers flexibility and human insight, while automated testing provides efficiency and repeatability. Combining these two approaches can help achieve comprehensive test coverage.

Manual Testing

Manual Testing involves human testers who interact with the software and assess its behavior against predefined criteria. This method relies on the tester's intuition, experience, and creativity to identify defects, making it particularly effective in exploratory testing and scenarios where user interaction is complex or subjective.

"It's just a phase!" has been tested manually to check if the project works according to the user stories, to check its performance in different browsers and to check its responsiveness at different resolutions. Some manual testing was also performed while writing JavaScript code and checking its outcome by using console.log method. Some friends and family members were invited to test the app on their devices and to check for potential functionality issues.

Automated Testing

Automated Testing, on the other hand, employs specialized testing tools and scripts to automate the execution of test cases and verification of results. It excels in repetitive, time-consuming, and regression testing scenarios, where the same tests need to be run repeatedly to ensure new code changes do not introduce defects.

All tests described and documented in the Code Validation and the Lighthouse Audit sections are automated tests.

Code Validation

The W3C Markup Validation Service and The W3C CSS Validation Service were used to validate every page of the project to ensure there were no syntax errors. The results clearly showed that the website stays in compliance with the standards and recommendations set by the World Wide Web Consortium.

JSLint, a static code analysis tool, was used to check if JavaScript source code complies with coding rules. No errors were found in this area.

HTML Validation

I have used the recommended HTML W3C Validator to validate all of my HTML files. No errors were found. A few minor warnings appeared indicating empty headings in index.html file. The headings were empty for a reason though as they were designed to be containers for external API's data.

Page W3C URL Screenshot Notes
Current Moon Phase W3C index.html validation Pass: No Errors
Moon Cycle Explained W3C comment.html validation Pass: No Errors
FAQ W3C faq.html validation Pass: No Errors
Gallery W3C gallery.html validation Pass: No Errors

CSS Validation

I have used the recommended CSS Jigsaw Validator to validate my CSS file. No errors were found.

File Jigsaw URL Screenshot Notes
style.css Jigsaw style.css validation Pass: No Errors

JS Lint Testing

I have used JSLint to identify potential errors in my two JavaScript files. No errors were found.

File Screenshot Notes
script.js script.js No errors found
gallery.js gallery.js No errors found

Browser Compatibility

I have tested my deployed project on multiple browsers to check for compatibility issues.

Browser Screenshot Notes
Chrome screenshot Works as expected
Firefox screenshot Works as expected
Edge screenshot Works as expected
Opera screenshot Works as expected

Responsiveness

I have tested my deployed project on multiple devices to check for responsiveness issues. It responds well to different screen sizes ensuring that users can access and navigate the content effortlessly, regardless of their chosen device. No design or functionality issues were found.

Device Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Notes
Mobile (DevTools) screenshot1 screenshot2 screenshot3 screenshot4 Works as expected
Tablet (DevTools) screenshot1 screenshot2 screenshot3 screenshot4 Works as expected
Desktop screenshot1 screenshot2 screenshot3 screenshot4 Works as expected

Lighthouse Audit

I have tested my deployed project using the Lighthouse Audit tool to check for any major issues.

Page Size Screenshot Notes
Current Moon Phase Mobile screenshot Few warnings
Current Moon Phase Desktop screenshot Few warnings
Moon Cycle Explained Mobile screenshot Few warnings
Moon Cycle Explained Desktop screenshot Some minor warnings
FAQ Mobile screenshot Some minor warnings
FAQ Desktop screenshot Some minor warnings
Gallery Mobile screenshot Few warnings
Gallery Desktop screenshot Some minor warnings

User Stories Testing

Client Goals

User Stories Completed?
As a client, I would like to provide users with accurate and up-to-date information about the current phase of the Moon. This could include displaying the Moon's appearance, percentage of illumination, distance to the Moon from Earth, and other relevant details. ✔️
As a client, I would like to educate users about the different phases of the Moon and the science behind them. It could provide explanations, diagrams, and relevant images to help users understand the lunar cycle. ✔️
As a client, I would like to provide a visual calendar that displays the Moon phases for a specific period (e.g., a year) that can help users track the Moon's changing appearance over time. ✔️
As a client, I would like to deliver all of the above in the form of a visually appealing, intuitive, responsive across different devices and easy to navigate website. ✔️

First Time User Goals

User Stories Completed?
As a first time user, I should be able to quickly and easily see the current phase of the Moon, whether it's a Full Moon, New Moon, Waxing Crescent, Waning Gibbous, etc. ✔️
As a first time user, I should be able to access more than just the current Moon Phase. I should be able to see additional information such as Moon illumination percentage, number of days through the cycle, number of days till the next Full Moon, etc. ✔️
As a first time user, I should be able to explore a calendar view that shows the Moon's phases for a specific period, helping me understand how the Moon's appearance changes over time. ✔️
As a first time user, I should be able to learn about the different phases of the Moon, their significance and why the Moon's appearance changes over time. ✔️
As a first time user, I should be able to navigate throughout the page in an easy, effortless and intuitive way. ✔️
As a first time user, I should be able to have a positive and enjoyable experience while browsing the website. ✔️

Returning/Frequent User Goals

User Stories Completed?
As a returning/frequent user, I should be able to continue tracking the Moon's changing phases to deepen my understanding of the Lunar Cycle. ✔️
As a returning/frequent user, I should be able to plan upcoming activities that align with specific Moon phases, such as outdoor events, photography sessions, or astronomical observations. ✔️
As a returning/frequent user, I should be able to revisit the website's settings to fine-tune my preferences, such as adjusting my time zone or choosing my favorite locations. Take a look at the Future Implementations section in README.md file.
As a returning/frequent user, I should be able to share my own observations, photos, or experiences related to Moon phases within the website's community. Take a look at the Future Implementations section in README.md file.
As a returning/frequent user, I should be able to stay informed about upcoming celestial events beyond Moon phases, such as meteor showers, planetary alignments, asteroids and comets. Take a look at the Future Implementations section in README.md file.
As a returning/frequent user, I should be able to access the provider's social media accounts. ✔️
As a returning/frequent user, I should be able to offer feedback to the app developers based on my experiences, helping to shape future updates and improvements. Take a look at the Future Implementations section in README.md file.

Fixed Bugs

  • The Lunar Cycle Calendar was initially delivered in markdown format. I have managed to find the library that successfully converted it into HTML.

Markdown response

  • The calendar used to display all months as 31-day-long, except December, which should be 31-day-long, but was displayed one day shorter. As suggested by my mentor, I used a for loop to delete all extra days. It didn't affect the Moon Phases. The data is still correct and up-to-date.

Old calendar

Unfixed Bugs

There are no remaining bugs that I am aware of.