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

<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

== Wednesday May 24, 2011 ==

===Notes===
  Location:       Gmail Chat
  Chaired by:     Leo (Chong Liu)
  Notes taken 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
 
= 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/]

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