
Introduction to the course with a brief overview of what it will cover and the objective
Overview of my career path & skillset that helped get me where I am now
We will review some high profile cases that demonstrate why QA is important and necessary to software development.
Here we more clearly define what QA is, and what the QA engineer role is.
How to make your way into a QA role, and what you can be doing in the meantime.
A new take on how to improve yourself to get into your dream role - the hard challenges that I have not seen a course address.
Defining the software development lifecycle. It comes in many shapes and sizes but it is important to understand the SDLC you are working in, in order to know when to test and more.
Overview of types of roles in the development field, with some details on how to communicate effectively and what to expect from other roles
There are different kinds of tests and different roles will maintain those types of testing. Here we will explore the usual types and define each one.
Taking a development methodology called TDD (test driven development) and applying it to testing.
The definition of white-black box testing: you see it on job requirements, but no one actually cares about it.
% of coverage when it comes to testing is misleading because there are virtually infinite numbers of test cases you could write. Past a certain point, test cases have diminishing returns in terms of value. For example, an input could take a range of values from 1-9999. Do you need to test every single iteration of inputs? How do you know when you've tested enough?
How would you approach testing a simple calculator app?
An ideal template of what information to include when writing up a bug.
Review different offerings regarding popular automation tools for context of the automation world.
Working on an automation framework sounds straightforward in theory - but what about when multiple people are working from the same code base? We will explore maintaining code from a remote source and how a 'master' branch works.
Utilizing a free repository manager - get set up with Github and Github Desktop.
Download links for the necessary software for getting started with TestCafe and a brief walkthrough of installation .
Using the file system in VS Code to edit a repository.
Sometimes we have local files from our computer that we do not want to save remotely - after installing TestCafe a lot of local files are generated. This file in the repository will be helpful to everyone working in it.
How to use NPM to install TestCafe, and why we are choosing a local installation vs a global installation
Before we start writing any code we will review TestCafe's own FAQs to give a broader understanding of their software, and quickly review how to reference their general documentation.
High level review of why TypeScript is preferred over plain JavaScript for writing test code.
How to use the fixture and test functions with TestCafe, how to tell TestCafe which URL to go to in the fixture.
Creating the TestCafe configuration file and adding the property to take screenshots of the browser if the test fails.
Using the testcontroller to take an action in the browser, and how to use the element inspector to extract selectable elements from the browser.
Click a button, handle native dialog boxes from the browser, and make an assertion of a value that exists in the text field that was auto-populated.
How to create a universal class that can be used across helper files in the page object model. This helps unify how you take actions and maintain selectors in helpers, instead of defining selectors in the helper and taking actions in the test based on those.
Use the page object model to start refactoring the test so actions are more reusable and easier to understand.
How to use interfaces and a data file to maintain a default set of inputs for your tests.
Using the page object model to create a class of maintainable fixtures, and how to use beforeEach in the fixture.
Update the interface/data model with the populate button selector and default input, as well as take the click action from the helper, as well as assert the click action took place from the helper.
How to assert that disabled elements are disabled by default before taking test actions, within the helper class for the page. Also an example of how a typo or incorrect element type in your constructor can break your test.
Utilizing the helper / page object model to interact with checkboxes. We also review an iterative option provided from the TestCafe examples repository.
Review remaining code needed to have a good e2e test of the demo page: radio buttons, dropdowns, sliders, and some other refactors.
How to use the ClientFunction to get the current URL and take actions like a page reload or refresh.
Use cases for testing or using APIs with TestCafe.
How to do accessibility testing with TestCafe.
How to use quarantine mode with TestCafe, from the perspective of tests that fail inconsistently.
How to install ffmpeg and customize testcafe to record videos of tests.
How to install and use Prettier to keep some formatting consistent across files.
Installing ESLint, an additional plugin to highlight warnings on test.only and test.skip, highlighting the usage of those and why they shouldn't be committed to master.
Links to TestCafe documentation on how to set up TestCafe on your CI solution, and some general tips for sucess.
I created this course to share the accumulation of knowledge from years of QA experience as a tester and a team leader. Everything from manual testing techniques and concepts related to automation will be covered, and you will be provided examples and demonstrations on how to do everything. By the end of the course, you will have an understanding of manual testing techniques & concepts and how to apply them, and how to write automation using TestCafe & TypeScript.
When it comes to testing, there are both objective and subjective standards. There are some obvious things to test on new development work, and some not so obvious things. Being able to know when you've achieved a good confidence level on when something is 'ready for production' is a critical skillset to develop. Too much time spent testing will lead to time lost - too little time spent testing will mean you might have missed something. Luckily, the years I've spent testing various webapps can be distilled down to concise information for you to start off on a better foundation.
It is my personal conviction that the ideal QA role on a team or within a software company involves manual and automated testing - I don't feel you can be an effective automated tester without knowing how to approach testing manually first.
In the early sections of the course, you will learn about QA, the software development industry, and why QA is important to the process of developing software.
After you've read about key concepts and terms and understand them we will run through a hypothetical exercise of how to apply your understanding of testing. We will also cover some other basic logistics like how to properly write up a defect.
Lastly, we will focus on learning automation from the ground up using TestCafe (an open source automation tool) and further applying the concepts of testing to writing automation. We will build and make changes to our test code close to how it would be done for the first time in reality. We will also configure our workspace a little further so it makes your workflow easier and more efficient.
I will be available and look forward to answering your questions in the Q&A section!