Skip to content
This repository has been archived by the owner on Nov 12, 2019. It is now read-only.

Latest commit

 

History

History
347 lines (214 loc) · 11.9 KB

wiki.md

File metadata and controls

347 lines (214 loc) · 11.9 KB

Wiki

Project Management Details

We worked towards an Agile system of light documentation, simplified end-to-end user stories and detailed screen mock-ups containing high-level information only on user flows.

  • Initial Planning – The overall scope of the project was outlined in this phase. High level workflows and the choice of algorithms were decided in this phase.

  • Iteration Planning – The scope for each iteration was outlined. Detailed screen mockup were created in this phase. Screen mock-ups are documented in wiki.

  • Requirements – The specific requirements were gathered, defined and documented into PBIs. The high level workflows were captured as a UML diagram. During this phase, we made assumptions on business values we were trying to deliver. We have constructed our requirements using user stories. PBIs were written in the format of “As a role , I can goal/need so that why ”. goal/need contains project specifications and why contains all the assumptions we collectively made. Workflow diagrams and screen mock-ups are documented in wiki.

  • Analysis & Design – Software architecture and code is designed.

  • Implementation – Construction of the actual code.

  • Testing – Done during the Implementation phase, and done as QA & User Acceptance Testing at the end. Basic unit testings were automated. QA & User Acceptance Testing were done manually. The testing details and known bugs are documented in wiki under web testing cases.


DB ER diagram


PBIs

As an Anonymous User, I want to be able to create an account so I can create polls

MoSCoW - Must
Given a user is not logged in
When a user fills up all the mandatory forms
And all the user inputs are valid
And a user click submit button
Then a user account is created
And automatically go to login page

`Manual System Testing - passed`
`Manual User Acceptance Testing - passed`

As an Anonymous User, I want to be able to see the list of polls so that I can decide what to do next

MoSCoW - Must
Given a user is not logged in
When a user clickes completed poll/current poll from side menu
Then a list of completed and current standing poll should be displayed

`Manual System Testing - passed`
`Manual User Acceptance Testing - passed`

As an Account User, I want to be able to view open polls and completed polls result so that I can see other people's responses

MoSCoW - Must
Given a user is logged in
When a user clicks the completed poll
Then the details and result of the poll should be displayed

`Manual System Testing - passed`
`Manual User Acceptance Testing - passed`

Tech debt - If all the candidates get equal amount of votes, the first candidate ordered by candidate ID will be selected as a winner.

As a Account User, I want to be able to submit my response to a poll so that I can contribute to the poll

MoSCoW - Must
Given a user is logged in
And a user clicked a particular current standing poll
When a user enters the preference order
Then the response should be added to the poll

`Manual System Testing - passed`
`Manual User Acceptance Testing - passed`

As an Account User, I want to be able to create a poll so I can get other people's opinions on a certain matter

MoSCoW - Must
Given a user is logged in
When a user enters the details for a new poll
And all the user inputs are validated
And a user click submit button
Then the poll should be created
And take the user back to the poll list page

`Manual System Testing - passed`
`Manual User Acceptance Testing - passed`

As an Admin User, I want to be able to add a user so that I can let the user create polls

MoSCoW - Must
Given a user is logged in as admin
And a user clicks Users menu
And click create user
And a user fills up all the mandatory forms
And all the user inputs are validated
And a user click submit button
Then the new user should be created

As an Admin User, I want to be able to delete users so that I can prevent a bad user making inappropriate polls and responses

MoSCoW - Must
Given a user is logged in as admin
And a user clicks Users menu
And click archive user
And enter a user ID
Then that particular user should be set inactive

`Manual System Testing - passed`
`Manual User Acceptance Testing - passed`

As an Admin User, I want to be able to add a poll

MoSCoW - Must
Given a user is logged in as admin
When a user enters the details of new poll And a user fills up all the mandatory forms
And all the user inputs are validated
And a user click submit button
Then the poll should be created


`Manual System Testing - passed`
`Manual User Acceptance Testing - passed`

As an Admin User, I want to be able to add responses to a poll

MoSCoW - Must
Given a user is logged in as admin
And a user is in poll details view
When a user enters the preference order
Then the responses should be added to the poll
And the current result should be displayed

`Manual System Testing - passed`
`Manual User Acceptance Testing - passed`

As an Admin User, I want to be able to delete responses from a poll so that I can exclude inappropriate responses from the poll result

MoSCoW - Must
Given a user is logged in as admin
And a user is in poll list view
And a user click archive response
And a user enter a voter's user ID
Then the response should be set inactive
And excluded from results

`Manual System Testing - passed`
`Manual User Acceptance Testing - passed`

As an Account user, I want my poll to be closed automatically so that I don't need to close my poll manually

MoSCoW - Should
Given a user did not specify when to close my poll
When the poll matures 7 days
Then the poll needs to be closed automatically

As an Account user, I want my poll to be closed automatically when the minimum responses are collected so that I don't need to close my poll manually

**MoSCoW - Could **
Given a user did not specify when to close my poll
When the poll matures 7 days
Then the poll needs to be closed automatically

As an Anonymous User, I want to be able to see the results of polls so that I can see other people's responses

MoSCoW - Could
When a user clicks the completed poll
Then the details and result of the poll should be displayed

As an Account User when creating a poll I want to be able to choose the poll completion time using a calendar.

MoSCoW - Could

As an Account user, when creating a poll I want to be able to associate a colour to the poll using a colourwheel

MoSCoW - Won't

As an Account user, I want to be able to see the responses on Google Map if candidates are locational data

MoSCoW - Won't


UML Workflow Diagrams

High Level Workflows

High Level Workflows [PDF Form]

Preferential Vote Workflows

UX UI Design


Web Testing Cases

Functionality Testing

This is used to check if the product is as per the specifications intended for it as well as the functional requirements charted out for it in developmental documentation.

● Testing fields and forms accept correct format / length data

`Register form - passed`
`Create a Poll - failed` (creating choices do not validate the length of input)

● Verifying validation errors are presented to a user where invalid data is entered

`Response form - passed`
`Register form - failed`
`Create a poll form - passed`

● Ensure both internal and external links on a site function correctly

`passed`

● Verifying default values are being populated

`Create a poll form - passed`

● Successful flow through of basic flows in end-to-end business scenarios

`passed` (please see UAT testing results under PBIs)

● Verifying validation errors are presented when the business scenarios are executed incorrectly

`passed`

● Data flow across integration systems

`passed`

Usability Testing

This is used to check if the application is consistent in look, feel, terminology and workflow.

● Consistency of UI, including colours / fonts / layout

`passed`

● Consistency of field names / formatting

`passed`

● Consistency of validation error message text and display formatting

`failed (User registration form does not show why validation has failed)`

● Ensuring no grammatical or spelling errors are present in the application

`passed`

● Business workflow is intuitive

`passed`

Interface Testing

This is used to check that queries made between the application, web and database layers return correct data when queries, and that validation errors are handled correctly.

● Database errors are not shown to the end user

`passed`

● Application requests are handing correctly without being denied by the server

`passed`

● Queries sent to the database return expected results

`passed`

Compatibility Testing

This is used to check that a web application displays correctly across different devices, or at different resolutions. This is using either done based on either market share, or as per requirements.

● Testing across different web browsers

`Chrome - passed`
`IE - failed (will not fix)`
`Safari - failed (will not fix)`
`Firefox - passed`
`Chrome - passed`

● Testing certain combinations of operations systems & browsers

`Windows - passed`
`Mac - passed`
`Linux - Not tested`

Performance Testin

This is used to check a web application works under load. This encompasses load testing, stress testing and responsiveness.

A python script for creating and querying large amount of poll data and loaded to the running web as a stress testing. We did not see any abnormal results.

● Verifying response times are acceptable when executing large queries

`Not tested`

● Verifying system responsiveness when loading data or image heavy page elements

`Not tested

● Caching is implemented effectively

`Not tested`

● Verifying the system responsiveness when large numbers of users are present on the system, or are executing the same functions simultaneously

`Not tested

Security Testing

This is used to check the system contains restrictions for user types, and protects user sessions and data ● Verifying access to unauthorised pages is not permitted

`Front End Web - passed`
`API - failed (access is always denied with @token_auth.login_required)`

● Ensuring that passwords are stored encrypted

`passed`