Introduction to Software Development and Testing Course Activities

Introduction to Software Development and Testing Course Activities related stuff.

3 Likes

01 - What Software Development is ?

It is a process that involves various types and levels of activities, with the main goal being to create a software product that meets the software owner’s needs and expectations.

2 Likes

02 - Business and Software Domains Research.

Business Domain: Healthcare

Software Domain: Doctor Health and Appointment Web App

Problem that the software solves:

  • Saves time for both doctors and patients by allowing online booking or cancellation of appointments.
  • Communication.
  • Payment Integration.
  • Notifications and Reminders.
  • Keeps information about both doctors and patients securely on the cloud.
  • Simplifies the process of switching doctors.
  • Facilitates easy tracking of doctors’ reviews and ratings.
2 Likes

03 - Who Works in a Software Development Team?

Task - 01 What can we learn about roles from job listings?

Pick one role, do a job search and do a review below.

Role: Software Tester

Activities:

Test Planning: Collaborating with stakeholders to define test objectives, scope, and strategies for testing the software.
Test Design: Creating detailed test cases based on requirements and design specifications. This involves identifying test conditions, expected results, and test data.
Test Execution: Running test cases manually or using automated testing tools to identify defects and verify fixes.
Defect Management: Reporting bugs/issues found during testing, tracking them to resolution, and retesting after fixes.
Regression Testing: Ensuring that new changes or bug fixes haven’t adversely affected existing functionality by re-running previously executed test cases.
Test Documentation: Documenting test results, procedures, and test artefacts like test plans, test cases, and test reports.
Collaboration: Working closely with developers, product managers, and other stakeholders to ensure thorough testing coverage and understanding of requirements.
Continuous Improvement: Providing feedback on software quality, suggesting process improvements, and contributing to overall quality assurance best practices.
Exploratory Testing: Investigating the software beyond scripted test cases to discover potential issues that might not be covered by standard tests.
Automated Testing: Writing and maintaining automated test scripts to improve efficiency and repeatability of testing activities.

Skills:
Test Automation: Ability to create, execute, and maintain automated test scripts using tools like Selenium, Appium, or other automation frameworks.
Programming Languages: Proficiency in programming languages like Java, Python, C#, etc., for writing automated tests and understanding code.
Database Skills: Knowledge of SQL for querying databases and verifying data integrity.
Web Technologies: Understanding of web technologies (HTML, CSS, JavaScript) for testing web applications.
API Testing: Experience with tools like Postman for testing APIs and understanding RESTful API concepts.
Test Management Tools: Familiarity with tools like Jira, TestRail, or HP ALM for test case management and defect tracking.
CI/CD Tools: Understanding of Continuous Integration and Continuous Deployment tools like Jenkins, GitLab CI/CD, etc., for integrating automated tests into the CI/CD pipeline.
Understanding of Software Development Lifecycle (SDLC): Knowledge of different phases of SDLC and how testing fits into each phase.
Industry-specific Knowledge: Depending on the domain (e.g., finance, healthcare, e-commerce), understanding specific regulatory requirements or user expectations.
Business Understanding: Ability to understand business requirements and translate them into test scenarios and test cases.
Analytical Thinking: Ability to analyse complex systems and identify potential issues or areas of improvement.
Communication Skills: Clear and concise communication with team members, developers, and stakeholders about test results, issues, and recommendations.
Time Management: Prioritising tasks effectively to meet deadlines and deliver high-quality results.
Collaboration: Working effectively in a team environment, sharing knowledge and coordinating testing efforts with developers and other team members.
Problem-Solving: Ability to troubleshoot issues, identify root causes, and propose solutions.
Black Box Testing: Testing the software without knowing its internal structure, focusing on functionality.
White Box Testing: Understanding the internal workings of the software to design tests based on code structure and logic.
Exploratory Testing: Freestyle testing approach to discover defects through ad-hoc testing without predefined test cases.
Regression Testing: Ensuring that recent code changes haven’t adversely affected existing functionality.
Adaptability and Learning: Given the rapid evolution of technology, being open to learning new tools, techniques, and methodologies is crucial for staying relevant as a software tester.

2 Likes

04 - What Is Software Testing and Why Do We Need It?

Task 01 - Define what Software Testing is in your words below.
Software Testing is a process of checking to which level of quality the product meets the Product Specification.

Task 02 - Find a popular story that demonstrates a Software bug.
Airbus A300-600R on China Airlines (1994)
Bug and reason:
Pilot error and lack of the recommended update of the software (Chinese Airlines
they consider it “not urgent”)
Outcome:
Crashes and catches fire during landing at Nagoya airport
Loss:
$40 million + 264 human life

Task 03 - Discover Software Testing misconceptions.

  1. Software Testing is Boring - Software testing is like being a detective! Imagine you’re Sherlock Holmes but instead of solving crimes, you’re hunting down bugs and glitches. Every day is different and full of surprises. Plus, finding a tricky bug is like solving a mystery – super satisfying!
  2. Testers Only Break Stuff - Testers don’t just break stuff; they make things better! It’s not about finding what’s wrong, but about ensuring everything works perfectly. Think of testers as the superheroes of the software world, saving the day by making sure your apps don’t crash and burn.
  3. Anyone Can Be a Tester - Sure, anyone can learn to be a tester, but it takes skill to be a great one! Testers need to be detail-oriented, think critically, and have a knack for problem-solving. It’s like being a ninja with a keyboard. You’ve got to be quick, sharp, and always ready to tackle the next challenge.
  4. Testers Don’t Need to Code - While some testing doesn’t require coding, many testers do need to know how to code! Automation testing, for instance, involves writing scripts and using programming languages. So, if you’re into coding and debugging, testing might just be your thing!
  5. Testing is Only About Finding Bugs - Testing is about improving the overall quality of the software. It’s like being a chef tasting a dish before serving it – making sure everything is perfect! Testers also check for performance, security, and usability. They ensure that the software not only works but works well.
  6. Testers and Developers Don’t Get Along - They collaborate to make the software awesome. It’s all about teamwork and communication. Good testers and developers respect each other’s roles and work together to achieve the best results.
1 Like

05 - How Do We Test Software?

1. Testing the product

Executing test cases:
Predefined steps including actions and outcomes.
Expected outcomes are based on product specification.
Execute a steep and compare the outcome against the expected outcome.

Exploratory testing:
The person testing has freedom to test at will.
Generate a test idea, execute it, observe what happens and then begin again.
Charters can help guide what testing is carried out.

“Ad hoc” testing:
Unstructured testing with no plan.
“Ad hoc” is done without any prior planning.
Carried out when a lot of change is happening.

Monitoring:
Released code is regularly checked by tools.
Is it still up? Any errors? How are users behaving?
How you monitor depends on what you have built.

User acceptance testing (UAT):
Does the product match what the end user or business wants?
Has it met specific requirements? Designs? User expectations?

Automation testing:
The processes of building and using tools to support testing.
Automation can be used in many activities to support the teams.
Automate test cases, tools for exploratory testing, monitoring tools, etc.

2. Reporting Testing

Raising bugs:
Reports details on problems that occur on the system.
Details such as how to reproduce the bug, what happened and other information.
It’s important to add lots of useful information

Reporting metrics:
Counting bugs, test cases or ET sessions to learn how testing is going.
Not the most accurate way of reporting.
Can be useful to get a general idea of testing.

Exploratory testing debriefs:
One to one interviews after an exploratory testing session is run.
Useful in reviewing how a session went.
Can be used to raise issues and review bugs.

Formal reporting:
Required for regulatory reasons or company policy.
Teams may be required to provide detailed evidence of their testing.
These reports might have to follow a standardised report template.

3. Testing requirements or ideas

Discussing and questioning requirements:
Requirements come in many forms.
We ask questions to help understand requirements better.
We ask questions, share examples, create sample diagrams or more.

Reviewing designs or diagrams:
The format or requirements may vary.
Requirements can be designs, style guides or architecture diagrams.
These can be explored and questioned.

4. Other testing activities

Collaboration:
Pairing
Mobbing
Demos

Improving ways of working:
Retrospectives
Workshops
Coaching sessions

1 Like

06 - What Makes a Good Tester?

Traits of a Software Tester

  • Technical Skills
  • Curiosity
  • Analytical Thinking
  • Adaptability
  • Pragmatism
  • Collaboration
  • Time Management

Skills of a Software Tester

  • Communication
  • Questioning
  • Critical and lateral thinking
  • Technical Knowledge
  • Project Management skills
  • Ability to follow procedures
  • Eagerness to learn
  • Programming languages
  • Reporting skills
1 Like

Completed Testing Activities Puzzle challenge.

1 Like