Download presentation
Presentation is loading. Please wait.
Published byLogan McCormick Modified over 9 years ago
1
Sadegh Aliakbary Sharif University of Technology Spring 2012
2
Review Java Programming Language Principles of Object Oriented Programming Characteristics of objects Encapsulation Objects in memory References Heap Stack Parameter Passing Spring 2012Sharif University of Technology2
3
Review (2) Initialization and Cleanup Constructor finalize() Order of initialization Initialization blocks Access specifiers Public Private Package access Spring 2012Sharif University of Technology3
4
Review (3) Package Static The this reference Method overloading toString() equals() Refactoring Bad smells Refactoring techniques Spring 2012Sharif University of Technology4
5
Agenda Software Quality Characteristic of a good software Test Unit Testing Refactoring Spring 2012Sharif University of Technology5
6
Quality of Product The producer should ensure about the quality of the products Quality Control Any business, any product Spring 2012Sharif University of Technology6
7
A Cook Spring 2012Sharif University of Technology7
8
In surgery Spring 2012Sharif University of Technology8
9
A Car Maker Spring 2012Sharif University of Technology9
10
Quality Control Quality should be tested A product is not finalized, before the test Different kinds of test, check different kinds of quality Spring 2012Sharif University of Technology10
11
Software Quality We are programmers Programmers produce software What are characteristics of a good software? Many parameters. E.g. Conformance to requirements Performance Time Memory Maintainability Changeability Different kinds of test, check different kinds of quality Spring 2012Sharif University of Technology11
12
Test in Other Industries Test side effects A damage to the product Test of a building Test of a car Test of a part of a product Spring 2012Sharif University of Technology12
13
Test Side Effects Spring 2012Sharif University of Technology13
14
What to do with Test Side Effects? Testing a sample of the product Simulation Mathematical analysis In software testing Along with all of these techniques And we can also test the software itself! (Usually) no damage to the software Spring 2012Sharif University of Technology14
15
Test Target System Test Test the system as a whole For performance, correctness and conformance. Unit Test Test the units and modules Test of a component Test of a class Test of a method Spring 2012Sharif University of Technology15
16
How to Test Software Manual Test Try it! Test Tools Performance Test Profiling JProfiler, TPTP Load Test Jmeter Test Code Unit Tests Test Teams Spring 2012Sharif University of Technology16
17
Test Code Business Code The code, written for implementation of a requirement Test Code The code, written for test of an implementation Spring 2012Sharif University of Technology17
18
Unit Testing A process for the programmer Not a test team procedure For improving the code quality Reduces bugs Test of units of software before the software is completed Unit: method, class Spring 2012Sharif University of Technology18
19
Classical Unit Testing Writing main() method Some printlns Drawbacks? Spring 2012Sharif University of Technology19
20
Drawbacks 1. Test code coupled with business code In the same class 2. Written tests are discarded 3. One test at a time 4. The programmer executes the tests himself Test execution is not automatic 5. The programmer should check the result of each test himself The test is passed or failed? The test result interpretation is not automatic Spring 2012Sharif University of Technology20
21
A Good Unit Test Code Repeatable Automatic Invocation Acceptance (Pass/Failure) JUnit helps you write such tests Spring 2012Sharif University of Technology21
22
JUnit, First Example Spring 2012Sharif University of Technology22
23
JUnit, The Green Bar Spring 2012Sharif University of Technology23
24
public class Testing { @Test public void testNormal() { int[] array = {3,2,1,4}; int[] sorted = {1,2,3,4}; Business.sort(array); for (int i = 0; i < sorted.length; i++) { Assert.assertEquals(sorted[i], array[i]); } @Test public void testEmptyArray() { int[] array = {}; try{ Business.sort(array); }catch(Exception e){ Assert.fail(); } Assert.assertNotNull(array); Assert.assertEquals(array.length, 0); } Spring 2012Sharif University of Technology24
25
Assertions assertNull(x) assertNotNull(x) assertTrue(boolean x) assertFalse(boolean x) assertEquals(x, y) Uses x.equals(y) assertSame(x, y) Uses x ==y assertNotSame fail() Spring 2012Sharif University of Technology25
26
Annotations @Test @Before @After @BeforeClass @AfterClass Spring 2012Sharif University of Technology26
27
Spring 2012Sharif University of Technology27
28
A Good Unit Test is Automated Through Repeatable Independence Professional Spring 2012Sharif University of Technology28
29
Test Driven Development Test First Development Before writing a code, write the tests! Spring 2012Sharif University of Technology29
30
TDD Spring 2012Sharif University of Technology30
32
Refactoring A disciplined way to restructure code In order to improve code quality Without changing its behavior a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior. Spring 2012Sharif University of Technology32 Martin Fowler
33
Refactoring Refactoring is the process of changing a software system In such a way that it does not alter the external behavior of the code But improves its internal structure It is a disciplined way to clean up code It minimizes the chances of introducing bugs When you refactor, you are improving the design of the code after it has been written. Spring 2012Sharif University of Technology33 Martin Fowler
34
Refactoring By continuously improving the design of code, we make it easier and easier to work with Spring 2012Sharif University of Technology34 Joshua Kerievsky, Refactoring to Patterns
35
The Two Hats Kent Beck's metaphor of two hats Divide your time between two distinct activities adding function refactoring Spring 2012Sharif University of Technology35
36
Why Should I Refactor? Refactoring Improves the Design of Software Refactoring Makes Software Easier to Understand Refactoring Helps You Find Bugs Refactoring Helps You Program Faster Refactoring makes your code more maintainable Spring 2012Sharif University of Technology36
37
When Should You Refactor? The Rule of Three: Refactor When You Add Function Refactor When You Need to Fix a Bug Refactor As You Do a Code Review Spring 2012Sharif University of Technology37
38
Bad Smell A bad smell in code Any symptom in the source code that possibly indicates a deeper problem. The term is coined by Kent Beck. Spring 2012Sharif University of Technology38
39
Bad Smells If it stinks, change it! Kent Beck and Martin Fowler. Bad smells in code Bad smells are source of problems Remove bad smells How? By Refactoring Spring 2012Sharif University of Technology39
40
Bad Smells Duplicated Code Long Method Large Class Long Parameter List … Spring 2012Sharif University of Technology40
41
Refactoring Techniques Extract Method Move Method Variable Class Extract Class Rename Method Variable Class Pull Up Push Down Spring 2012Sharif University of Technology41
42
IDE Support Refactoring techniques are widely supported by IDEs Practice it in Eclipse Spring 2012Sharif University of Technology42
43
Reference Refactoring: improving the design of existing code, Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts (1999) Spring 2012Sharif University of Technology43
44
Spring 2012Sharif University of Technology44
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.