16 answers
Asked Viewed 210 times Translate

What does a software testing engineer do and how do you become one?

I'm learning html, css and javascript on my own and starting to look at job postings to see which areas of technology most interest me. I thought I'd be going the route of web development but I came across a post for a Manual Automation Tester and it sounds so interesting.

Here's the description: "The team is looking for a test engineer that can help ensure the team produces quality deliveries. The services that this team creates will be in a microservice architecture, running in Kubernetes on AWS. The services will handle millions of REST calls per day. The service work will be primarily greenfield (created from the ground-up). The project management style is Agile, with elements of both Kanban and Scrum. The role of the Test engineer is to perform black box testing of the REST services, with a focus on functional testing. This includes alpha testing, acceptance testing, ad-hoc testing, and back-end validate of databases. The Test engineer will work closely with developers on a daily basis."

Can someone please tell me in plain English what this job actually is? I'm a really detail oriented person and I might like this field, but I barely know what they're talking about, lol. I've heard of Agile but not clear on what it is.

Many thanks!
#computers #software #engineering #testing #agile #databases


+25 Karma if successful
From: You
To: Friend
Subject: Career question for you
16
100% of 14 Pros

16 answers


Updated Translate

Gabriel’s Answer

A Software Testing Engineer is an integral member of any software development team who follows a set of methods and activities designed to ensure that the software component/application/system/product is as per known standards and corresponds to all the specifications.

The general responsibilities of a software testing engineer job include:
• Work with the development team to learn and understand the functionality, design test plans, write test cases/scenarios/use cases, organize them into suites and capture them in version control with the other source code.
• Keep the test case suites updated to match the evolving functionality.
• Compare the test case suite to a functionality matrix to make sure that the right areas of the functionality are being tested at the right time, including the amount of coverage the tests provide.
• Set up test environments and provide automated solutions to execute test case suites or execute them manually to generate defect reports showing the team exactly what is broken and why, so that developers can take prompt action.
• Provide feedback on usability and serviceability, trace the result to quality risk and report it to concerned people.

Other skills and competencies include:
• An understanding of the software development life cycle as well as the business approach for the software
• Experience with the programming languages used by the development team to provide the right test solutions
• Analytical skills
• Decision making ability
• Attention to details
• Ability to work in a team as well as an individual
• Ability to work under pressure and maintain deadlines

As for the job description, there are several things being asked.
• Microservices - Very common software architecture nowadays.
• Kubernetes - A common platform to run stand-alone containers, generally consisting of microservices.
• AWS - Amazon Web Services, a cloud platform (similar to Google Cloud or Microsoft Azure).
• REST - REpresentational State Transfer, a common software architectural style for Web service with a known set of design constraints.
• Greenfield - A greenfield project is one that starts from scratch without any existing baseline. Good in cases where you want to define new frameworks or solutions without dealing with legacy implementations or constraints imposed by prior work. However, it can be a challenge if everything is new.
• Agile - A group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. Kanban and Scrum are subset process frameworks of Agile. Kanban is based on a continued pipeline of work where the team picks from the top of the queue. Scrum is based on time-boxed iterations where the team plans ahead for the work to be doing within each iteration.
• Black Box Testing - Behavioral Testing, a software testing method in which the internal structure/design/implementation of the item being tested is not known to the tester. These tests can be functional or non-functional, although usually functional.
• Alpha Testing - A type of software testing usually performed by internal employees of the organization to identify bugs before releasing the product to real users or to the public.
• Acceptance Testing - A type of formal software testing to determine whether or not the software satisfies the acceptance criteria and to enable the user, customers or other authorized entity to accept or not the implementation.
• Ad-hoc Testing - A type of informal software testing performed without planning or documentation, e.g., buddy, pair or monkey testing.
• Back-end Validation - Modern software applications are traditionally built in three layers: presentation, business logic, database. Back-end validation refers to the tests performed on the database to confirm "referential integrity", i.e., that all the queries work as expected and that table operations (e.g., deleting rows) do not leave any orphans or corrupt the remaining data.

In essence, the microservices offer REST APIs (Application Programming Interfaces) that can be called multiple times a day using known endpoints (URLs). Millions of times a day, according to the description. They want to be able to test the functionality of those services in a cloud environment including the transactions and data used by them.

Software test engineering is an exciting and critical area of any software project. It can make or break the software release, if not taken seriously.

There are some references below to get more details about the topics mentioned above.

I hope this helps.

Gabriel recommends the following next steps:

Go to https://microservices.io/ to get familiar with microservices
Go to https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/ to get familiar with Kubernetes
Go to https://aws.amazon.com/what-is-aws/ to get familiar with AWS
Go to https://restfulapi.net/ to get familiar with REST
Go to the Agile manifesto at http://agilemanifesto.org/ and https://www.atlassian.com/agile to get familiar with Agile

Gabriel, thanks! I appreciate this thorough answer; it gives me a lot to explore. And thanks for taking the time to add links, that's really helpful. Kathy M.

4
100% of 3 Pros
100% of 1 Students
Updated Translate

Shweta’s Answer

Software Testing is the very important part of software engineering. You might find multiple job opening with the terms software test engineer or QA (quality assurance ) Engineer. In earlier days most of the testing was happening as manual testing but it need more time and manual resources. Now a days automaton testing is preferred by many companies. It would be really beneficial to learn new and upcoming technologies. Python is very strong scripting language and getting adopted by many QA teams.

The main role and responsibility of test engineers are as below -

1. Go through the product documents to understand the functionalities of the software which needs to be tested.
2. Create the test cases to verify that written functionalities are working as expected.
3. Create the test cases in such a way that software should be able to handle the unexpected scenarios as well and respond accordingly.
4. Execute the test cases on the software and log the results.
5. If some discrepancy is observed in the behavior then issue should be reported to the development team that is why close interaction is needed between test and development engineer.

There are different kind of testing like functional testing in which software functionalities are tested, Performance testing in which software is loaded with multiple calls to test its performance. This helps to stabilize the software for high load.

Thanks Shweta! I appreciate the details in your response. Kathy M.

1
100% of 1 Students
Updated Translate

Chanchal’s Answer

In very simple terms - Software Test Engineer job is to test the software and certify that it is fit for the purpose it is built for. It is a very big responsibility considering that software is used in every field of life and you might be certifying the software of medical purpose where some life is dependent on software you are testing and certifying fit to use.

Software testing is a science and an art as well. It is a science because you need to understand and aware of the technologies to test the software in test. It is an art because a tester sometimes also drive testing based on instincts as to where most of the bugs can reside in software.

In your day to day job as a tester you will study the requirements documents, software designs and try to get your head around that why , how and to whom this software is built for. Then based on the documentation you have with you; you plan to create the test scenarios which can be exercised in real life when this software in question will be used by the end users. And then you elaborate these scenarios into test steps which are more detailed like how to click the button or enter the name in the text box etc. After writing the test cases, you will execute them in the test environment and record the results, raise defects if any, and interact with the stakeholders to get them fix and test. You will love your job more when you find anomalies that could have resulted in big issues when software is launched in the market.

Now above is the most simplistic approach I have provided. There are several types of software testing but for the sake of keeping my response simple to understand, I will quote only few important one's here. Functional Testing, Performance testing, Security testing, Operational Acceptance testing are few of the important ones.

The career path of software tester is very interesting, Now think that you have been testing banking softwares from quite a while and now gained knowledge of the system and business domain. You can easily grow your career then to Business Analysis based on the Business Knowledge you have gained, can grow your career to Software Developer because of the technical skills, can be a Manager in Software testing or a Test Architect and provide consultancy in automation.

1
100% of 1 Students
Updated Translate

Judi’s Answer

Working in Agile as a test engineer can be very appealing and different than other development frameworks. However, there are some important things you should consider about Agile before you interview. My below information helps give you insight to the Test Engineer’s role from an Agile Development Framework Perspective.

There are different types of Agile. You can find great information about SAFe Agile here https://www.scaledagileframework.com/. Find out what type of Agile they follow. My below comments are related to SAFe. SAFe is becoming more prevalent in medium to large companies.

Agile is all about working as a team, and that the team is empowered to help make development decisions as they learn more about what they are developing. Testers play a key role on the team. And can easily move to other roles on the team as they are the most likely to become subject matter experts on the product they are testing.

Agile development teams (made up of 5-15 people) break down their work into smaller manageable segments of work delivered in Sprints. They build, test and deliver their planned work within 1-4 weeks depending on the company. So the goal is to be accurate, fast and decisive as the team rinses and repeats, being measured on their steady delivery until their product is done.

Agile teams are made up of a product owner, developers, testers, business analysts and supporting roles like architects and DBAs who are not team members but provide support. A lot of Agile teams are moving away from having specific testing roles and instead expect the Business Systems Analysts to test hence keeping yourself flexible is good. Technically everyone on an Agile Team should be able to backfill each other.

Depending on the assignment, a Tester can be focused on “Verification“ (confirming the engineering team delivered to specifications - typically a more technical process, more time spent in the database, development tools and backend) or “Validation” (confirming the design solves the customers problem - typically a little less technical, more time spent in the user interface, data, and can be customer facing).

To work on an Agile team as a tester you need to be comfortable breaking down development stories into test scenarios that are agreed to by the team, and being held accountable to the testing you agree to complete for each sprint. Testers often ask the difficult questions the architects or developers forgot to think about.

There is often an agreed- upon ratio of testers-to-developers that varies per company and even per team. It is a good idea for you to ask about their ratio when you interview. You may not want to work for a firm with only 1 tester to 10 developers unless they have lots of automation.

Hope this helps you understand the role of a test engineer on an Agile team.

Thank you Judi! Your answer is really helpful and so thorough. I'll look further into Agile; thanks for the link and for taking the time. Kathy M.

1
100% of 1 Students
Updated Translate

Aditya’s Answer

A test engineer is someone who understands what problem a piece of software is solving, develop in detail test cases both positive and negative which can help in validation of the piece of code/software system developed by another engineer

These days a test engineer not only helps with the test cases but also writes automation (selenium, integration testing) which would need some programming skills good understanding of object oriented programming.

Coming to your question about Agile - It is a software development methodology. You may have heard of waterfall methodology in the past. https://en.wikipedia.org/wiki/Agile_software_development link gives you an idea of what agile is. Most of the companies these days are trying to adopt some sort of agile methodology, so reading about it will help. This is something you will gain experience on your job if this is the first one.

Also the job description talks about AWS (Amazon web services), REST, Kubernetes - These are some of the modern tech and would fall under cloud software development.

Hi Aditya, Thanks for your reply! Kathy M.

1
100% of 1 Students
Updated Translate

Andrew’s Answer

Test engineers need to be methodical and have patience to go through and document test cases and results. It is definitely valuable and can be rewarding if that suits your personality. (plus opportunity to work remotely since it's software)

Test engineers need basic software skills. You can get yourself familiarized with basic software tools, like Linux, git, etc, which are people tend to use these days. What language to use depends on company and projects. You can get some basic understanding of building, compiling and running software. Because that would be something that you would you every day as a test engineer.

Without going into a particular job, test engineers comes up with test cases and test the software to make sure it is doing what we think it should do. A lot of times, when a developer changes something in the software, it has unintended consequence that he/she didn't foresee. The job of test engineer is to make sure that (1) new function works as designed and (2) nothing else breaks. As you can imagine, there's are lots of opportunity to automate many of the tests since you will testing those cases again and again for each iteration of the software.

Andrew, many thanks! Your explanation in normal, everyday language really helps me understand what a test engineer actually does and why it's important. Sounds interesting! Thanks again. Kathy M.

1
100% of 1 Students
Updated Translate

pranab’s Answer

Testers job will be creating test cases and will likely be testing different APIs that are used and validating that data is correctly being sent to a database and other tasks of a similar nature.

There are two types of testing - Manual and automation.

Now a days most of testing is done through Automation.

Knowledge of programming language like Python , R will help you

You can choose online certification for this great career choice

Thanks Pranab! Kathy M.

1
100% of 1 Students
Updated Translate

Chanchal’s Answer

In very simple terms - Software Test Engineer job is to test the software and certify that it is fit for the purpose it is built for. It is a very big responsibility considering that software is used in every field of life and you might be certifying the software of medical purpose where some life is dependent on software you are testing and certifying fit to use.

Software testing is a science and an art as well. It is a science because you need to understand and aware of the technologies to test the software in test. It is an art because a tester sometimes also drive testing based on instincts as to where most of the bugs can reside in software.

In your day to day job as a tester you will study the requirements documents, software designs and try to get your head around that why , how and to whom this software is built for. Then based on the documentation you have with you; you plan to create the test scenarios which can be exercised in real life when this software in question will be used by the end users. And then you elaborate these scenarios into test steps which are more detailed like how to click the button or enter the name in the text box etc. After writing the test cases, you will execute them in the test environment and record the results, raise defects if any, and interact with the stakeholders to get them fix and test. You will love your job more when you find anomalies that could have resulted in big issues when software is launched in the market.

Now above is the most simplistic approach I have provided. There are several types of software testing but for the sake of keeping my response simple to understand, I will quote only few important one's here. Functional Testing, Performance testing, Security testing, Operational Acceptance testing are few of the important ones.

The career path of software tester is very interesting, Now think that you have been testing banking softwares from quite a while and now gained knowledge of the system and business domain. You can easily grow your career then to Business Analysis based on the Business Knowledge you have gained, can grow your career to Software Developer because of the technical skills, can be a Manager in Software testing or a Test Architect and provide consultancy in automation.

Many thanks Chanchal! Your "simplistic" answer is perfect for helping me understand software testing; the simpler the better. I appreciate you taking the time. Kathy M.

1
100% of 1 Students
Updated Translate

pranab’s Answer

Testers job will be creating test cases and will likely be testing different APIs that are used and validating that data is correctly being sent to a database and other tasks of a similar nature.

There are two types of testing - Manual and automation.

Now a days most of testing is done through Automation.

Knowledge of programming language like Python , R will help you

You can choose online certification for this great career choice

1
100% of 1 Students
Updated Translate

Patricia’s Answer

Hi I work with a lot of test engineers, I hope the following can help you:

A Testing Engineer is required to fully test the product or system to ensure it functions properly and meets the business needs.

The project management style is Agile, this means that the team works for short periods of time (no more than four weeks per sprint) to increase the product being delivered (the system)

A Kanban Board is a visual tool that gives an overview of the current work status and simplifies team communication.

Hi Patricia, thanks for your answer! Kathy M.

1
100% of 1 Students
Updated Translate

David’s Answer

Software testing is a very enjoyable career choice. You will likely need more than just html, css and javascript, try learning languages such as C#. The job will be creating test cases and will likely be testing different APIs that are used and validating that data is correctly being sent to a database and other tasks of a similar nature. The Kanban board will be a board with many tickets on it with different things that need to be developed and tested. There are many online courses you can take to learn more about this line of work. Software testing is a great career choice.

Hi David, Many thanks for your answer. I'll keep C# in mind as a next language as I continue learning more about software testing. Glad to hear it's something that people find enjoyable. Thanks! Kathy M.

1
100% of 1 Students
Updated Translate

Nikita’s Answer

All these answers are great and provide amazing insights into a career in Software testing. Just something to research and think about is, software testing is becoming the responsibility of software developers in more and more companies. A lot of companies are eliminating this role (specifically application testing) and tasking software developers with manual and automation testing. Having said that, there will always be some roles in testing that won't be eliminated. My advise would be to do a little more research on the future of software testing and wish you all the best!

Thanks Nikita! Your information on what's happening right now with software testing is really helpful and good to know. I'll keep it in mind as I learn more. Kathy M.

1
100% of 1 Students
Updated Translate

Don’s Answer

Hi Kathy! Software testing is fun and rewarding profession. As others have said, the industry is changing and moving from what used to be primarily manual testing to engineers creating automated tests that can be run continuously, thousand or millions of times per day. There will always be a place for people to manually test software. That said, having a solid understanding/background of programming or scripting languages will be a huge help. Learning HTML, CSS and JavaScript is a great start. You can also look into scripting languages like Python, PERL or PHP. These are less structured than Java or C# programing languages and can really help speed up the testing process. Understanding SQL databases and the ability to do basic SQL queries would also be a help.

A tester and and software developer need similar soft skills. They need to be organized, methodical and they need the ability to think through scenarios to identify where problems (bugs) might exist. Generally QA engineers are better at that last one, that's why they find so many bugs ;)

To answer your specific questions...

Q: The team is looking for a test engineer that can help ensure the team produces quality deliveries. The services that this team creates will be in a microservice architecture, running in Kubernetes on AWS.
A: Think of a service as a small computer program that does something specific, like sending an email. A service can be setup to start when your computer starts and will run in the background performing its general task. For example, whenever your application needs to send an email, instead of the application doing it directly, the application would hand the email to the email service to perform the work. This keeps the main application from having to do too many things that could end up slowing down that main application.

AWS stands for "Amazon Web Services" and Kubernetes is a platform that helps manage things running in AWS.

Q: The services will handle millions of REST calls per day. The service work will be primarily greenfield (created from the ground-up). The project management style is Agile, with elements of both Kanban and Scrum.
A: "REST calls" are a type of API (Application Programming Interface). Most computer programs have APIs. An API allows computers to talk with each other instead of having to go through the application user interface (UI). For example, if I want to create an account on Career Village for 100 people, I can go to the login screen and type in information 100 times or, I can call the Career Village API and create 100 accounts in seconds.

Q: The role of the Test engineer is to perform black box testing of the REST services, with a focus on functional testing. This includes alpha testing, acceptance testing, ad-hoc testing, and back-end validate of databases. The Test engineer will work closely with developers on a daily basis.
A: The Test engineer is going to use tools to manually test that API. The engineer will work with the development team throughout the product to test the APIs from the beginning (alpha phase) through release. The engineer will also validate the data is correct by looking in the database directly.

In short, you would be working on a small computer program that will run as a service. You will be testing that API calls made into the service work correctly and that the information is saved in the database as expected. You will also need to be run scale and performance tests against the service to be sure it can handle millions of requests per day.

Hope this helps!

0
Updated Translate

Harsimran’s Answer

An intermediate-level software testing position usually requires at least three to six years of software testing experience or a combination of experience and education.There are certain skills that are critical if you are considering becoming a software tester. You should have thorough knowledge of several testing tools, be a multi-tasker, and be fluent in Windows, Linux, and/or UNIX as well as command-line and scripting tools. Excellent communication skills are a must, particularly in terms of customer service, product management, operations, and development. You should be able to understand environments or platforms as well as different development methodologies such as Scrum and Agile, and you will need to perform software testing in all phases of the software life cycle. Finally, knowledge of programming languages such as Ruby on Rails, PHP, Python, SQL, C# or C++, JavaScript, and Java is important for success in this career.

Thanks Harsimran! I appreciate your detailed list of skills someone would need for software testing, that helps paint a complete picture. Many thanks. Kathy M.

0
Updated Translate

Faten’s Answer

Testing is a crucial part for the success of a delivery. It is an integral part of the SDLC (software development life cycle) whether you are working in Agile or Waterfall.

Your role is to guarantee that the application (web, mobile, API ...) behaves exactly as written in the requirements. Purpose is to write tests that will run automatically and in case of success, delivery can be done automatically too (aka CI/CD).

0
Updated Translate

Shak’s Answer

Software test engineers test products and features. A good start is understanding the platform you are testing. Read a bit about it so you know what to test and how to test. Youtube videos are the best. Also learning the database engine and understanding how all that works. This will help in performance tests which is very important. Read about security and learn how to test security.

0