The Different Roles Within the Field of QA and Testing

Here’s my next post which appeared first on Simple Programmer..

This piece was a collaboration written by Kayleigh Oliver and Daniel Sayer, writer of the Unexpected QA blog.

There are so many job titles which cover the generic role of someone who works as a tester or someone within quality assurance (QA). Is it all recruiter babble? Does it denote the same roles and responsibilities?

Or are there significant differences in what a person will be expected to undertake determined by these job titles?

Here, Kayleigh and Dan will discuss the various current job titles for non-specialists they have encountered in their respective careers and work to define the high-level responsibilities of each title.

More specifically, they will describe the role of a tester or someone working in QA and put forward their explanations of what each title means, so you can formulate your own definitions and decide which would be best for you to pursue.

QA Engineer

Dan: The first thing to do when analyzing the job title is to break it down into its constituent parts, with QA short for quality assurance. I believe these parts convey the idea that the person occupying the QA role needs to focus on more than just testing. They should be the advocates of quality in their team, promoting others to increase the levels of quality in the work they undertake, the processes they follow, and the code they write.
The “engineer” portion in the context of quality assurance denotes more involvement in the release process for both defining and ensuring features, and changes are released with minimal negative impact to the end user.

Essentially, if we were to draw a Venn diagram of all quality/testing job titles, I would see “QA engineer” being slap bang in the middle, accounting for a little bit of every segment: testing, coding, process improvement, and championing.

Kayleigh: I agree with Dan about the QA part of this job title; any role with “QA” denotes that the person will be an advocate of the quality of the product.

The end user isn’t usually involved within development, so it’s the QA’s role to champion their objectives for that end user and to help improve the processes used during development to ensure a high-quality product is delivered.
But when I see the word “engineer” in a job title, I don’t think about the release process. This signifies that the role requires someone with technical skills. After all, the word “engineer” is rooted in the ability for that person to be able to construct, build, and develop something.

QA Developer

Dan: This is an interesting one. I would argue––and I’m probably going to cause some controversy here––that this role is made up. Linguistically, it doesn’t make sense to both test and develop (with testing being a large proportion of the QA responsibility to the team).
One of the reasons companies employ QAs as a separate entity from developers is to ensure functionality checking is done by a fresh pair of eyes. This is the same reason why QAs should employ techniques used by developers when writing code, such as code reviews. Some companies do not have QA as a separate unit and expect developers to test their own work; however, they aren’t called “QA developers.”

Therefore, if we take the perspective that the primary goal of any QA is to ensure the quality of the end product, it doesn’t feel feasible for someone to be a QA developer.

However, if you flip this on its head and try to envisage what someone would do if hired into a role with this title, I would imagine they would spend more time working on tools that enhance QA and be less involved in the production of features and changes to the main product. Why then not just have the title of developer?

Kayleigh: I disagree here. Not all developers are involved in the development of production code. Some just maintain the code and write tests, but they are developers and their focus is what’s important. They are expected to write code that contributes to the development of features and continual improvement of those features within a readable, extendable, and maintainable codebase. A QA developer would focus on writing code that contributes to the development of tests for features within a readable, extendable, and maintainable codebase.

To me, this role would have someone with technical skills that (as Dan so rightly suggested) could be working with other teams like DevOps or solo, building testing tools to aid QA and testers during their day-to-day work.

This role could also be another way to refer to automation engineers. These are typically testers that spend the majority (if not all) of their time creating automation scripts that run on builds to detect defects before the project reaches production. Developers develop, but QA developers would have a particular focus on quality and how they can improve the quality of the product.

QA Tester

Dan: When I see the word “tester,” I immediately think about the manual process of pushing buttons and clicking through websites. This title denotes that the occupant focuses more on testing as a manual task but is still involved in shaping the overall quality of the processes in getting changes or features released (denoted by the QA section of the title).

The role of QA tester isn’t one I have seen that regularly, with my focus being in public services, online gambling, and web and app services. Usually, employers either want the tester to have a direct influence on the product from the start of the process or only test it once it’s completed.

Kayleigh: I agree that the role of a QA tester is to perform manual testing. Again, this role requires the tester to be an advocate of quality from the end user’s perspective and to champion change to improve the processes that build the product.

Historically, you’d find that testers working within the games industry would perform only manual testing, so they were called “QA testers.” However, more industries are recognizing the importance of releasing a high-quality product and how a low-quality product can affect their reputation, brand, and finances. Even the games industry has started employing QA engineers and automation engineers. This distinction in titles makes me more confident that this role is purely manual.

QA Analyst

Kayleigh: I think this is quite similar to the QA tester. However, I think the QA analyst would be more involved in the development cycle during the user acceptance testing (UAT) stages.

Dan: I agree that there are definite similarities to the role of QA tester; both roles have their main focus on manual testing. I was once told that the difference between a QA analyst and QA engineer was that the engineer was in charge of the release process whereas the analyst’s focus was up until the point of release. I’m sure there’s more to it than this anecdote, if we put this job title under the microscope. It has similarities to a business analyst and, potentially, crosses over in roles and responsibilities such as UAT stages, as Kayleigh mentioned.

Automation Engineer

Kayleigh: This is probably one of the most well-known job titles on this list so far. The role of automation engineer is to develop (hence the engineer part of the job title) automation scripts to test production code.

The types of tests written will largely depend on the company you work for. Automation engineers tend to write integration tests and UI tests.

Usually, automation engineers are more likely to write UI tests since they test the application from the end user’s perspective. But depending on the company and its size, this role could write anything from low-level unit tests to high-level UI tests.

Dan: Again, I very much agree with you. “Automation engineer” is pretty much the Ronsil™ of job titles (does what it says on the tin). These guys (or girls) write automation tests, and that’s pretty much all they do. However, I don’t wish to belittle the task. With such a wide range of ways to contribute to automating the testing process, from unit to UI, there’s enough work to do to deserve a person specializing in this position.

Having been in a position where I was expected to write automation tests, these scripts need to be kept on top of. The slightest change or new feature can render all your tests obsolete, which is why strategies such as Page Object Model were devised; however, someone does have to implement this.

Software Tester

Dan: My thoughts on the role of a software tester are that it’s similar to that of a QA tester: mainly manual testing, focusing on the product and not on the process. It feels very much like a position where the work involves testing the product, and it either meets the expected criteria or it doesn’t.

My understanding may be swayed by the types of candidates I interviewed who came from a software tester background, but it did feel as if there was a perceptual difference between software tester and QA engineer.

Kayleigh: I would mostly agree again with Dan here. The software tester would focus on testing the functionality of the product to ensure it meets its intended use, but not test it from the perspective of whether it fulfills its business need. The word “software” is a generic catch-all that dictates you are a tester of digital products and not mechanical, like a lab or electrical tester.

Test Engineer

Dan: I believe the lack of specifying “software” in the job title identifies that the product under test could be hardware. However, I feel that this is where the differences cease. There doesn’t seem to be a hardware tester job title that’s employed with much frequency, so this is used for manual testers for hardware.

Kayleigh: Again, I’m disagreeing. Whenever a job title includes the word “engineer,” it implies a level of technical ability for that role. But other than that, I would agree this role focuses more on testing the product’s functionality rather than the business value it adds or the end user’s perspective.

Test Analyst

Dan: Test analyst is more of a Waterfall development process job title. Test analysts can either identify the targets from testing activities and enact the tasks to achieve these targets, or they can work in a more advisory position, assisting with preparation of test cycles, helping users during acceptance tests, and producing reports and analysis of the outcomes.

Kayleigh: This would be one role that suggests you’re going to solely be doing manual work. However, this role would focus more on testing from an end user’s perspective rather than merely ensuring the features are functionally performing.

Software Development Engineer in Test (SDET)

Kayleigh: This title was first used in 2005 by Microsoft. This title is the most technical for someone in the testing field because their role is to both develop and test, often across different stages of development. The person undertaking this role may develop many different types of tests, for example integration, contract acceptance, and UI.

To be able to perform all of these types of tests, you need to have an understanding of what makes a good test, the types of testing required at each level, and how to implement them.

Giving this type of technical tester a title with the word “development” means the candidate should have a greater technical ability. It also makes the title easier to understand to those outside of any development role. Anyone can guess what a software developer does, but you need to also explain the role of an automation engineer. This is the role that I believe is the closest to an SDET.

Dan: As you said, Kayleigh, this role has been around for a while now. An SDET is a developer that focuses on testing. SDETs are highly proficient in coding and development practices but do not get involved in the development side and remain focused on ensuring the product is in a testable position.

I feel the perception is that SDETs would rather code a script than manually execute a test, regardless of the time and effort it would take. I am aware of several places that would utilize SDETs to refactor code to make it more testable. This isn’t the norm but does go to show the wide skill set those employed in this position need to have. But how is this role different from that of automation engineer? I believe it’s the same job under a different name and cannot see a noticeable dissimilarity between responsibilities. However, if I was in this position, I would rather be known as a software development engineer in test. It has a nice ring to it, don’t you think?

Do Job Titles Really Matter?

Ultimately, a job title can give you only so much information into what you will be doing. Many jobs will be posted by non-QAs (recruiters, development managers, etc.) that even if there was a consensus on the titles above, there would still be so many nuances that you have to look at the job description to make an informed decision. You’ll find some uniquely named positions after a quick search on popular job sites, such as Test Ninja, which shows that our list and discussion isn’t exhaustive.

We both agree that the description of the role is more important than the title, as it’ll convey the detail and day-to-day actions of the role. However, job titles are still used to denote the level of authority of an individual at a glance, so it does matter what title you are working under.

What to do if Your Job Title Isn’t for You

Again, it’s true that a job posting may be different from what you actually undertake in the role. You may find that your role is different than the title you originally applied for.

If you’re not happy with your current title, we would suggest you speak to your manager and negotiate a title change in your next performance review. Remember to go with evidence of the additional tasks you undertake so you can justify a title that more represents your day-to-day workload.

If you’re not happy with the extra responsibilities you’ve undertaken which don’t usually fall under this role, we suggest you also talk to your manager. Maybe these extra tasks are pulling you away from doing your best work and spreading yourself too thin. Whatever you may be unhappy with, come to a compromise with your manager; don’t just carry on.

The Difference Between Games and Software Testing

Here’s my guest post which appeared first on Simple Programmer.

When I was going through the process of transitioning from a games tester to a software tester, I couldn’t find any material on it.

So, to save others from the headache I endured, I decided to create a guide to doing just that.

In this guide, I want to highlight the difference between the two paths in testing, what I did to prepare for this sideways career move, and what I had already done that made the transition easier.

To clarify, in this post I’ll use the term software testing to distinguish the difference between games testing and testing done outside the games industry. Although this could mean testing software, it could also mean testing desktop and mobile websites, web-based applications, or mobile apps.

My Life as a Games Tester

When I worked as a games tester and told someone what I did for a living, they almost always said, “So, do you just play games all day?”

“I wish!” I thought.

Being a games tester is one of the most challenging jobs that I’ve had in my life (and I’ve been working for 15 of the 31 years I’ve been alive!). It challenges your perseverance, your attention to detail, the attention to your job, and your love of games.

After eight hours of driving the same Honda Civic-style car in doughnuts, watching to see if it spontaneously combusts after the 14th loop, you may start to feel your passion ebbing.

Yes, this means you may have to test the same part of a game for days on end (depending on the complexity). It’s clearly not all fun and games.

Games testing is only now utilising small amounts of automation, but it is project, team, and company specific—not an industry standard. Most of games testing is done manually. When you test manually, it means you have to work through the test without aid from programmed automation scripts. Often, an experienced (maybe a lead or senior) tester will write out a test plan and distribute the work to their team.

A single test is referred to as a test case. Working through a test case is also known as running a test case. The length of a test case depends on the project, but they are generally short, and test one section of the game at a time. This helps to isolate issues within specific areas of the game.

What Is Different About Software Testing?

Unlike games testing, software testing greatly utilizes automation scripts, and yes, you test software, not games. These scripts can be created before or after producing written test cases, as either can be used to supplement the testing of the other. A number of tools and frameworks have been developed to make automation quicker, as setting up automation scripts can initially be very time consuming.

As software testing makes greater use of automation scripts, this generally means that the job of a software tester is more technical than a games tester. For example, being a software tester, you may need to be able to use tools to query databases. Still, it depends on the testing methodologies used by each company and what they’re testing.

The field of software testing is usually seen as a more skilled profession than games testing, even though the skills required to be a games tester are exactly the same as those needed as a manual software tester.

Qualifications Needed

So what background and experience do you need to get a job in each?

For software testing, you usually need a degree in computer science, software engineering, math, or anything technical, really.

For games testing, a degree may be useful, but it’s not always necessary. A love of games, attention to detail, and a strong work ethic can usually get you into the field.

Testing Platforms

For games testing, the platforms you can test on are:

  • PC (including Steam), and desktop
  • Consoles
  • Web – online games like MMOs, HTML5, and Facebook
  • Mobile

For software testing, you have:

  • Web
  • Software
  • Mobile

Types and Specialities

The platforms and content you test are the most obvious differences between the roles of a software and games tester.

These differences across the different platforms and between the content lead to diverse specialties within each role.

Games Testing

Manual

This involves going through every test case by hand (no matter how many times you need to run it).

Performance

This ensures that the game runs at or above the required frames per second.

Compatibility

If you’re testing a browser game, you may need to test the game’s functionality, usability, and accessibility across different browsers. This ensures players have the same quality of experience, no matter what browser they use to play.

Exploratory

This is where you can show your real skill. Exploratory testing is where you’re doing whatever you can to come across flaws and issues in the game. Once you’ve found an issue, you need to make sure you can recall the exact steps to reproduce it, so the developers can fix it.

Certifications

In games testing, you may work across a number of different platforms like the latest consoles from Nintendo, Sony, or Microsoft. Each of these have different certification standards tests that games on their consoles are required to pass.

Software Testing

Compatibility

In software testing, specifically web testing, you may have to test whether the product is compatible with all the current versions of web browsers. In this situation, you would be classified as a specialist at compatibility testing.

Performance

With performance testing, you’re trying to determine how a system performs in terms of responsiveness and stability under a particular workload. Performance testing is a field that has a number of specialities within itself.

Automation

Automation involves creating test scripts that can be used repeatedly to allow testers to devote time to other tasks.

Functional

Functionality focuses on the inputs and outputs of the system and its behaviour. It can also be known as black box testing.

Non-Functional

Any non-functional tests focus on how the system operates, rather than how it behaves. It can also be known as white box testing.

Regression

When you perform regression testing, you run through the entire functionality of a product to ensure that nothing has changed since a new feature was introduced.

Integration Testing

Integration testing requires testing more than one component of the system at once, and making sure the way they are interacting is as expected.

Unit Testing

This is testing individual components of the system. You must make sure their inputs and outputs are as expected.

Sanity Testing

Sanity testing is sometimes known as smoke testing. This is doing the bare minimum over a cross section of the product to ensure all the functionality is still intact.

Systems Testing

When you perform systems testing, you work to ensure that all the components of the system work together at once and as expected.

End-to-End Testing

Finally, end-to-end testing requires a test of the full cycle of the system from when the first object is produced or when the first customer interacts with it until the end state.

Automation Tools in Software Testing

I’ve learned that a task can only be as fun as the tool you’re using to perform it.

When I first started automation it was painful—we used WaTiN. I look back now and realize that if we didn’t begin with this tool, I might not have learned C# as deeply as I did, so silver linings and all that. But I let out a little scream of joy when our team was finally authorised to use Selenium. It’s the most popular automation tool—at the time of writing—for web and mobile testing (with plugins).

Selenium offers two ways to automate: IDE and WebDriver.

IDE is a desktop app that allows the user to create automated scripts using simple commands to detail the command, the target, and the value. No knowledge of programming is required, just how to navigate the Direct Object Model (DOM) of websites.

In contrast to IDE, Selenium WebDriver is a library that you install and use within your testing project. Utilizing several languages like Java, C#, Python, JavaScript, PHP, Perl, and Ruby, you can create automation scripts. Programming knowledge is needed for this tool, but you don’t need to be an expert. Once you get used to the methods of Selenium, writing tests is a lot more enjoyable.

Training and Certifications

Certifications from Foundation to Advanced level exist to extend and show your knowledge within software testing.

There’s currently no equivalent within games testing, although there’s nothing stopping a games tester from gaining a software testing certificate. In fact, it will probably help to strengthen the skills of that individual.

These certifications are currently offered by the BCS, Microsoft MTA, and MCSD.

Games testing courses are available, but aren’t recognised as a necessary qualification for entry into the field.

Points to Consider When Moving from Games to Software Testing

When you decide to move from games testing to software testing you should consider the following:

Positives

More Money

Generally, software testers earn more money than games testers because, as I mentioned, the role could be more technical.

Better Quality of Life

The deadlines you work to aren’t usually as high pressured as games industry projects. Although there may be some overtime, there’s generally less of it, and it’s often compensated. With less overtime, you have more time to be you and enjoy life, so you can work to live—not the other way around.

Improvement in Technical Expertise

Your programming skills will improve depending on how much automation you perform, but your exposure to tools that are used in the backend will also increase. You may work on a daily basis with databases improving your SQL skills, working closely with developers so you’ll learn how to speak ‘dev talk’, and also debugging problems to a certain degree.

Negatives

Get Technical

You’ll have to make the time to learn automation, or demonstrate some technical ability, if you want a good chance at getting a role. If you want to get more technical, this could be a positive!

Starting from the Bottom

No matter where you were as a games tester, you’ll have to start from the beginning as a software tester. This can hurt your pride a bit, but remember, juniors get a lot more leniency when it comes to making mistakes. It’s best to revel in this time, make your mistakes, learn lots, find your niche, then work your way up.

There may be more points to consider as the decision to switch careers is a personal one and your motivations are not something I can account for, but these were my main ones.

When I looked at the pros and cons, the pros definitely outweigh the cons, so I switched.

Making the Transition Smoother

In order to make switching career paths as easy as possible, I created small automated tools to assist me during the mundane testing tasks. I also bought and began reading the book, Software Testing: An ISTQB-BCS Certified Tester Foundation. To help you as you explore, I’d suggest doing these things:

Read the Foundation Software Testing Book

This book covers all the basics of software testing and prepares you for any questions you may be asked about testing during your interview.

Learn the Basics of Any Programming Language

By picking up a programming language, you will make the hurdle of automation a slightly shorter jump. As you read earlier, Selenium can be programmed in a wide range of languages, so I’d recommend choosing one of these.

Play Around with Selenium

To be honest, you don’t need a vast knowledge of a programming language to be able to understand the basics of Selenium. The commands are written in a readable way, so what you read is basically what you’re telling the browser to execute. For example:

driver.Navigate().GoToUrl("https://simpleprogrammer.com");

What do you think that means?

Move Forward One Percent at a Time

Start doing small things. Anything to build up your knowledge one step at a time, one day at a time.

After 30 days of doing this, you’ll find that you have gained a lot more knowledge than you would’ve thought. Try reading a page from a book like the ISEB Foundation Software Testing, complete a small Selenium problem a day, or execute a small C# tutorial.

Whatever you choose, make sure it moves you forward towards your goal of building your software testing knowledge.

So What’s Your Next Step?

Moving from games to software testing can seem very daunting, but if that’s what you’re considering, then you should jump in with both feet.

Learning alongside your current job will be tough, but it’s definitely worth it. The benefits of this career move outweigh the short term drawbacks. You only need to have patience, be self motivated, and believe you can do it.

Good luck!