1 / 38

Advanced Programming in Java

Advanced Programming in Java. Sadegh Aliakbary Sharif University of Technology Fall 2011. Agenda. Software Quality Characteristic of a good software Test Unit Testing Refactoring. Quality of Product. The producer should ensure about the quality of the products Quality Control

gautam
Download Presentation

Advanced Programming in Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Advanced Programming in Java SadeghAliakbary Sharif University of Technology Fall 2011

  2. Agenda • Software Quality • Characteristic of a good software • Test • Unit Testing • Refactoring Sharif University of Technology

  3. Quality of Product • The producer should ensure about the quality of the products • Quality Control • Any business, any product Sharif University of Technology

  4. A Cook Sharif University of Technology

  5. Maintenance check of electronic equipment on a Navy aircraft. Sharif University of Technology

  6. A Car Maker Sharif University of Technology

  7. Quality Control • Quality should be tested • A product is not finalized, before the test • Different kinds of test, check different kinds of quality Sharif University of Technology

  8. 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 Sharif University of Technology

  9. 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 Sharif University of Technology

  10. How to Test Software • Manual Test • Try it! • Test Tools • Performance Test • Profiling • JProfiler, TPTP • Load Test • Jmeter • Test Code • Unit Tests • Test Teams Sharif University of Technology

  11. Test Code • Business Code • The code, written for implementation of a requirement • Test Code • The code, written for test of an implementation Sharif University of Technology

  12. 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 Sharif University of Technology

  13. Classical Unit Testing • Writing main() method • Some printlns • Drawbacks? Sharif University of Technology

  14. Drawbacks • Test code coupled with business code • In the same class • Written tests are discarded • One test at a time • The programmer executes the tests himself • Test execution is not automatic • The programmer should check the result of each test himself • The test is passed or failed? • The test result interpretation is not automatic Sharif University of Technology

  15. A Good Unit Test Code • Repeatable • Automatic • Invocation • Acceptance (Pass/Failure) • JUnit helps you write such tests Sharif University of Technology

  16. JUnit, First Example Sharif University of Technology

  17. JUnit, The Green Bar Sharif University of Technology

  18. publicclass Testing { @Test publicvoidtestNormal() { int[] array = {3,2,1,4}; int[] sorted = {1,2,3,4}; Business.sort(array); for (inti = 0; i < sorted.length; i++) { Assert.assertEquals(sorted[i], array[i]); } } @Test publicvoidtestEmptyArray() { int[] array = {}; try{ Business.sort(array); }catch(Exception e){ Assert.fail(); } Assert.assertNotNull(array); Assert.assertEquals(array.length, 0); } } Sharif University of Technology

  19. 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() Sharif University of Technology

  20. Annotations • @Test • @Before • @After • @BeforeClass • @AfterClass Sharif University of Technology

  21. Sharif University of Technology

  22. A Good Unit Test is • Automated • Through • Repeatable • Independence • Professional Sharif University of Technology

  23. Test Driven Development • Test First Development • Before writing a code, write the tests! Sharif University of Technology

  24. TDD Sharif University of Technology

  25. Refactoring

  26. 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. Martin Fowler Sharif University of Technology

  27. 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. Martin Fowler Sharif University of Technology

  28. Refactoring • By continuously improving the design of code, we make it easier and easier to work with Joshua Kerievsky, Refactoring to Patterns Sharif University of Technology

  29. The Two Hats • Kent Beck's metaphor of two hats • Divide your time between two distinct activities • adding function • refactoring Sharif University of Technology

  30. 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 Sharif University of Technology

  31. 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 Sharif University of Technology

  32. 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. Sharif University of Technology

  33. 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 Sharif University of Technology

  34. Bad Smells • Duplicated Code • Long Method • Large Class • Long Parameter List • … Sharif University of Technology

  35. Refactoring Techniques • Extract Method • Move • Method • Variable • Class • Extract Class • Rename • Method • Variable • Class • Pull Up • Push Down Sharif University of Technology

  36. IDE Support • Refactoring techniques are widely supported by IDEs • Practice it in Eclipse Sharif University of Technology

  37. Reference • Refactoring: improving the design of existing code, Martin Fowler, Kent Beck,John Brant, William Opdyke, Don Roberts(1999) Sharif University of Technology

  38. Sharif University of Technology

More Related