Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Google Summer of Code 2014 Project Proposal

Google Summer of Code 2014 Project Proposal

My proposal for the project titled "Functional Test Suite and Features for QA Taskboard ­ One and Done" under Mozilla Corporation for GSoC 2014

Pankaj Malhotra

March 20, 2016
Tweet

More Decks by Pankaj Malhotra

Other Decks in Programming

Transcript

  1. ​ Functional Test Suite and Features for QA Taskboard ­

    One and Done Pankaj Malhotra [email protected] IRC : bitgeeky Skype : bitgeeky +919642528464 India (UTC+5:30) Link to Mozillians Profile Abstract The aim of this project is to write functional tests using Selenium WebDriver focusing on testing from the end user’s perspective for the features developed in QA team’s on going project ​ One and Done​ for ​ Version 1 Milestone 1​ , Try and adapt new/better ways of testing which do not exist in current model of testing for Web QA projects such as using FactoryBoy for data population. Add features to automate the process of task creation, and develop a Firefox extension to deliver user notifications for ​ Version 2.0​ . Project Proposal This project would primarily be divided in two main parts: 1 Writing Functional tests These tests would be written using Selenium WebDriver for test Automation and ​ Pytest plugin​ developed by QA team specifically for Web QA projects, following the ​ Web QA Syle Guide​ and the standard template focusing on desktop and mobile versions.The current model of testing with WebDriver relies on test data or real data which is imported from production but here we would like to use ​ FactoryBoy​ for easier/better data population and testing like In wiki­tests we have a ​ mock user class​ which can be replaced by a ​ UserFactory by adding suitable default values for attributes to create better tests. Similarly these tests will have separate factories for user, task, profile, feedback and other data objects which would require sample/mock data to be used in tests. Link​ to sample test for a simple Django application and my experiments with FactoryBoy. These functional tests would cover the features for the ​ version 1.0​ namely Home Page features Authorization Sign In/Sign out Create Profile View Profile View Task Task List Task Execution Task Resume User Feedback also as the project would proceed, this will involve more tests for the features that would be developed for version 2.0.
  2. 2 Adding Features for Milestone­2 The two features that would

    be added as a part of this project for Version 2.0 would be Semi­automate the process of Task Creation For the current developed version the task creation is done manually , which would become very time consuming as the scope of this application increases. So the proposed solution is to fetch the tasks from Bugzilla(BMO) and GitHub filtering them on specific labels eg : The tasks having “good first bug” label or the ones with assigned mentor on Bugzilla and Community label on GitHub. and populate the database with task ID, title, summary and other relevant information, from which the mentor could add the rest of details(eg time required for task completion) and make the task live, thus reducing the search effort for the task creator. This would be achieved using the ​ Bugzilla’s Rest API​ and some of the stable search features of Bugzilla’s Webservices API​ to filter the BMO tasks and ​ Github Search API​ to filter open Community issues on Github. The request would be made using the standard ​ Python Requests library​ , which would fetch data in JSON format , and a cron job would be set to update the data in json files , as soon as any new data gets entered , it would be pushed to the application database. A ​ very basic​ JavaScript implementation just to fetch some tasks, which I made while reading about both the API looks like : ​ http://bitgeeky.github.io/bugbin/ Build Firefox Extension for Task Notifications This feature which will involve development of Firefox extension using Firefox Add­on SDK with minimal functionality to deliver Notification to registered user about the open tasks after filtering them according to the user’s interest. The development of this add­on would be in accordance with the automation of tasks as mentioned in previous point , as soon as the data in JSON file gets updated , and is ready to be pushed to database , it (Task ID) would also be added to user interest column according to the interests mentioned in package.json(​ preferences​ ) file for the extension, and the Add­on would poll the data on server using ​ XHR polling and make XMLHttprequest() to receive data in JSON format , and notify user about the newly created task using the SDK’s ​ notification API​ to interact with Desktop environment. Feature to stop and start getting notifications would be included , so that user doesn’t lose data if on limited data connection. As per the​ GSOC timeline ​ Work will begin after Google announces list of accepted projects i.e on ​ 21 April 2014 [21April ­ 19 May] Community Bonding, Boost my knowledge about the API’s and Skills required for the project. Design exact structure for factories to be used and get it reviewed. [19 May ­ 3 June] (2 weeks) Write Selenium tests for the features covered in ​ Milestone1
  3. [3 June ­ 10 June] (1 week) Get everything merged

    in master branch and fix any kind of issues if arise or clearing any kind of backlog (if everything is fine then directly jump to next task) Start Preparing Code for the Mid­Term Evaluation [10June ­ 17June] (1 week) Start working on GITHUB API and BMO(Bugzilla) API to fetch the tasks from them based on priority and labels , for GitHub labels can be used like good first / beginner/ easy , priority : low/high etc (exact filtering labels to be discussed and decided upon) [17June ­ 24June] (2 weeks) Semi­Automate task creation(i.e to reduce work of task creator) after fetching tasks from GitHub and Bugzilla The task creator would be given a list of pre­populated tasks which he can modify and make the task live . [24June ­ 1July] (1 week) Get everything merged in master branch and fix any kind of issues if arise or clearing any kind of backlog (if everything is fine then directly jump to next task) [2July ­ 16July] (2 weeks) Start Developing Firefox Add­on to deliver notifications to users , the exact filtering of interest still to be decided upon. [16July ­ 23July] (1 week) Test and get everything merged in master branch and fix any kind of issues if arise or clearing any kind of backlog (if everything is fine then directly jump to next task) [23July ­ 30July] (1 week) Write Functional Test Suite(Selenium Tests) for the developed Features of Version­2​ and the features added to the Site as a part of this project [1Aug ­ 14Aug] (2 weeks) Improve/Write unit tests for the code. Get everything Merged in master / Test everything .Document completely the instructions to run tests, write WIKI about all the features developed. Prepare code for final Evaluation. I would be blogging about my weekly progress on my ​ Coding Blog​ and pushing the code to my GitHub repository​ . I would have summer break during the project duration and have no prior commitments so would be able to devote most of my time to the project. Also apart from the above mentioned ideas I would like to develop more features for this project for version 2.0 and carry on as a regular contributor to Mozilla. Open Source Experience, Contributions and Why Me I have been Contributing to Mozilla from the past year and working with the Web QA team to write Python based Gai­UI­Tests for Firefox OS using the Marionette API similar to the selenium WebDriver. I have also been running Automated tests on Mozilla websites, Fixing bugs, Opening GitHub issues, and writing Selenium WebDriver tests for Web QA projects. I have been also active on IRC channel #mozwebqa and #qa for the entire phase of my contributions.In this duration I have mainly worked with Dave Hunt(:davehunt), Zac Campbell(:zac), Stephen Donner(:stephend), Rebecca Billings(:rbillings), and Bob Silverberg(:bsilverberg)[who would mentor me for this project] , Sometimes I also hang in #ateam and have fixed one bug and opened one issue related to
  4. Talos Tests. Links to some of my major pull requests

    on GitHub Bug 944426 Test for flow from messages app to messaging Settings Bug 930992 Create a System app region for app install Confirmation Bug 931781 Use timeout arg on command line to change timeout duration Bug 923821 Repair and re­enable test_killall.py [marketplace­tests]Test the functionality to switch between New/Popular Tabs [marketplace­tests]Test to verify view all link in the New/Popular section [remo­tests]Added Instructions for running tests that require user login List of other patches that I have contributed and bugs I have participated in is Link to Bugzilla(BMO) bugs search query I also have other minor pulls : ​ [mozwebqa­dashboard]changed URL for proper content updation and opened issues: ​ [remo­tests]Update Readme ­ Add Instructions to run Tests for the Mozilla Repositories as visible from my GitHub activity and many of my projects on GitHub. I also contribute to other Open Source projects: ​ Hooked Travis CI for Privly​ ’s Content Server Link to my GitHub Profile Also while doing my research related to this project about API’s I made a very small application/web interface that covers some of the above mentioned solutions at basic level and have written very basic test for it , following the Mozilla Web QA test Template ​ Link to Application also blogged about my experiments with the new testing methods ​ Link to blog post I also have a few badges as token of reward , ​ Link to Open Badges profile I have thoroughly researched about the implementation details mentioned in this proposal, created prototypes, done experiments, and have also get them reviewed by mentor for this project(Bob Silverberg) and the manager(Stephen Donner) for Web QA team. Academics I am pursuing Bachelor’s Degree in Computer Science and Engineering from ​ International Institute of Information Technology​ . I am doing fairly good in academics , My current CGPA is 7.2/10 Work Experience Apart from academics I am currently working in the Software Engineering Research Centre(​ SERC​ ) lab of my college to design and develop an Android and IVR based Health Service System. whose use case can be found ​ here​ . I have also worked in a team to build an Android GPS Tracking System as a course project which was showcased in the annual Research and Development(R&D) Showcase of my University and attracted many purchasers from various firms. A small video showing the working Application : ​ Link to video Why Mozilla
  5. I have learnt a lot by getting involved with various

    Open Source projects and Communities , I owe my learning to them also I feel its my time to start giving back to the Free and Open Source Software Community.I also believe in Mozilla’s mission to promote open standards on the web.Thus I would like to work with Mozilla and play a part in furthering the Mission.