Updated: 04/12/16

Testing

Testing will be done throughout the project’s lifecycle to guarantee a high standard for our work. This section will outline the different testing strategies we will employ.


Unit Testing

Unit testing is where single components are tested for their functionality. This is ought to be done at the end of each feature sprint to ensure the said features or components are working as they were initially supposed to. Unit testing will be conducted manually and automatically.


Integration & Functional Testing

Due to the multi-teamed nature of our project, many components will be built independently by different team, thus communication is the key to ensure proper integration of these components. Integration will serve to ensure our independent systems work seamlessly with each other. More particularly, we as the UI team are focusing on the frontend, and we are working with many backend teams for our main features. If these systems are not fully integrated and interconnected, the product will no doubt be nonfunctional.

We will be conducting manual and automated testing on our product. Manual testing will be done alongside the development process, while automated testing will run weekly.

“Selenium” is the standard testing framework used for testing React applications. It is used for end-to-end testing, whereby test scenarios are implemented. We have chosen selenium due to the follow advantages it offers:

  • Purely open source
  • Supports Windows, Macintosh, Linux, Unix and more
  • Supports a variety of browsers such as internet explorer, google chrome, mozilla firefox, safari and more
  • Can be used for continuous integration
  • The downside is that Selenium testing script may take some time to produce.


    User Acceptance Testing

    When a significant proportion of the project becomes functionally sound and is thus sufficient to demonstrate multiple functionalities, we will conduct user acceptance testing in two separate stages: alpha and beta. We will be internally testing the application rigorously against our user requirements. In addition, we have to take into account human computer interaction sub-areas such as ease of use, learnability, clarity and much more because even when the project meets all the requirements, it may still be rejected for its lack of usability. Once done with the alpha-testing and necessary changes are made, we will move on to beta-testing where the product is tested on our client and potential users. At this stage, observation of user & application interactions as well as interviews will reveal problematic areas that need to be improved or fixed.

    While alpha-testing can be done daily throughout the testing process, it’s unrealistic and unreasonable to assume the same level of frequency for beta-testing. We meet with our client weekly, so this is an opportunity to beta-test our product but also receive relevant feedback. However, we plan to conduct user-testing with real world users other than our client biweekly, so we would have time to implement sufficiently new features and fixes.


    Tags

    plans for term 2 design patterns performance analysis experiments version control our project