summaryrefslogtreecommitdiff
path: root/testing_and_debugging/slides.org
diff options
context:
space:
mode:
Diffstat (limited to 'testing_and_debugging/slides.org')
-rw-r--r--testing_and_debugging/slides.org190
1 files changed, 107 insertions, 83 deletions
diff --git a/testing_and_debugging/slides.org b/testing_and_debugging/slides.org
index 23dc2f4..f67d8d1 100644
--- a/testing_and_debugging/slides.org
+++ b/testing_and_debugging/slides.org
@@ -18,7 +18,7 @@
#+LaTeX_HEADER: commentstyle=\color{red}\itshape, stringstyle=\color{red},
#+LaTeX_HEADER: showstringspaces=false, keywordstyle=\color{blue}\bfseries}
-#+TITLE: Testing and debugging
+#+TITLE:
#+AUTHOR: FOSSEE
#+EMAIL:
#+DATE:
@@ -29,13 +29,37 @@
#+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.
-
+*
+#+begin_latex
+\begin{center}
+\vspace{12pt}
+\textcolor{blue}{\huge Testing and Debugging}
+\end{center}
+\vspace{18pt}
+\begin{center}
+\vspace{10pt}
+\includegraphics[scale=0.95]{../images/fossee-logo.png}\\
+\vspace{5pt}
+\scriptsize Developed by FOSSEE Team, IIT-Bombay. \\
+\scriptsize Funded by National Mission on Education through ICT\\
+\scriptsize MHRD,Govt. of India\\
+\includegraphics[scale=0.30]{../images/iitb-logo.png}\\
+\end{center}
+#+end_latex
+* Objectives
+ At the end of the tutorial, you will be able to,
+
+ - Understand what is software testing.
+ - Test simple functions for their functionality.
+ - Automate tests.
+ - Understand the need for coding style
+ - Learn some of the standards followed by the Python Community.
+ - Handle Errors and Exceptions.
+
+* Pre-requisite
+Spoken tutorial on -
+- Getting started with functions.
+- Advanced Features of functions.
* gcd function
- Create gcd.py file with:
#+begin_src python
@@ -61,42 +85,49 @@
#+end_src
+* Idiom
+if \_\_name\_\_ == '\_\_main\_\_':
+* Exercise 1
+ - Write code for gcd and write tests for it
+* Structure of file
+ | 12 | 28 | 4 |
+ | 18 | 36 | 18 |
+ | 4678 | 39763 | 2339 |
* 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
+ 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
+ else:
+ print "Test passed"
+#+end_src
+
+* Exercise 2
+- For the same inputs as gcd write automated tests for LCM.
+* Solution 2
#+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__':
+ 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
-
+ 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
+ else:
+ print "Test passed", result
#+end_src
-
* Meaning full names
#+begin_src python
@@ -116,48 +147,19 @@
- White space around operators
- l = 32 % 4
-* Question 2
+* Exercise 3
- Give meaningful names to the variables in following
code
- c = a / b
-* Solution 2
+* Solution 3
#+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
@@ -182,28 +184,50 @@ ipdb> total
#+end_latex
-
-
* Summary
+ In this tutorial, we have learnt to,
+
- 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.
+ - Automate tests using many predefined test cases.
+ - Use the python coding standards.
+ - Differentiate between syntax error and exception.
+ - Handle exception using ``try'' and ``except''.
+ - Use ``%debug'' for debugging on ipython.
+
+* Evaluation
+1. What is proper indentation for python code according to style guidelines?
+
+ - two space identation
+ - three space identation
+ - four Space Indentation
+ - no Indentation
+
+2. How do you start the debugger on ipython?
+ - debug
+ - %debug
+ - %debugger
+ - start debugger
+
+3. What is the idiom used for running python scripts in a standalone manner?
+* Solutions
+1. Four Space Indentation
+
+2. %debug
-* Thank you!
+3. if \_\_name\_\_ == '\_\_main\_\_':
+*
#+begin_latex
\begin{block}{}
\begin{center}
- This spoken tutorial has been produced by the
- \textcolor{blue}{FOSSEE} team, which is funded by the
+ \textcolor{blue}{\Large THANK YOU!}
\end{center}
+ \end{block}
+\begin{block}{}
\begin{center}
- \textcolor{blue}{National Mission on Education through \\
- Information \& Communication Technology \\
- MHRD, Govt. of India}.
+ For more Information, visit our website\\
+ \url{http://fossee.in/}
\end{center}
\end{block}
#+end_latex
+