--- a/testing-debugging/slides.org Wed Nov 17 23:24:57 2010 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-#+LaTeX_CLASS: beamer
-#+LaTeX_CLASS_OPTIONS: [presentation]
-#+BEAMER_FRAME_LEVEL: 1
-
-#+BEAMER_HEADER_EXTRA: \usetheme{Warsaw}\usecolortheme{default}\useoutertheme{infolines}\setbeamercovered{transparent}
-#+COLUMNS: %45ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Env Args) %4BEAMER_col(Col) %8BEAMER_extra(Extra)
-#+PROPERTY: BEAMER_col_ALL 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 :ETC
-
-#+LaTeX_CLASS: beamer
-#+LaTeX_CLASS_OPTIONS: [presentation]
-
-#+LaTeX_HEADER: \usepackage[english]{babel} \usepackage{ae,aecompl}
-#+LaTeX_HEADER: \usepackage{mathpazo,courier,euler} \usepackage[scaled=.95]{helvet}
-
-#+LaTeX_HEADER: \usepackage{listings}
-
-#+LaTeX_HEADER:\lstset{language=Python, basicstyle=\ttfamily\bfseries,
-#+LaTeX_HEADER: commentstyle=\color{red}\itshape, stringstyle=\color{red},
-#+LaTeX_HEADER: showstringspaces=false, keywordstyle=\color{blue}\bfseries}
-
-#+TITLE: Testing and debugging
-#+AUTHOR: FOSSEE
-#+EMAIL:
-#+DATE:
-
-#+DESCRIPTION:
-#+KEYWORDS:
-#+LANGUAGE: en
-#+OPTIONS: H:3 num:nil toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
-#+OPTIONS: TeX:t LaTeX:nil skip:nil d:nil todo:nil pri:nil tags:not-in-toc
-
-* Outline
- - What software Testing is?
- - Learn to test simple functions for their functionality.
- - Learn how to automate tests.
- - Need for coding style and some of the standards followed by the Python Community.
- - Handling Errors and Exceptions.
-
-* gcd function
- - Create gcd.py file with:
-#+begin_src python
- def gcd(a, b):
- if a % b == 0:
- return b
- return gcd(b, a%b)
-#+end_src python
-
-* Test for gcd.py
- - Edit gcd.py file
-#+begin_src python
- def gcd(a, b):
- if b == 0:
- return a
- return gcd(b, a%b)
-
- if __name__=='__main__':
- result = gcd(48, 64)
- if result != 16:
- print "Test failed"
- print "Test Passed"
-
-#+end_src
-
-* Automating tests
-#+begin_src python
- if __name=__='__main__':
- for line in open('numbers.txt'):
- numbers = line.split()
- x = int(numbers[0])
- y = int(numbers[1])
- result = int(numbers[2])
- if gcd(x, y) != result:
- print "Failed gcd test
- for", x, y
-#+end_src
-
-* Question 1
- For the same inputs as gcd write automated tests for LCM.
-* Solution 1
-#+begin_src python
- def gcd(a, b):
- if a % b == 0:
- return b
- return gcd(b, a%b)
-
- def lcm(a, b):
- return (a * b) / gcd(a, b)
-
- if __name__ == '__main__':
- for line in open('lcmtestcases.txt'):
- numbers = line.split()
- x = int(numbers[0])
- y = int(numbers[1])
- result = int(numbers[2])
- if lcm(x, y) != result:
- print "Failed lcm test for", x, y
-
-#+end_src
-
-* Meaning full names
-#+begin_src python
-
- amount = 12.68
- denom = 0.05
- nCoins = round(amount / denom)
- rAmount = nCoins * denom
-
-#+end_src
-
-* Code style
- - Four Space Indentation
- - 79 character limit on a line
- - Funtions should be seperated by
- blank line
- - Use Docstring
- - White space around operators
- - l = 32 % 4
-
-* Question 2
- - Give meaningful names to the variables in following
- code
-
- - c = a / b
-
-* Solution 2
-#+begin_src python
-
- quotient = dividend / divisor
-
-#+end_src
-
-* Code Snippet
-#+begin_src python
-
- while True print 'Hello world'
-
-#+end_src
-
-* Error
-#+begin_latex
-\begin{lstlisting}
- while True print 'Hello world'
- \end{lstlisting}
- \begin{lstlisting}
- File "<stdin>", line 1, in ?
- while True print 'Hello world'
-SyntaxError: invalid syntax
-\end{lstlisting}
-#+end_latex
-
-* Code Snippet
-#+begin_src python
- a = raw_input("Enter a number")
- try:
- num = int(a)
- except:
- print "Wrong input ..."
-
-#+end_src
-
-* Using idb
-#+begin_latex
-\small
-\begin{lstlisting}
-In []: import mymodule
-In []: mymodule.test()
----------------------------------------------
-NameError Traceback (most recent call last)
-<ipython console> in <module>()
-mymodule.py in test()
- 1 def test():
- 2 total=1+1
-----> 3 print spam
-NameError: global name 'spam' is not defined
-
-In []: %debug
-> mymodule.py(2)test()
- 0 print spam
-ipdb> total
-2
-\end{lstlisting}
-
-#+end_latex
-
-
-
-* Summary
- - Create simple tests for a function.
- - Learn to Automate tests using many predefined test cases.
- - Good coding standards.
- - Difference between syntax error and exception.
- - Handling exception using try and except.
- - Using %debug for debugging on ipython.
-
-* Thank you!
-#+begin_latex
- \begin{block}{}
- \begin{center}
- This spoken tutorial has been produced by the
- \textcolor{blue}{FOSSEE} team, which is funded by the
- \end{center}
- \begin{center}
- \textcolor{blue}{National Mission on Education through \\
- Information \& Communication Technology \\
- MHRD, Govt. of India}.
- \end{center}
- \end{block}
-#+end_latex
-