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

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