Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Software quality-libreplan


Published on

  • Be the first to comment

  • Be the first to like this

Software quality-libreplan

  1. 1. LibrePlan Software Quality attributesJavier Morán Rúa <> November 2012
  2. 2. Software quality● When has a software quality? Two types of quality: ● Functional quality: How well a program conforms to the requirements (functional requirements). – Measured with tests. ● Non-functional quality: Structural quality and other things not related with the program behavior. Examples: Documentation, Internationalization, Scalability, Robustness, Usability, Testability ... – Analyzed with analsys of code and also with tests.
  3. 3. Software tests● Difference between failure/error/malfunction: ● Error/Defect: Wrong or missing function in the code ● Failure: is the result of executing a software when an error happens. ● Malfunction. The system does not do the expected in the specification.
  4. 4. Software tests● Testing definition: Execute the software with the target of finding errors and malfunctions.● Does a software with tests has more structural and functional quality on average? Yes ● Guarantee there are not errors/malfunctions. ● Measure and know if you meet the expectations.
  5. 5. Software tests● With tests you do two processes: verification and validation.● Verification. ● Is the product right? ● checks that the software is working correctly. Assures that implementation is right for an specification.
  6. 6. Software tests● Validation. ● Are we building the right product? ● checks if user requirements and the results got match. Reviews if the system is the correct one.
  7. 7. Software tests● Types of tests – Classification 1: ● Black Box: testing interaction is based on inputs and outputs. ● White Box: centered in testing the logic of the software and its structure – All sentences are executed (coverage) – All conditions are checked – All loops are checked – All paths are checked
  8. 8. Software tests● Types of tests – Classification 2: ● Unit tests. Isolated modules or classes. (verification) ● Integration tests. Interaction of modules and classes (verification) ● System tests. Hardware and software (verification, validation) ● Acceptance test. User validates against user requirements (validation)
  9. 9. Software tests● Types of tests – Classification 2 ● Regression test. Assurance of changes. (verification) ● Stress test. Performance. (verification, validation) ● Usability test. Human interaction. (verification, validation) ● Functional GUI testing. Tests interface and can be a type of validation tests. (validation) ● Validation tests. Against software requirements (validation).
  10. 10. Software tests● Types of tests – Classification 3 ● Manual. Perform by a person. ● Automatic. Perform by another program.
  11. 11. Software tests● LibrePlan has white box and black box tests.● LibrePlan has unit tests,integration tests, regression tests, acceptance tests, functional GUI tests, stress tests, validation tests, acceptance tests● LibrePlan has not systematized usability tests, nor systematized system tests.● LibrePlan has manual and automatic tests.
  12. 12. Unit and Integration tests● Benefits: ● Increase code coverage ● Increase team productivity ● Detect regressions and limit debugging ● Improve implementation ● Document expected behavior
  13. 13. Unit and Integration tests● LibrePlan uses JUnit and SpringTestContext to do integration and unit tests.● JUnit is the de facto standard for unit testing in Java platform.● It was created by Kent Beck and Erich Gamma ● Kent Beck. Creator of Extreme Programming and Test Driven Methodologies. ● Erich Gamma. One of the authors of Design Patterns: Elements of Reusable Object-Oriented Software.
  14. 14. Unit and Integration tests● SpringTestContext is a module of Spring. In LibrePlan we use to simplify: ● Management of Hibernate sessions. ● Automatic management of transactions. Rollback after each test. ● Integration with Spring. We have access by DI to the repositories.
  15. 15. Unit and Integration tests● In LibrePlan we have a lot of unit and integration tests: ● org.libreplan.ganttzk : 306 tests ● : 1884 tests ● org.libreplan.web: 400 tests
  16. 16. Test coverage● Definition: It describes the degree to which the source code of a program has been tested.● In which does it help? ● To know the untested parts of the codebase.● In LibrePlan we measure the code coverage of our unit and integration tests.
  17. 17. Test coverage● In LibrePlan we use Cobertura for measuring the code coverage of the unit and integration tests.● Cobertura features: ● Generates reports in HTML and XML. ● Does several code coverage measurement types: – Statement coverage. % of lines executed. – Branch coverage. % of total branches tested. – Other aggregations: % of classes, files, methods
  18. 18. Test coverage● Current test coverage LibrePlan measurements: ● Whole project: – Statement coverage: 12% – Branch coverage: 15% – Files: 50% of files with some test. – Methods: 20% of methods – Classes: 29% of classes
  19. 19. Test coverage● Current test coverage LibrePlan measurements: – Statement coverage: 12% – Branch coverage: 15% – Files: 50% of files with some test. – Methods: 20% of methods – Classes: 29% of classes ● These numbers are much better in the domain layer and persistence layer.
  20. 20. Web UI tests● Web UI testing is a type of GUI software testing for applications with web interface.● GUI software testing: Type of tests which use the GUI of a program to perform the sequence of steps of the use cases of the application. In this way it is tested: ● That the program fulfills the requirements ● That the GUI has the way of interaction as designed.
  21. 21. Web UI tests● Web UI testing can be: ● Automatic. Advantages: – Repeatability. – Speed of execution. ● Manual● Automatic UI testing mimics the actions of a user through the interface
  22. 22. Web UI tests● Web UI testing is a black box technique with a lower coverage than integration and unit tests.● To automate or not automate ? ● Advantages: Frequent regression testing, rapid feedback for developers, unlimited execution of tests cases, support extreme and agile technologies, discipline in the documentation of test cases
  23. 23. Web UI tests● To automate or not automate ? ● Disadvantages: – Tight deadline. Short time – Interface changes a lot
  24. 24. Web UI tests● LibrePlan has automatic Web UI tests.● It has been a challenge to find a framework to make UI tests with LibrePlan. ● We wanted a tool that allowed to test LibrePlan in several browsers. ● LibrePlan is a RIA application with a lot of JS, HTML5, CSS (some of the latest standards in web) ● With ZK we have to deal with an generated id HTML attribute for each page rendering
  25. 25. Sahi● In LibrePlan we use Sahi as framework to build the automatic web UI tests.● Sahi aims to make easy test automation in web technologies addressing most of the problems and limitations in this area.● Advantages over Selenium: recorder is browser independent, waits for AJAX and page loads, it does not use XPath intensively, works well with dynamic ids, frames, iframes, popups.
  26. 26. Sahi architecture● Architecture
  27. 27. Sahi● Explaining the architecture: ● Need to simulate browser events. The way of Sahi: Use JS injected to do it. Why JS? – Support to access the DOM. – Runs in the browsers. ● The injected JS is generated and inserted by the Sahi proxy.
  28. 28. Sahi● Explaining the architecture: ● Role of the proxy server: – Recording sessions. – Does playback of sessions. – Create reports, save data to database,...● It is used Sahi scripting (an extended JS to define the tests)
  29. 29. Sahi● Programming the tests in Sahi script has the next advantages: ● It is a programming language. Nothing better than the power of programming to define tests. ● The best API to interact with the DOM. ● Sahi has a powerful human relative API to locate things: _in, _near, _under, _table ...
  30. 30. i18n● Internationalization (i18n): It is the process of designing an application so that it can be adapted to different languages and regions without engineering changes.● Characteristics of an internationalized software: ● You can add localized data and run the same executable. ● Textual elements are not hardcoded ● Support for cultural dependent data, such as currencies and dates.
  31. 31. i18n● Localization: It is the process of adapting the software for a specific language or region (translating and adding specific UI components if needed).● LibrePlan is an internationalized software: ● Currently present in English, Spanish, Galician, Italian, French, Dutch, Catalan 100% ● Almost fully translated: Czech, German ● On-going translations: Polish, Portuguese, Russian
  32. 32. Stress tests● Stress tests in software: Tests to put the system to test under heavy load to know the behavior of the system regarding to availability, robustness and error handling.● In LibrePlan we do stress tests sometimes when we want to: ● Know the best alternative to implement a feature. ● The response times under different load conditions.
  33. 33. Stress tests● At LibrePlan we use the tool JMeter to do stress tests.● JMeter is a free software application designed initially to do stress load tests of web applications. ● Now it can test several server types: – Web: HTTP, HTTPS – SOAP – Database via JDBC, LDAP, JMS,...
  34. 34. Stress tests● Example of task where we used stress tests: To appraise if the activation of the Hibernate second- level cache was worth. –● Results analysis: ● A 75% of gain in the maximum response time and second-level cache was activated.
  35. 35. i18n● In Java i18n is provided in the Java SE.● Internationalization done with Java SE: ● Locale class ● ResourceBoundles. ● Property files● In LibrePlan we do not use the standard Java i18n facilities.
  36. 36. i18n● In LibrePlan we use GNU Gettext● GNU Gettext. Toolset to provide a framework to help to internationalize other programs. The tools include: ● A set of conventions about how programs should be written to support message catalogs. ● A directory and file name organization for the message catalogs themselves. ● A runtime library to get internationalized messages.
  37. 37. i18n● GNU Gettext. Toolset to provide a framework to help to internationalize other programs. The tools include: ● A few stand alone programs to help translators with the translation of messages. ● A library supporting the parsing of source code and the creation of files containing messages to translate (POT files).
  38. 38. i18n● Advantages of using GNU Gettext in LibrePlan: ● Programmers have not to be worried of adding explicitly messages to property files with ids. ● The generation of the messages to translate is automatic.
  39. 39. i18n● LibrePlan uses a online internationalization tool called Transifex, that has helped to increase the number of languages in which LibrePlan is available.● Transifex is free for open source projects.
  40. 40. Continuous Integration● Definition: It is the process of frequently integrating ones new or changed code with the existing repository.● It is one of the practices of XP (Extreme Programming).● Advantages: detect and fix integration problems continuously, immediate unit testing of all changes, promote frequent check-in pushes developers doing less complex code.
  41. 41. Continuous Integration● Effective practices to achieve CI: ● Maintain a single source repository. ● Automate the build. ● Make your build self-testing. ● Everyone commits to the mainline daily. ● Every commit should build the commit in an integration machine
  42. 42. Continuous Integration● Effective practices to achieve CI: ● Keep the build fast. ● Test in a clone of the production environment. ● Make it easy for everyone get the latest executable. ● Everyone can see what is happening. ● Automate deployment.
  43. 43. Continuous Integration● Continuous Integration can be set up using a Continuous Integration server.● CI server definition:Tool that lets the user plan automatic builds: ● Periodically. ● Triggered after each commit.
  44. 44. LibrePlan CI server● LibrePlan developers use continuous integration and use as continous integration server Jenkins● LibrePlan continuous integration server is publicly accessible:● Two automatic builds: ● LibrePlan Postgresql ● LibrePlan MySQL
  45. 45. LibrePlan CI server● Jenkins configuration at LibrePlan: ● The codebase that is built is master branch (unstable branch that originates new releases). ● The software is built once per day (2:00 AM) if during the last 24 hours some new changes has been pushed into the master branch. – If the build fails an e-mail is sent to libreplan-dev mailing list.
  46. 46. LibrePlan CI server● After build the unit and integration tests are passed.
  47. 47. LibrePlan CI server● Test code coverage is analyzed with Cobertura.
  48. 48. LibrePlan CI server● If some unit or integration tests fails, then an automated mail is sent to libreplan-dev mailing list.● As soon as a developer sees a fail (because a software build crash or some tests not passing), this gets maximum priority and managed the fixing. ● Doing it by himself if he is able to do. ● Looking for help and entrusting the responsible to fix it. ● Many times the first thing done is to revert the conflicting push and set Jenkins back to normal.
  49. 49. LibrePlan CI server● Currently in LibrePlan the Sahi automate web UI tests are not integrated with Jenkins in the build cycle.● Web UI tests are passed manually always before each release as part of the release process. ● Other occasions too.
  50. 50. Sonar● Definition: It is an open source web platform to manage code quality. ● It is helped by other code static analysis tools like CheckStyle, FindBugs, ...● Languages covered: Java, C, C#, Natural, PHP, Cobol and Visual Basic.
  51. 51. Sonar● It measures the quality in 7 axis: ● Comments ● Coding rules ● Potential bugs. ● Complexity. ● Unit tests. ● Duplications.
  52. 52. Sonar● In LibrePlan we use Sonar to control and monitor the quality of the source code.● LibrePlan Sonar installation is publicly available:
  53. 53. Sonar● Size metrics: ● Lines of code: Physical lines. ● Comment lines: Number of comments. ● Density of comment lines. ● Number of packages, number of methods. ● Number of accessors (getter and setters)
  54. 54. Sonar● Tests metrics: ● Number of tests. ● Number of failures. ● Test success density. ● Code coverage: – Line coverage – Branch coverage
  55. 55. Sonar● Duplication metrics: ● Duplicated lines: Number of lines touched by a duplication. ● Duplicated blocks: Number of duplicated blocks of lines. ● Duplicated files: Number of files involved in a duplication. ● Duplication density: Percentage of duplicated lines.
  56. 56. Sonar● Complexity metrics: ● Cyclotomatic complexity (McCabe Metric). ● Method distribution complexity. ● Average class complexity. ● Average file complexity.
  57. 57. Sonar● Violations metrics: ● Total number of violations ● Weighted violations = Sum of the violations weighted by a coefficient of severity. ● Rule Compliance Index (RCI) = 100 – (weighted violations/Number of Lines of Code)*100
  58. 58. Sonar● LibrePlan uses Sonar to monitor the quality of the project. ● If there are blocker violations, these are solved.● LibrePlan Sonar installation:
  59. 59. Sonar● LibrePlan Sonar dashboard