Software testing

3 tips for beginners

Software testing – 3 tips for beginners



23.12.2020

When talking about web or mobile application development, you cannot miss the importance of software testing. One does not only deploy new functionality before testing it thoroughly. Don’t trust developers (even if they are engineers). There is ALWAYS something to fix or to improve.

It is not uncommon for software developers to write code without checking if it works. And that’s where you, as a software tester, come into play. You have to make sure the clients receive the best quality product and most of all – a working one. No one wants a site that breaks down after three clicks.

This article focuses mainly on functional tests. Security testing is a whole other story so stay tuned for the next blog posts on our site.

But enough with the intro, let’s get to the fun part. What is software testing?

What is software testing?

If you ask software developers, “what does a tester do?” without a doubt, they’ll tell you “nitpicks and retracts tasks.” If you should ask them “why,” you’ll hear “to be a pain in the butt.”

Is that true? Are software testers just people who complain about the sake of complaining and shift back the progress?

On the contrary – if there were no testers, developers would go in circles trying to put out new applications while simultaneously fixing never-ending bugs and loose ends they neglected before the testing.

Testers have to be strict with their rules of what defines a ready for a production application. They cannot just believe that something “cannot be done” or “too complicated to do.”

Having said that – as a tester, you have to find the balance between sound quality and getting the job done before the deadline. You cannot keep re-tracking tasks just because their execution doesn’t suit your personal view. You have to decide where to draw the line and accept the job that might not be perfect but is functional and efficient.

There are three primary types of testing: automated, semi-automated, and manual.

Manual tests

Let’s start with manual testing. As the name suggests, it requires a person who manually clicks through an application and tests its functionalities, inputs, etc. It requires the least programming knowledge, if not none, and can be done by basically anyone who has the patience and an open mind for testing.

Pros of manual testing are that you can catch bugs that come up during the user’s experience that would often be hard to find with an automated system. It is an excellent method to use as a first step when testing new software. The results can be used in semi-automated and automated tests.

One big con of manual testing is that it takes a lot of time and is prone to human error. Tell me, how many times can you fill the same registration form without going nuts? That’s where semi-automated and automated testing comes into play.

Semi-automated tests

Semi-automated testing is, for me, the best of both worlds. It gives you tools to automate many time-consuming processes that you would have to do manually otherwise but is still supervised by you. That means that you review the results and decide what to do with them. It can also tell you how the system works when it is overloaded with information. You still have to keep an eye on the tests, but a great deal of work is done for you automatically. You can come up with new scenarios for tests because you have two views on the software – user’s experience and a lot of statistical data gathered from automated tests.

Automated tests

Automated testing is by far the most complex method of all the three listed above. The whole process is scripted, and after the tests are run, the outcome from the actual tests is compared with an expected result. Automated tests can be run in a loop, periodically or continuously. They are really helpful before the deployment. Automated tests that are run before the deployment of a particular functionality can decrease the risk of the system failing after deploying a new feature. Of course, not every test can be fully automated. Some of the functionalities have to be tested manually, and that’s where, once again, semi-automated tests come in handy.

The table below is a quick comparison of the three methods focusing on their primary characteristics.

Table with manual automated tests

Obviously, there are also other ways to divide types of testing, such as unit tests (Adam wrote here about them), integration tests, etc. but let’s focus on basics.

Black box and white box testing

You have to know two other terms at the beginning of your testing journey: “black box testing” and “white box testing.”

Black box testing occurs when you have no idea how the software you are testing works. You haven’t looked into the code; you don’t know what functionalities are implemented. It is your job to find out how the site works and what its vulnerabilities are.

White box testing is the opposite of black-box testing. You have all the resources you might need to profoundly understand the code and know all connections between components, micro-services (more on that here), and other functionalities.

What are the pros and cons of the black box and white box testing? You’ll find out in my next posts.

My top 3 tips for software testing

Regardless of what kind of tests you plan on conducting, there are a few tips applicable to all of them. Here they are.

1. Make reports

As a beginner, you can often forget to or deliberately choose not to make reports. If it’s just a little bug fix, you don’t need a piece of information from the test, huh? I’m deeply sorry, but that’s not true. You always have to make reports. They don’t have to be five pages long and contain every detail from the model of your keyboard to the number of cores in your processor, but you have to summarize your work after each one of your tests. Here are the essential points to include in a report:

  • the chosen method of testing (was it manual, automated, using a testing tool, etc.)
  • used scenarios (in my next blog post, I’m going to tell you how to write a good testing scenario)
  • input data used in tests
  • results

2. Take your time

Sometimes a task looks as if somebody can test it in five minutes. Well, everything can be done in five minutes, but with what quality?

It is often that the “easiest” tests require the most thinking. You have to be creative, come up with ways a future user could mess up given functionality. So make yourself a cup of coffee, sit back, and start thinking. Don’t rush yourself – that’s the developers’ job 😉

3. Use your user’s experience

This tip is correlated with the second one. It is an essential thing in testing if you ask me. Put yourself in a target user’s shoes and think about how you would use a website or an app you’re testing. What are your habits? What are your friends’ and family traditions? How do you usually use a product similar to the one you are testing? Think about the devices it will be installed or displayed on.

Keep reminding yourself to keep a “fool’s perspective” so that the software you’ll put into production will be foolproof.

Introduction to software testing – key takeaways

Summing up – if you are thinking about becoming a software tester, definitely give it a try. It will provide you with a well-rounded image of the software development process. If you are planning on being an automated tester and want to write code – there is plenty of work and opportunities for you to develop your programming skills.

On the other hand – if you have no clue about programming and have no desire to learn how to do it – you will also be a valuable asset to the team because of your different perspective.

Being an automated and manual tester can teach you a lot. You have to cooperate with practically everyone on the team, giving you a broad spectrum of knowledge – from the business point of view to the back-end programming side of things.

More about software testing is coming soon.

If you have any questions, leave them in the comment section below.

Thanks for reading.

Author

Emilia Nowacka

Emilia is a Python programmer specializing in software testing. Her academic work focuses on machine learning and neural networks. In her free time, she trains for half-marathons and enjoys reading XVIII and XIX century literature.

Leave a Reply

Your email address will not be published. Required fields are marked *


 

Newsletter