This course will be retired on July 14, 2025.
Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Well done!
You have completed Unit Testing in C#!
You have completed Unit Testing in C#!
Preview
Unit testing is just one of the many types of testing we can do to ensure software quality. Let's consider some of the other types of testing we might want to do as well.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
I don't want to overwhelm you, but
0:00
we've only scratched the surface
on the world of testing.
0:02
In fact, you can make a whole
career out of testing software.
0:05
Before we wrap up this course, let's
spend a few minutes talking about some of
0:09
the other types of testing you're
likely to come across at some point.
0:13
Let's say you complete the unit test and
everything passes, and
0:18
you have 100% decision and, line coverage
and you've had everything peer reviewed.
0:21
Can you say that the software
will work perfectly, well no.
0:27
There may still be issues in
the way the units are integrated.
0:32
For example,
0:35
if a method is called with bad parameters
that causes an unhandled exception.
0:36
There are many levels of
testing that can be done.
0:42
Testing that two units work
when used together is called
0:44
Unit Integration Testing.
0:48
After a software component is complete,
0:50
we can test to make sure that it works
in conjunction with other components.
0:53
This is called
Component Integration Testing.
0:57
The same tools we use for unit testing
can also be used for Unit Integration and
1:00
Component Integration Testing.
1:05
If you're developing just
one part of a larger system,
1:07
a web service that is consumed by
another application for example.
1:11
You need to test that the web service and
the application work correctly together.
1:14
This is known as
System Integration Testing.
1:19
It could be that the code is
written exactly as designed but
1:23
perhaps the design was imperfect.
1:26
For example perhaps the completed software
doesn't work the way the customer or
1:28
person using the software expects.
1:33
Ensuring this requires doing
to Acceptance Testing.
1:35
Another way to ensure that software
works as expected by the consumer,
1:38
is by doing Agile Software development.
1:42
You'll find a link to a great course
on Agile Software development
1:46
in the teacher's notes of this video.
1:49
Acceptance testing is often
done on the functional level.
1:52
And so,
it can also be called functional testing.
1:55
Functional tests test that the software
functions correctly at a high level.
1:59
If the software is meant to be used
directly by a human, then usability
2:03
testing can be done to ensure that
people can efficiently navigate and
2:07
use the user interface.
2:11
Specific usability testing
is Accessibility Testing and
2:13
Localization Testing.
2:17
Accessibility Testing checks
to make sure that people with
2:19
physical impairments can
still use the software.
2:22
Localization Testing checks to make
sure that the software is usable
2:25
in the various regions of the world
where it's meant to be used.
2:29
Perhaps the software doesn't run fast
enough, or it might use too much memory or
2:33
other resources.
2:37
Evaluating this can be done
through Performance Testing.
2:39
Does the software underperform or fail
under certain conditions such as having
2:42
a large influx of data,
or low network bandwidth?
2:47
Testing for
this is called Reliability Testing.
2:51
This is often done with low tests
that simulate such scenarios.
2:54
Performance or reliability issues may
require the software to be redesigned from
2:58
the ground up.
3:03
So, identifying these
issues early is paramount,
3:04
this testing can be done at all levels.
3:07
It's also something that agile software
development practices can help with.
3:09
Security Testing ensures that the software
is impervious to both accidental and
3:14
malicious attacks that threaten
the stability of the software or
3:19
the integrity of the data that it manages.
3:22
Security Testing is also something
that can be done at all levels.
3:25
Finally if the software is one piece
of a larger system it can be important
3:29
to test the how the software performs
when part of the system fails.
3:34
This is called Failure Testing.
3:38
In Failure Testing we study how
the system acts under failure conditions.
3:40
This often requires purposefully
attempting to break the system
3:45
by disabling parts of it.
3:49
Failure Testing is especially important
in large systems that need to have
3:50
guarantees of reliability.
3:54
We've seen in this course how
unit tests can build quality
3:57
into the software early in the process.
4:00
While it's easy to automate and
regressively run unit tests,
4:02
the rest of these types of tests
are not so easy to automate.
4:06
The goal is always to do as much unit
testing as possible in order to catch bugs
4:09
early so they don't appear
in other types of testing.
4:14
Still, I can't overestimate the importance
of these other types of testing.
4:18
Unit testing can't catch
all potential issues, so
4:23
it's important not to overlook
these other types of testing.
4:26
Of course this all depends on
the level of acceptable risk and
4:29
individual circumstances.
4:33
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up