blob: 5675f2c3acba2eca05e62f45f537de3f58a00e3b [file] [log] [blame] [view] [edit]
# Introduction
> This page will serve as a log and a resource for all the development activity being done in this project on testing. I have to write tests for the logic and views of Melange. The framework has undergone a major revision and the old tests are to be re-written.
# Meetings and Agendas
## Monday May 16, 2011 (Community Bonding Period) 10:10 UTC
### Notes
> Location : Gmail Chat
> Chaired by : Leo (Chong Liu)
> Notes taken by: Praveen
* Told Leo that :
* I have not been unable to concentrate on the project due to exams.
* I have started reading the books which I had ordered, _'Django 1.1 Testing and Debugging, Karen M. Tracey'_ and _'Python Testing, Daniel Arbuckle'_
* We discussed how to get started with the project.
* Leo suggested:
* start with soc.logic which are relatively easier and do not require much knowledge of Django and GAE
* reuse the old tests which will require some modifications according to the new framework
* after soc.logic attack modules.gsoc.logic and modules.gci.logic
* write a python/shell script to calculate the frequency of a particular class and function which will give an idea about its importance and need for its thorough testing
* We also discussed what functional testing is which I had not able to explain to Leo
## Wednesday May 24, 2011
### Notes
> Location: Gmail Chat
> Chaired by: Leo
> Notes by: Praveen
* Told Leo that I am going slow at the project and had not implemented the view yet that we were supposed to do.
* We discussed what should the basic approach be while writing a test.
* Leo asked me to refer to some open-source web test runners and see how do they do it and implement a view for my Melange instance. He suggested gaeunit.
* Leo also told me about 'Mocks'.
> ### Coding Plan for this week
* Implement the view
* Write test for at least one module in app.soc.logic
## Friday May 27, 2011
### Notes
> Location: Gmail Chat
> Chaired by: Leo
> Notes by: Praveen
* Asked Leo what apiproxy is. I encountered apiproxy in the source of gaeunit. He explained apiproxy is like a mapping from a function to a function to which it stubs out or replaces.
* Told Leo that I do not want to use gaeunit and rather write my own code for melange. Leo suggested to study gaeunit and see how they do the magic.
* Asked Leo a couple of questions regarding TaskQueues and the meeting concluded with Leo asking me to explore and explore and learn.
## Monday May 30, 2011
### Notes
> Location: Gmail Chat
> Chaired by: Leo
> Notes by: Praveen
* Reported my initial research regarding gaeunit to Leo
* We discussed about how to handle the requests by the browser as there is a time restriction on a process in GAE.
* gaeunit does not use TaskQueues and so Leo suggested that the other way to handle the requests would be by using a JavaScript. But I did not find any JavaScript in the code of gaeunit.
* Since my main project is on testing, Leo put before me two options to choose from i.e to finish the online runner in a week or treat it as a side project and start testing. I chose to finish the online runner as I had already spent lot of time studying about it.
* The conference call was suspended for the week.
## Monday June 6, 2011
### Notes
> Location: Gmail Chat
> Chaired by: Leo
> Notes by: Praveen
* Told Leo that I have written the code for the online test runner and that it needs debugging.
* Leo looked at the errors and told me that Nose uses some modules which are restricted by GAE. So we may have to try other options to make the runner.
* The decision was made to write our own runner with the help of methods in unittest module in python.
> During: Melange Conference Call Chaired by: Sverre Notes by: Praveen
* Told Sverre that I have been working on the online test runner in the week.
* Sverre asked me to take it as a side project and start working on the Testing project now as the time is passing by.
* Leo gave me two days to work on the test runner and finish the work which I started. If I am not successful, start testing.
## Wednesday June 8, 2011
### Notes
> Location: Gmail Chat
> Chaired by: Leo
> Notes by: Praveen
* Informed Leo that I have finished writing the code for the online test runner and that the runner works on the local instance only.
* It does not work on the live instance because our tests make use of gaetestbed library which imports mail\_stub from appengine library and mail\_stub can not work on a live instance as it starts a subprocess which is not allowed.
* Leo asked me to start testing.
## Friday June 10, 2011
### Notes
> Location: Gmail Chat
> Chaired by: Leo
> Notes by: Praveen
* Told Leo that I started working on testing today.
* I asked him if every module in app.soc.logic needs to be tested. He told that all the non-trivial modules which are used presently needs to be tested.
* I told him that I will start with the easier modules like soc.logic.tags, soc.logic.system etc.
# Coding Plan
## May 16 - May 22 (Community Bonding Period)
* Upload a GAE instance and write a view to run all the tests and return all results back
* Write a python script to calculate the frequency of a term in the codebase
* Read Django and GAE documentation.
## May 23 - June 15 (Official Coding Period)
* Generate the directory structure of soc.logic
* Write tests for app.soc.logic and then for modules.gsoc.logic and modules.gci.logic
# Links
**My GSoC Proposal https://github.com/praveen97uma/GSoC-Docs/wiki/Testing,-Code-Guru-and-Quality-Assurance/**
**My melange instance http://melangetesting.appspot.com**
**A Web Test Runner http://code.google.com/p/gaeunit/**
# External Testing Resources
**_All I really need to know about [testable, maintainable, packagable] scripts_ http://www.testingtv.com/2010/01/27/all-i-really-need-to-know-about-testable-maintainable-packagable-scripts/**
**Building Tests for Large, Untested Codebases http://www.testingtv.com/2009/12/31/building-tests-for-large-untested-codebases/**
**Paver - Easy Build and Deployment Automation Tool for Python Projects http://www.testingtv.com/2010/02/03/paver-easy-build-and-deployment-automation-for-python-projects/**