Other Types of Testing4:35 with Jeremy McLain
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.
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 up