Software Quality & Testing - English
Register for Slack workspace
- To allow efficient real-time communication, the exchange of messages will be done through the Slack platform
- Students participating in this course / seminar are asked to register using the institutional e-mail address (@ stud.ase.ro) via the following link https://join.slack.com/t/csiects2023/signup
- After registration, students are asked to subscribe to the channels created for the course / seminar they will attend (Option Channles -> Browse Channels and then Join on the desired channel)
- For online.ase.ro the course link is https://online.ase.ro/course/view.php?id=30192 and the course key is 5585
CTS 2022-2023
Important! According to the rules announced in the first course (rules also present in the discipline sheet), taking the exam in the normal session is possible only if the students have accumulated 2 points out of 5 per semester.
Required software:
- a preferred Java development environment (Eclipse, NetBeans, VS Code, IntelliJ, etc.)
- Open JDK at least 11
- JUnit 3, 4 or 5 - https://junit.org/ (already installed in certain development environments)
- a Git client integrated into the development environment https://git-scm.com/
Required knowledge::
- Dezvoltare aplicatii Java de tip consola: utilizare mediu de dezvoltare (IDE), compilare, build si debug
- Programare Orientata Obiect in Java: clase, clase abstracte si interfete, derivare, mecanismul de tratare a exceptiilor (try-catch) si colectii standard
- Console Java application development: use a development environment (IDE), compile, build and debug
- Object Oriented Programming in Java: classes, abstract and interfaces classes, extendind classes, try-catch mechanism and standard collections
Students that retake the course and the seminar
Suplementary year students are asked to come to the 3rd year laboratory to enroll on the online.ase.ro. They can choose the 3rd year group at which they want to redo the lab activities (homeworks, and lab test). The registration code will be introduced by the coordinating professor during the laboratory and it will not be published online.
Students in the suplimentary year that redo activities for the Quality and Software Testing discipline in the academic year 2022-2023 are asked to chose a course and and a seminar at which they will participate and then to announce the seminar coordinator (to register them on online.ase.ro). Thus, we can ensure that they are properly allocated to groups and that each student has access to a workstation.
In addition, students in supplementary years who are retaking the course must
- to register for a course on the online.ase.ro platform: the course link is https://online.ase.ro/course/view.php?id=30192 and the course key is 5585
- to attend the seminar and request registration on online.ase.ro for that seminar
Course content
The course curricula cand be verified at https://fisadisciplina.ase.ro/Default.aspx?IDD=73258&IDF=7&IDL=EN
Course and laboratory team in 2022-2023
- Prof. univ. dr. Catalin Boja - curs si seminar, seria Engleza (email: catalin.boja@ie.ase.ro)
- Conf. univ. dr. Alin Zamfiroiu - curs si seminar (alin.zamfiroiu@csie.ase.ro)
- Lect. univ. dr. Madalina Doinea - curs si seminar (email: madalina.zurini@csie.ase.ro)
- Phd Student Andrei Cazacu - seminar (email: andrei.cazacu@csie.ase.ro)
Laboratory evaluation
- there are 2 practical tests at the laboratory
- the 1st laboratory test takes place at the seminar during the 7th - 8th week of the semester, and the 2nd test takes place in the last 4 weeks of the semester;
- the test requires developing a compiler free Java application that implements design patterns for a given scenario; the source code must implement clean clode rules
- The purpose of the test is to assess the understanding of the usefulness and implementation of design patterns. The topic will be implemented in Java using the Eclipse, NetBeans, VS Code or IntelliJ environment.
- Creational: Simple Factory and Factory Method, Builder, Singleton, Prototype (1st test)
- Structural: Adapter, Composite, Decorator, Facade, Flyweight, Proxy (2nd test)
- Behavioral: Strategy, Observer, Chain of Responsibility, Command, Memento, State, Template (2nd test)
Course evaluation
The final grade is composed from:
SEMINAR (final grade weight 50%):
- 1st practical computer test during weeks 7 - 8; the exact date will be set by the students together with the seminar coordinator; the test has a weight of 10% of the final grade;
- 2nd practical computer test during weeks 10 - 12; the exact date will be set by the students together with the seminar coordinator; the test has a weight of 20% of the final grade;
- activity during the semester at the seminar (homeworks, quiz tests, active participation in the seminar, etc.) which have a weight of 10% of the final grade;
- quiz test during week 14 of all the subject that has a weight of 10% of the final grade.
EXAMINATION (final grade weight 50%):
- computer practical evaluation / quiz test / open-questions test that will cover all the course topics
- minimum conditions for passing the exam: minimum grade 5
- condition for entering the exam (normal session): obtaining a minimum of 2 points from those related to the seminar activities (maximum 5 points); in the re-take session the exam can be taken by anyone but the score during the semester is kept and has the same weight of 50% of the final grade
OBTAINING A MINIMUM 2 POINTS FROM THE ACTIVITIES CARRIED OUT DURING THE SEMINAR (total 5 points) REPRESENTS THE CONDITION OF ENTRY INTO THE EXAMINATION. COPYING THE HOMEWORK SOLUTION, THE LABORATORY TEST OR ANY OTHER REQUIRED PROJECT INVOLVES THE CANCELLATION OF ALL POINTS FROM THE SEMINAR AND LOSS OF THE RIGHT TO TAKE THE EXAM IN THE NORMAL SESSION.
Course Topics
- Principles for writing source code - Clean Code + Managing source code versions - Git, SVN
- Principles for writing source code - Clean Code
- Principles for writing source code - Clean Code
- Design Patterns: Singleton, Simple Factory,
- Design Patterns: Factory Method, Abstract Factory, Prototype
- Design Patterns: Builder, Adapter, Facade
- Design Patterns: Proxy, Composite, Chain of Responsibility
- Design Patterns: Decorator, Flyweight, Chain of Responsibility
- Design Patterns: Command, Observer, State
- Design Patterns: Strategy, Memento, Template
- Unit Testing - JUnit
- Unit Testing - JUnit
- Unit Testing - JUnit
- Software quality concepts - metrics, indicators, tools (using Sonar for static analysis)
Bibliography:
- Madalina Zurini, Alin Zamfiroiu - Calitate si testare software. Studii de caz, Editura ASE, 2017
- Scott Chacon, Bean Straub - Pro Git, 2nd edition, Apress, 2014, disponibila online la adresa http://git-scm.com/book/en/v2
- Robert C. Martin - Clean Code, A Handbook of Agile Software Craftsmanship, Prentice Hall, 2009
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides - Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995 (link Google books)
- Steve Holzner - Design Patterns for Dummies, Wiley, 2006
- Lasse Koskela - Effective Unit Testing, Manning, 2013
- Lasse Koskela - Practical TDD and Acceptance TDD for Java Developers, Manning, 2007
- Alasdair Allan - Pragmatic Unit Testing in Java with JUnit, The Pragmatic Programmers, 2004
- http://git-scm.com/docs
- https://try.github.io at Code School