-
Notifications
You must be signed in to change notification settings - Fork 2
Implementation Plan and Testing Plan
2019/10/19, version 1.00
Rev. 0.10 2019-10-19 - beta version
Rev. 0.20 2019-10-19 - modify and add some sentences
Rev. 0.30 2019-10-19 - edit minor details
Rev. 1.00 2019-10-19 - basically completed
The implementation plan of team 3 is to make progress on Papersfeed sprint by sprint. In the early stage of the web development, our focus would be on the tasks which is required for our service, has no dependency on other tasks, and has no need for accumulated data. The features which need a lot of preparation or optional functions would be gradually implemented after that. The specified tasks for this implementation plan are based on pages according to user stories.
The basic features to implement at sprint 2~3 are Sign In/Up, Sidebar and Header for all pages, Profile Page, Paper Detail Page (at sprint 2) and Review related Pages, Collection Page and Search Page (at sprint 3) except complicated functions such as shared collection or elastic search. These functions would be completed with other challenging tasks before sprint 6. And at that stage, all of the features would be checked and tested once again for the stable web service.
Every member should take charge of tasks properly based on their difficulties and the expected time for them. Page views, components, actions and reducers are required for the frontend, and models and related apis are required for the backend. Also, the member in charge of each task should share information about her/his progress with others. More details of implementation plan are as follows. We can modify our plan depending on the situation or add some works for features with low priority but mentioned in the proposal(such as Study group and Paper management support).
Page | Feature | Difficulties | Time(days) | Sprint | Assignee | Challenge |
---|---|---|---|---|---|---|
All | Show notifications | 3 | 2 | 5 | Sangbeom | handling multiple types of notifications |
All | W/ Sidebar/ Header, navigate to other pages | 1 | 1 | 2 | Sumin | |
All | Sign out | 1 | 0.5 | 2 | Davin/Sangbeom | |
Intro | Sign Up/In | 1 | 0.5 | 2 | Davin/Sangbeom | |
Main | Show Subscription feed w/ recommendation system | 5 | 3 | 5 | Sumin | training and testing ml |
History | Show history of papers & reviews | 2 | 1 | 4 | Sumin | |
Collection List | Show & Manage Collection List(+ create) | 2 | 1 | 3 | Jihyo | |
Collection List | Divide Collection List into shared/ not-shared | 1 | 0.5 | 5 | Davin | |
Collection Detail | Show the information of a collection | 2 | 1 | 3 | Davin | |
Collection Edit | Edit the status of collection | 2 | 1 | 3 | Davin | |
Collection Detail | Manage a shared collection(memebers) | 3 | 1 | 5 | Jihyo | implementing ownership & membership |
Profile | Show profile of a user | 2 | 1 | 2 | Jihyo | |
Profile Edit | Edit profile of a user | 3 | 1 | 4 | Jihyo | handling images |
Search | Show search results | 3 | 2.5 | 3/4 | Sangbeom | Azure elastic search |
Paper Detail | Show the information | 1 | 1 | 2 | Davin | |
Paper Detail | Show reviews of a paper | 1 | 1 | 3 | Jihyo | |
Paper Detail | Add paper to a collection | 2 | 0.5 | 3 | Sumin | |
Paper Detail | Show relations between papers w/ references | 4 | 2 | 5 | Jihyo | handling information and visualizing |
Review Create | Make a new review | 1 | 0.5 | 3 | Sumin | |
Review Edit | Edit a review | 2 | 0.5 | 3 | Sumin | |
Review Detail | Show review contents & reply | 2 | 0.5 | 3 | Sumin | |
/data - paper | Make DB of paper | 2 | 1 | 2 | Davin | prasing paper data from academic DB |
/data - paper | Extract keywords from papers w/ ml | 5 | 2 | 4 | Davin | applying NLP |
/data - user | Collect user data for recommendation system | 4 | 2 | 4 | Sangbeom | extracting rank of papers from users’ actions |
It is necessary to implement enough unit tests to prevent new codes from ruining the whole program and facilitate web-development as a team project. Unit Tests of Papersfeed would be divided into two primary parts: backend and frontend. At both parts, tests should be focused on each of modules/classes and carried out until the test coverage of each files reaches more than 80%. For backend testing, Unittest, one of python standard library modules would be used. It could provide a rich set of tools for tests, such as test case, test suite, or test runner. Also, we would apply Jest and Enzyme to frontend unit tests. Jest is a test framework for JavaScript, providing Snapshot test, mocks, spies and so on and Enzyme is a test library of React, especially useful for DOM Rendering.
Functional Tests are conducted at the level of a few methods or classes. We could see if a specific functional requirement is fulfilled well using some methods and classes. So, the important features of Papersfeed, including apis would be mainly tested at this stage by the help of Python unittest, Jest and Enzyme.
Our focus in the stage of Acceptance & Integration Testing is to test more realistic interfaces of this web service instead of using mocks. Cucumber would be used for the acceptance testing to test the user stories written at Sprint 2 and kept updated. Also, Travis CI could help the integration Testing by providing continuous integration tests automatically.