#summary Progress tracker for Melange project: Testing, Code Guru and Quality Assurance, GSoC 2011
#labels Phase-QA

<wiki:toc max_depth="3" />

= 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

= 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]

= 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/]

* Coverage Testing - The Good and the Bad [http://www.testingtv.com/2009/12/29/coverage-testing-the-good-and-the-bad/]