You are on page 1of 2

Apple AiC Summer 2020 Workshop

Testing

What is Software Testing?

Software testing is the process of evaluating the functionality and quality of an


application. The purpose of testing is to determine whether software meets specified
requirements, to identify defects, and to ensure that the product works for the end user.

Manual Testing vs Automated Testing

Manual Testing happens when you test an application by hand. You use your
application like a user would and look for any bugs and look through.

Automated Testing is a form of testing that utilizes existing software tools to


automatically test software.

Testing Approaches

Black Box Testing is when test your application without knowing anything about how
it’s built. The system is like a ‘black box’ where you put stuff into the box and then
something comes out of the box. However, you can’t see inside the box; you don’t know
what’s happening to create the output. You just know whether the output is correct or
incorrect.

White Box Testing, also know as glass box testing, is when you know exactly how the
code works and every line that was written. You know what happens at every step in the
code, not just the inputs and outputs.

Grey Box Testing is the combination of black box and white box testing. In this
scenario, you might know how some or most of the code works, but there are some
places you don’t have full access to.

Unit Testing

Unit Testing is the process of testing each module(unit) to make sure it functions
properly. One common way to use this type of testing is to take a function you wrote,
pass in parameters and check to see if the return is what was expected. There are
many unit testing libraries for all coding languages. In the resources section, I’ve linked
a few to help you get started with unit testing.

Other Levels of Testing


Integration Testing is the process of checking the connectivity between different unit
tested modules and ensuring that they work together properly.
End to End Testing is a form of black box testing where you test the full integrated
application as a set of inputs and outputs.

Resources

In-depth article about testing: https://www.softwaretestingmaterial.com/software-testing/


Java unit testing docs (JUnit 5): https://junit.org/junit5/docs/current/user-guide/
Python testing docs (pytest): https://docs.pytest.org/en/stable/#
Xcode testing docs (XCTest): https://developer.apple.com/documentation/xctest

You might also like