Software Testing (SWT301)
Vietnamese title: Kiểm thử phần mềm
Credits: 3
Prerequisites: SWE102 or SWE201c

Description:
• General principles of software testing, including its purposes and objectives.
• Testing integrated into software development processes, covering test levels, test types, and maintenance testing.
• Static testing basics, including feedback and review processes to enhance software quality.
• Techniques such as black-box (functional), white-box (structural), and experience-based testing applied to derive test cases.
• Test activities like planning, estimation, monitoring, risk management, defect reporting, and test automation usage.
• Tools and methods to support effective testing, emphasizing benefits and potential risks.
• AI is used to explore testing concepts, support static testing, and create/optimize Test Plans.

Learning outcomes:
Know definitions, concepts and terminologies about Software Testing, using AI to explore testing principles and real-world testing scenarios through effective prompts.
Demonstrate presentation skills and effective teamwork
Understand the software testing process. Distinguish between levels of testing (e.g. unit, integration, system, acceptance) and types of testing (e.g. functional, non-functional) applied to a specific group project (encouraged to choose project in SWP391)
Use static testing techniques to detect errors through a review process, using AI to review documents for defects (e.g., ambiguity, inconsistency) and analyze static code for errors (e.g., code smells, bug patterns).
Use dynamic testing techniques like black-box, white-box, and experience-based testing to design and execute test cases, and determine test coverage.
Develop a comprehensive test plan for an AI-enabled project, clearly defining its scope, goals, resources, and testing schedule.
Analyze and prioritize risks to focus testing efforts effectively. Understand and apply bug logging, bug reporting, and test reporting practices.
Classify and select appropriate testing tools, evaluate the benefits and risks of test automation, and choose an automation tool for testing functionalities in the team project.
Understand and apply Agile testing methods.
Utilize AI tools to support learning and exercises related to the course.

Student tasks:
Students must attend at least 80% of contact sessions in order to be accepted to the final examination.
- Students are responsible to do all exercises, assignments and labs given by instructor in class or at home and submit on time.
- The use of AI in assessments and exams must comply with the instructions of the course instructor.
- Use laptop in class only for learning purpose
- Promptly access to the https://flm.fpt.edu.vn/ for up-to-date course information

Tools:
- Unit Test Framework
- Bug Management Tool
- Ms Office
- IDE
- Static Analyst Tool
- Automation Tool
- AI Tools: Grok (xAI), ChatGPT, Gemini, Deepseek

Materials:
description: Foundations of Software Testing: ISTQB Certification
author: Dorothy Graham, ‎ Erik van Veenendaal,‎‎ Rex Black
publisher: Cengage Learning, EMEA
published_date: 2020
edition: 4th
isbn: 978-1-4737-6479-8
description: Agile Testing: A Practical Guide for Testers and Agile Teams
author: Lisa Crispin,Janet Gregory
isbn: 978-0321534460
description: Computer Software Validation. Alan Muirhead. News & Views, March 2000. Available at http://www.stcpmc.org/archive/archive/n&v/feat0300.html
description: Course Software Testing and Quality Assurance by Tian in http://engr.smu.edu/~tian/class/7314.06f/syl.html (availble in FU library)

Assessments:
category: Lab
type: on-going
weight: 25.0
duration: Option 1: Lab 1: 2-6 weeks; Lab 2-4: 2 weeks.
Option 2 (For Constructivism Approach only): Follow lecturer's proposal
question_type: LO1, LO2, LO3, LO5, LO9, LO10
no_question: Option 1: Practical exercises using AI prompt;
Option 2 (For Constructivism Approach only): Follow lecturer's proposal
knowledge_and_skill: Option 1: N/A; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
grading_guide: Option 1: Lab1: Use chat AI to explore testing fundamentals through effective prompts; Lab2: Install and study an unit test framework, Use IDE to write unit test code and run unit test; Lab 3: Static techniques (Manually review documents or use AI for static code analysis); Lab 4: Create Test Plan with AI.
Option 2 (For Constructivism Approach only): Follow lecturer's proposal
note: The instructor support tutorials, students complete independently, submission by deadline
category: Presentation
type: on-going
weight: 10.0
duration: Option 1: 10'/each; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
question_type: LO2, LO4, LO5, LO6, LO7, LO10
no_question: Option 1: Personal Presentation; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
knowledge_and_skill: Option 1: N/A ;Option 2 (For Constructivism Approach only): Follow lecturer's proposal
grading_guide: Test Plan, NUnit, JUnit, Test tool Selenium, Katalon Or Jira, Design test cases with Decision table testing, Use case testing techniques
note: Individual or team work, guided by instructor, submission by deadline
category: Progress Test
type: on-going
weight: 15.0
duration: Option 1: 30'/each; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
question_type: LO1, LO2, LO3, LO4, LO5, LO6, LO7, LO8
no_question: Option 1: Multiple choices Marked by Computer or a suitable format; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
knowledge_and_skill: Option 1: 20-30/each; Option 2 (For Constructivism Approach only): Follow lecturer's proposal
grading_guide: Test 1: Chapter 1 and 2;
Test 2: Chapter 3 and 4;
Test 3: Chapter 5 and 6
note: In class, by instructor
category: Final exam
type: Final exam
weight: 50.0
duration: 145 minutes
question_type: All CLOs
grading_guide: All subjects in syllabus
note: By exam board
Manual evaluating
category: Practical Exam
type: Final exam
weight: 25.0
duration: 85'
question_type: LO1, LO2, LO3, LO4, LO5, LO6, LO7, LO8
no_question: Assignment
grading_guide: Chapter 1 to 6
note: by Exam Board
category: Theory Exam
type: Final exam
weight: 25.0
duration: 60'
question_type: LO1, LO2, LO3, LO4, LO5, LO6, LO7, LO8
no_question: Multiple choicesMarked by Computer
knowledge_and_skill: 60
grading_guide: Chapter 1 to 6
note: by exam board,
using computer

Schedule:
session: - Course Introduction
- Introducing AI integration in teaching and learning, as well as assessment
materials: SWT301
session: Topic 1. Fundamentals of testing
1.1 What is testing?
session: 1.2 Why is testing necessary?
session: 1.3 Testing principles
session: 1.4 Fundamental test process
session: 1.5 The psychology of testing
1.6 Codes of ethics
session: Guiding Lab 1 (Use chat AI to explore testing fundamentals through effective prompts)
session: Topic 2. Testing throughout the software life cycle
2.1 Software development models
session: 2.2 Test levels
session: 2.2 Test levels (cont.)
session: 2.3 Test types: the targets of testing
session: 2.4 Maintenance testing
session: Progress test 1
session: Review Lab 1
session: Guiding Lab 2 (Install and study an unit test framework, Use IDE to write unit test code and run unit test)
session: Topic 3. Static techniques
3.1 Reviews and the test process
session: Topic 3. Static techniques
3.2 Review process
session: 3.2 Review process (cont.)
session: 3.2 Review process (cont.)
session: 3.3 Static analysis by tools
session: Guiding Lab 3 (Static techniques: Manually review documents or use AI for static code analysis)
session: Topic 4. Test design techniques
4.1 The test development process
session: 4.2 Categories of test design techniques
session: 4.3 Specification-based or black-box techniques
session: 4.3 Specification-based or black-box techniques (cont.)
session: 4.3 Specification-based or black-box techniques (cont.)
session: 4.3 Specification-based or black-box techniques (cont.)
session: 4.4 Structure-based or white-box techniques
session: 4.5 Experience-based techniques
session: 4.6 Choosing a test technique
session: Progress test 2
session: Review Lab 2
session: Review Lab 3
session: Topic 5. Test management
5.1 Test organization
session: 5.2 Test plans, estimates, and strategies
session: Guiding Lab 4 (Create Test Plan with AI)
session: 5.3 Test progress monitoring and control
session: 5.4 Configuration management
session: 5.5 Risk and testing
session: 5.6 Incident management
session: Review Lab 4
session: Review Problems
session: Topic 6. Tool support for testing
6.1 Types of test tool
session: 6.2 Effective use of tools: Potential benefits and risks
session: 6.3 Introducing a tool into an organization
session: Progress Test 3
session: Topic 7. ISTQB Foundation Exam
7.1 Preparing for the exam
7.2 Taking the exam
session: 7.3 Mock exam
session: Topic 8. Agile Testing
8.1 The fundamentals of Agile software development
8.2 Aspects of Agile approaches
session: 8.3 Mostly used Agile Methods
8.4 Fundamental Agile Testing Principles, Practicles and Processes
session: 8.5 Agile Testing Methods, Techniques and Toools
session: Individual presentation and mark
session: Individual presentation and mark
session: Individual presentation and mark
session: Individual presentation and mark
session: Individual presentation and mark
session: Individual presentation and mark
session: Individual presentation and mark
session: Individual presentation and mark
session: Individual presentation and mark