Review: Software Testing Specialization with University of Minnesota
QA Engineering is a great career path to break into tech, but there are not many programs available to learn the skills. We're on a mission to help you get a job, so are combing the interwebs for the best and most affordable programs. One that came up frequently in our search is The University of Minnesota's Software Testing and Automation Specialization, which says it will prepare users for a career in QA. The program is hosted by Coursera, and consists of 4 courses with a recommended 4 weeks of work each. This nets a total of 16 weeks, or 4 months for program completion.
The four courses to complete the specialization are:
- Introduction to Software Testing
- Black-box and White-box Testing
- Introduction to Automated Analysis
- Web and Mobile Testing with Selenium
The material is taught by real industry professionals and covers both the high-level and practical aspects of the software testing, including modules specifically for white-box, black-box, and mobile app testing.
While the principles were great, we wanted to call out that this is NOT a beginner-level specialization. The program has self-reported to be for "Intermediate" programmers, but after our research we found this was quite an advanced certification. Programs on Coursera definitely under-rank their difficulty, and we found this to be no exception.
If you're looking for a quick course to study if you like the QA-engineering field, jump down to our alternative course recommendations for something that may be more tailored to your skillsets.
We’ve recapped the learning objectives from each week to set your expectations for course material. The great part about this program is that you can jump to any course, and any section if it’s interesting to you. For example, if you’re only looking for mobile application testing, head over to course 4, week 4. However, you only can get the certificate if you complete all 16 weeks of content.
To audit an individual week-- find the exact course (we've linked them individually here) and click "audit" to save it to your profile. Then open the desired week on the side panel.
Learning Objectives from Week 1: Course Intro
- Learn the goals of software testing, including the strengths and weaknesses, the pitfalls, and development cycles
- Identify the key components of a software test and their purposes
- Practice creating some unit tests for java in jUnit
Learning Objectives from Week 2: Testing Foundations
- Interpret test results to determine systemic classes of errors and practice utilizing the info to focus your testing process
- Learn the "what, where, when how and why" principles of testing
- Relate testing goals at different levels of abstraction: unit, subsystem and system
Learning Objectives from Week 3: Testing into the Software and Development Lifecycle
- Compare test-first and test-last development techniques
- Understand the purpose of a test plan and the different sections of a good one
- Identify root failures from test results, and practice justifying a testing approach based on risk.
Learning Objectives from Week 4: Writing Good Unit Tests
- Practice employing test doubles to support tests, including stubs (for state verification) and mocks (for behavioral modification).
- Create a complete set of unit tests for a small application.
- Understand Flakey (non-repeatable) tests and causes.
- Learn the difference between the roles of a test double object and an implementation class when used for construction.
Learning Objectives from Week 1: Introduction
- Analyze the effect of program structure on testability.
- Learn the difference between reachability and observability using different example programs.
- Assess fault-finding effectiveness of a functional test suite using mutation testing.
- Understand adequacy coverage measures and limitations.
Learning Objectives from Week 2: Black and White-box Techniques
- Contrast the strengths and weaknesses of black-box vs. white-box testing.
- Learn the definitions of statement, branch, decision, and MC/DC coverage and how they relate to coverage criteria and testing methods.
- Study the strengths and weaknesses of partition testing, combinatorial testing and Mutation analysis, including the use of mutation testing to measure the effectiveness of a test suite.
Learning Objectives from Week 3: Requirements-Based Testing
- Evaluate requirement testability and create a test suite that thoroughly exercises requirements.
- Apply behavior-driven development using Cucumber-- and describe its integration of testing and requirements writing
- Practice generating tests using Cucumber's Gherkin language and produce regular expressions for simple example patterns.
Learning Objectives from Week 4: Perform Black-box and White-box Testing with Cucumber
- Create a test suite using Cucumber that implements a set of use cases and provides an effective way to test the system.
- Understand how to integrate Cucumber, JaCoCo, and Pitest into Gradle and how they can be used together to increase the effectiveness of testing.
- Analyze the adequacy of test cases using structural coverage metrics and mutation test suites to identify areas that need improvement.
Learning Objectives from Week 1: Course Introduction
- Defining automated testing and analysis and its role in ensuring the quality of software by automating the execution of tests.
- Examine optimistic and pessimistic analysis examples (optimistic analysis assumes that the software will perform as expected, while pessimistic analysis assumes the opposite).
- Identify and write properties of interest about programs for analysis and express assumptions on the environment.
- Practice using various tools to perform parameterized unit testing while allowing for automated testing of multiple inputs and conditions.
Learning Objectives from Week 2: Automated Test Generation
- Walk through automated test generation as a search, and learn the different approaches to search for tests.
- Emply symbolic execution techniques to exercise rare program paths.
- Apply automated testing on a concrete example with your newfound skills.
Learning Objectives from Week 3: Static Analysis
- Define static analysis and its role in software development.
- Explain approximations and techniques used in static analysis to reason about program behavior.
- Illustrate the use of a practical tool to perform static analysis on an example program and understanding design principles for writing analyzable programs.
Learning Objectives from Week 4: Effective Automated Verification
- Express challenges in regression testing and its importance in ensuring that changes to a software system do not break existing functionality.
- Learn automatic techniques for addressing regression testing challenges, such as regression testing automation, and how they can help improve efficiency and coverage.
- Identify the effectiveness of various automation techniques, such as Fuzz testing and runtime monitoring, in detecting security vulnerabilities and checking properties during program execution.
Learning Objectives from Week 1: Course Intro
- Distinguish between the methods of web and mobile testing.
- Set up Selenium testing framework to test web applications.
Learning Objectives from Week 2: Functional Web Testing
- Learn and utilize key web application concepts, and start using Selenium to run automated tests.
- Break down effective test writing and practice planning to test on a web application.
Learning Objectives from Week 3: Non-Functional Web Testing
- Distinguish between different forms of performance testing and their use cases.
- Utilize the JMeter library to test response time of web applications.
- Understand the OWASP Top 10 web application security risks and determining best techniques to test security.
Learning Objectives from Week 4: Mobile Testing
- Drill into the key differences of testing on mobile vs. desktop.
- Learn and practice using Appium to test mobile applications.
Cost and Auditing
The program is only $49/month, and comes with a Linkedin Certificate on behalf of University of Minnesota. If you complete the curriculum on the proposed timeline, it should take about 5 months. While that seems steep, compared to a degree or bootcamp this micro-certification is a steal!
If you can afford it and know in your heart that QA engineering is for you- we commend you, you specific weirdo– we recommend completing the program and getting the shareable certificate. This will help make your Linkedin more searchable to recruiters who may be looking for specific keywords and programs.
Here’s the real kicker though– to audit the program and simply learn the material, this program is completely free! We recommend auditing the first course (Fundamentals) for those who might be unsure of the QA career path and are curious about the high-level concepts. To audit, simply click "Enroll for Free" and click "Audit" on the bottom of the second step. Voila, you're in!
We'd be remiss to say this program was well reviewed. In fact, reviews for this program were primarily negative-- there were some positive-leaning ratings, but many of the most positive sentiments were several years old. We also noticed the program hid some of their reviews, which truly is never a good sign.
Aggregations of negative review points:
- Automatic grading of test code is ineffective.
- Outdated Java and tools because the course is more than 5 years old.
- Not ideal for beginners, or even intermediates.
... and our favorite overall review:
The course itself is very interesting, but the assignments given are often times buggy and faulty. I advise people who take this course to go through the discussion forum frequently to look for answers instead of trying it out on your own if you hit any errors to not waste your time and effort.
We loved this comprehensive, 10-hour program hosted on Udemy. It focuses on the fundamentals of QA, and how to QA with both manual and automated means. The primary goal of the course is to jumpstart a career in tech, so we're all for that too.
This "bootcamp" is only $40 and includes almost 30 hours of great content. Our favorite segment, and probably the most relevant to QA engineering, was the part on test case & bug report writing. This Udemy class is a best-seller, with more than a hundred-thousand students and a rating of 4.6.
This Udemy course by Academind is extremely highly rated with more than ten thousand students. It covered the same principles as the Minnesota specialization course 1 (fundamentals), but in a much more cohesive way.
Our Favorite QA Courses
Another Coursera QA Engineering Course: Duke's Java Programming and Software Engineering Fundamentals Specialization
Duke was one of the only universities that had a program that touched on software + QA engineering. Duke is a premium university, and the certificate from completion will shine on resumes.
Linkedin Learning is great for learning high-level concepts of lots of roles in one place. If you're still looking for a role that's relevant to you, we recommend exploring several options with a platform like Linkedin. It's free for 7 days, so give it a try!
QA Engineering is a great role to catapult yourself into the tech industry. After doing 2 years of QA, the world is your oyster for engineering and product roles. This is actually one of our favorite roles to recommend for users to break into tech without any hard skills.
Software Testing and Automation at University of Minnesota uses outdated concepts and a frustrating project grader-- leading us to say, may be better off to skip it! We recommend using Linkedin Learning or a vetted Udemy course to get better equipped at the role with more modern concepts.
Here at Bridged we are huge fans of stacking micro-certifications to achieve desired career results. We're building a product to make your career planning fun and affordable, and we'd love to talk to YOU! Was this article helpful? Did you land an interview for a QA engineering role?
Let us know at firstname.lastname@example.org