summaryrefslogtreecommitdiff
path: root/testing_and_debugging/slides.org
diff options
context:
space:
mode:
authorPuneeth Chaganti2010-12-01 16:51:35 +0530
committerPuneeth Chaganti2010-12-01 16:51:35 +0530
commitf3a34dfb4e879f3eb7274704f44546aac4add88f (patch)
tree1cb0a8cc5dbd5ee2b374350915ed2addfa0fb447 /testing_and_debugging/slides.org
parent347866ed0d29db61ee062563b1e1616cfb85588c (diff)
downloadst-scripts-f3a34dfb4e879f3eb7274704f44546aac4add88f.tar.gz
st-scripts-f3a34dfb4e879f3eb7274704f44546aac4add88f.tar.bz2
st-scripts-f3a34dfb4e879f3eb7274704f44546aac4add88f.zip
Renamed all LOs to match with their names in progress.org.
Diffstat (limited to 'testing_and_debugging/slides.org')
-rw-r--r--testing_and_debugging/slides.org209
1 files changed, 209 insertions, 0 deletions
diff --git a/testing_and_debugging/slides.org b/testing_and_debugging/slides.org
new file mode 100644
index 0000000..23dc2f4
--- /dev/null
+++ b/testing_and_debugging/slides.org
@@ -0,0 +1,209 @@
+#+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
+