PBL in Software Testing course, NUCES

Course overview

The course aims to prepare students for effective testing of different software systems. It introduces the state of art in software testing, quality assurance, and program analysis techniques. In particular, course content focuses on the review of testing tools, emphasizing the significance of each phase when testing different types of software. Students build knowledge on the state of the art in testing technology for object-oriented, component-based, concurrent, distributed, graphical-user interface, and web software. Emerging concepts such as test-case prioritization and their impact on testing are also examined. Students gain hands-on experience in testing and analysis through assignments. Upon completion of the course students are familiar with the state of the art in software testing as well as widely used tools in the testing industry. Furthermore, they are able to apply evaluation techniques in practice for testing software. More specifically, the course aims to:

  • Provide students with an overview of current state of the art of software testing.
  • Enable students to apply software testing techniques in real life projects.
  • Provide students with necessary knowledge to start testing software.
  • Build students’ hands on experience.
  • Develop presentation skills, both oral and written.
  • Expose students to test cases that address diverse criteria.

Participants in piloting 

This course targets undergraduate students in the Faculty of Computer Science. Approximately 240 students were enrolled in five sessions that were delivered in the spring of the 2019 – 2020 academic year. Most of the participants were 7th semester, 4th year, students enrolled in the Bachelor of Science in Computer Science Program. The course is an elective.

Timeframe

Spring 2019

Use of ALIEN services and tools

The course includes a mandatory laboratory session, which corresponds to 15% of the final grade. More specifically, 10% of the grade corresponds to a project and 5% to other assignments. The project challenges students to apply hands-on different software testing/analysis tools. Tutorial sessions are conducted on the required tools.  The course deploys project-based learning. The students were divided into groups of 4 for implementing a semester project. A small project was allocated to each group. The students performed the following activities in the laboratory sessions:

  • Students were introduced to software testing concepts and tools.
  • Students deployed hands-on testing tools such as JUnit.
  • Students performed testing on web applications.
  • Students performed testing on graphical user interface design.
  • Students generated test cases for static and loop testing procedures.
  • Students practiced equivalence partitioning, boundary value analysis, and state transition.
  • Students performed white box testing, black box testing, and flow control analysis.
  • Students engaged in software inspection activities, bug reporting, and debugging.
  • Students practiced hands-on on the Selenium tool.

At the end of the semester students presented their results to their classmates and the instructor.