As a beginner, what is the best way to practice software testing/QA skills? I've been reading books (Kaner, Myers, Bach) and reading blogs but none of those gave me practical preparation for what I wanted to do, so I am asking you. How do I get my hands dirty with software testing?
There will be longer and doubtless more complete answers but I think that if you understand the core principles of testing, you'll be fine.
- Know what the product is supposed to do. Determine if it does it.
- What is the product supposed to achieve. Does it achieve it?
Those are the Golden Rules. Everything else can be thrown away apart from those. Question two is actually the most important but you can usually only answer it after evaluating question one.
You want to get to grips with testing? Well, you're lucky - there are opportunities to practice everywhere. Think of the next thing you're going to do and break it down using the two simple rules above. Assume that you're going to want to post a reply to this message...
"Know what the product is supposed to do."
- The web site should allow you to post a message
- Your comment should appear as a follow up to mine
So you start:
- Can I use a reply function?
- Does it capture the text I enter?
- Is it posted as a follow up item?
- Is the complete message posted?
- Is it posted as it was typed?
"What is the product supposed to achieve. Does it achieve it?"
- When you've finished, has the tool allowed you to reply to me?
..and that's it. Regardless of the various methods for determining what should do what and ways of handling issues when it doesn't, the core approach never, ever changes. When it doubt, fall back on those questions and you won't go far wrong.
I think you could follow all the answer you can see on your post. I will also recommend you that start by learning a programming language (which you feel more confortable) and then start using Selenium (which is easy to start). Once you control Selenium, start using Jenkins along with your test developed on Selenium and upload all of them into a git repository (that way you can learn how to work with a code repository and how to clone, commit, push and pull your changes.
Then start using a static code quality platform sush as sonar and integrate it on your test and Jenkins, and improve your programming skills.
Once you have your CI structure working along with your Selenium Test and sonar, start with others browsers (Chrome, IE, Safari...) and check the way to choose one of them on your project and also the O.S. you wanted to launch your test. Once you have all of this set and running, you can start running test on pararell.
After all of this, you may feel ready to move on, so this is when you can start using Appium for Mobile testing. Appium has the same way of work than Selenium and the beginning will be kind of similar (except that you need to controll a way more things, such as emulators, version of the O.S, two platform...). You can use a simple app to start such as (my contribution):
Android Simple Project for testing: https://github.com/estefafdez/AndroidBaristaProject iOS Simple Project for testing: https://github.com/estefafdez/iOSTestApp
Both of them are simple apps that I uploaded to help you understand and test using Appium.
Once you have Appium set, start using sonar, Jenkins, etc and improve your scripting skills because you can also learn how to integrate Docker and Kubernetes on your CI solution.
I hope my roadmap works for you! :)
Do one of these things to get your hands dirty:
Install the firefox extension for the seleniumIDE https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/ and starting writing test cases right now. Automate a google search for cars to get started. Click on the first result. continue.
Use GhostInspector https://ghostinspector.com/ (free version) to write some simple test cases that exercise some web pages.
Pick a language and test frameworks, for example Ruby, RSpec and Capybara, look for some basic examples and write a simple test case, e.g. a google search. Requires basic programming knowledge.
The main knowledge you will need to focus on is:
- manipulating an editor
- identifying web page elements uniquely
- thinking about how a user will do a task
- using browser inspector tools
The real programming stuff comes after you are comfortable (have practical experience) in all that.
It might help if you narrowed your focus. Learning how to test websites is useful if you end up testing websites, but not so much if you are testing embedded systems.
The easiest kind of testing is to compare the system under test to the specification.
It is much more difficult to find ambiguities in the spec itself.
I think it would be helpful to troll a bug database (like for an open source project) and see the difference in the quality of the bugs. You can get a sense of what information is actionable and what is not. If a developer asks the reporter for more information, then that is the type of information that would have been helpful in the original bug.
The responses so far cover testing an application but not the processes that should be followed by the testers which is the QA part you are asking about. The best way to understand QA is to start reading up on different types of methodologies out there (current keyword for processes would be Agile) and understanding how those processes fit around the types of testing you would be implementing.
If you want to learn and work on real projects at the same time, Take a look at utest, you learn and get paid at the same time
Starting with utest
Navigate to https://www.utest.com/getting-started
Create a full tester account and go through the beginner instructions and course material. Especially the Code of Conduct and Non-Disclosure Agreement
Never reveal at any point, including to other testers, the company you are working on a product for, never reveal the product itself or information that would lead someone to identify the particular product you are working on. I can tell you for example that I work for utest, and I have worked on mobile entertainment apps before, but I cannot reveal the name of the companies, nor the specific app, including getting into specifics that would allow you to determine exactly which app I have worked on based on our conversation. There are many courses freely available to get your started as well as specific course tracks you can take.
All the different types of testing are grouped into the following categories:
- Load & Performance
For each category, you get rated on your performance over time, based on the quality of your work, the level of your participation, your standing against other testers in the same areas of testing, and a multitude of other factors.
You may start off slow, only getting offers for smaller testing cycles. This is fine though, honestly you get from it what you put into it. Some people I know moved up very quickly.
You start off in each area as “Unrated”, but as you complete more cycles and work on more projects, the better you do, the faster you will increase your tester rating. Eventually you will progress from unrated to:
Bronze, Silver and Gold are when you get actual badges. With each badge you obtain, you will begin to notice that you will receive invites more often, the opportunity to work on larger projects with larger clients, and with the potential for larger pay (each badge comes with certain bonuses). Also, Never discuss payment amounts either as part of the NDA.
Once you have completed the basic readings and some recorded webinars (some live) on how to report a bug, what makes a good bug, what is the difference between a bug and what you “think” should be a feature, when and when NOT to dispute bug rejections, and other useful information, the next step is taking the new tester 101 quiz.
If you have read and understand the materials, this is very easy to pass and just demonstrates your understanding of the basics on how the platform works and what is expected of you as a tester (especially understanding the Code of Conduct and Non-Disclosure clauses). The company is extremely professional and expects all of its testers to be as well.
After you have passed the 101 test, you would be ready to start getting invites for paid test cycles. Before you even do that, you might get an invite to the Sandbox test. This is a real, unpaid testing scenario that allows you to get your feet wet with actual testing, and also allows the company to see if you have the qualities for a good tester (Attention to detail, reading and following testing instructions to the letter, and other qualities described in the how to be a good tester material). It also gives you the opportunity to see if software testing is for you.
If you get invited to the Sandbox, DO NOT decline under any circumstances. It will reflect poorly on you, but also, passing the sandbox test places you higher up on the list among other new testers to start getting paid invites.
The uTest Community and Social Aspects
- Although you are independent and work on testing on your own, there is a robust social network as well. This includes forums, testing tool reviews, Additional courses, a public profile you can use as a resume of your accomplishments.
- You can, and are encouraged to follow other testers profiles.
- You can write your own articles and post them to help other testers out. For example, an article on some good workflows that you have discovered that saves you a lot of time and may be of help to new testers.
- You are required to introduce yourself in the forums so people get to know you, and are given social rewards the more active you are in the community (not monetary, but respect within the community itself).
- Testers tend to be very friendly and willing to help out new testers any way they can (but at the same time you are expected to look at existing material on your own for answers). Nothing in life is just handed to you all the time, you should work for your knowledge, but never be afraid to ask questions if you have trouble finding what you are looking for. I am sure if it is not already posted someplace, other testers have the same questions you do.
I am certain that you will find what you are looking for by way of practical application while learning by signing up for uTest, plus you get paid jobs while learning. Also, for a lot of projects, you get to work and play with new and exciting technology for free and get paid to do it. That alone is big perk.
I hope this helps you in your endeavors as well as any other new testers looking to get their feet wet in the field. Good luck to you.
You could participate in Weekend Testing http://weekendtesting.com/
The explicit purpose of Weekend Testing is to provide a venue for test professionals to hone their skills and learn from each other!