The Final Presentation 201011316 200913247 201011373 Index CTIP - - PowerPoint PPT Presentation
The Final Presentation 201011316 200913247 201011373 Index CTIP - - PowerPoint PPT Presentation
The Final Presentation 201011316 200913247 201011373 Index CTIP System testing Static analysis Wrapping up Our CTIP Environment Our CTIP Environment Strength Gradle : wrapper allows use of
Index
- CTIP
- System testing
- Static analysis
- Wrapping up
Our CTIP Environment
Our CTIP Environment
- Strength
– Gradle : wrapper allows use of Gradle without installation – Jenkins : supports integration well with variety of plug- ins – SonarQube : CheckStyle + PMD + FindBugs
- Weakness
– Gradle : no automatic build script generator – Redmine : embedded DB, port collision (80, 3306)
Possible Improvements
- Jenkins alert to ‘Kakao Talk’ instead of email
- Jenkins builds when pushed to Git
- Make use of SonarQube web API
System Testing
- Tools used
– Category-partition : TSLgenerator by UC Irvine and Oregon State University – Pair-wise : All Pairs by Sacrifice – Requirement management : JFeature
CPT Result (this week)
- 56개중 50개 성공
Pairwise Testing (this week)
- 16개중 16개 성공
Brute-force Testing (this week)
- 28개 중 20개 성공
Jfeature & Redmine
Comments about Jfeature
- Works only in old version of Eclipse
- Have to create Junit test cases
- Import and export is tricky
Static Analysis
- SonarQube 7 axis of code quality
– Architecture & design – Duplications – Unit tests coverage – Complexity – Potential Bugs – Coding Rules – Comments
Basic metrics
size
Architecture & Design
- Covers
– File cycles
- Minimal number of files cycles in a directory to identify all
undesired dependencies
– Files dependencies to cut – Package cycles
- Minimal number of directory cycles to identify all
undesired dependencies
– Package dependencies to cut
- This project has no directory nor package
– Nothing measured on architecture & design
Architecture & Design
- Some suggestions
– Divide classes into packages
- UI
- Database
- Talkkid
- Common – Message, Word
Duplications
- All duplications found in Interface.java
Unit Test Coverage
- SonarQube analyzes on
– Coverage – Condition coverage – Line coverage – Unit test success/failure – Etc
- This project has no unit test!
Complexity
- Overall complexity
File Complexity Complexity / method Interface.java 149 8.8 Database.java 35 8 Parent.java 32 6.4 Child.java 12 4.4 User.java 8 4 Word.java 1 1 Message.java 1 1
Potential Bugs & Coding Rules
File Number of errors Interface.java 2,990 Database.java 498 Parent.java 303 Child.java 214 User.java 113 Word.java 110 Message.java 109
- Sonar rules + PMD + Check Style + Findbugs
Potential Bugs & Coding Rules
- Critical errors
Rule Count Exception handlers should preserve the original exception 18 Throwable.printStackTrace(...) should never be called 6 Fields in a "Serializable" class should either be transient or serializable 5 Dodgy - Redundant nullcheck of value known to be non-null 4 Empty If Stmt 3 Dodgy - Dead store to local variable 1 Rule Count Require This 573 Law Of Demeter 95 Line Length 79 Empty Line Separator 75 Javadoc Method 68 Javadoc Variable 63
- Major errors
Comments
- Public methods have no documentation
- Too few comments
– Reader has to guess how the program works
- Too many comments
– May take more time in just reading the comments – Too many comments are needed too complex or it doesn’t follow the coding standards
Comments about SonarQube
- Tons of minor errors!
– Install SonarQube Eclipse plug-in and run local analysis from beginning to avoid errors
- Not 100%!
– Some errors missed – Some false alarms
SV + SM
- Fun because we didn’t do any coding
- Our comments on errors were successfully
resolved
- Kakao Talk was easier than Redmine
- They didn’t seemed to have read our powerpoint
and video!
– We had to make the build scripts and make changes
- n some minor settings for Gradle
Improvements for Next Semester
- Fix which programs to use and teach how to use
them in practical lessons
- Would be useful if the school provided a server
- Would be useful to have more class time with
SM
Overall Comments
- SV is one of the most unique experience as a
senior in CSE
- A lot to study learned a lot
- We could see how CTIP would be useful
especially for a large-scale project
- Importance of communications between
teammates
- Importance of testing in a software development
- Importance of choosing the right tool