testing-debugging/slides.org
changeset 522 d33698326409
parent 521 88a01948450d
child 523 54bdda4aefa5
--- 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
-