Testing Demo
Testing is probably one of the most overlooked technique in the programming world.
Traditionally in the software development industry we had a clear separation between "programmers" or "coders" or "software engineers" on one hand and "qa people" who would do the Quality Assurance of the product.
Traditionally the company and thus the programmers relied on the QA people to find the bugs and to ensure high quality.
This approach breaks down for a variety of reasons in a number of cases.
Fast-paced development with frequent releases - CI/CD Continuous Integration / Continuous Delivery
In the age of fast-paced development when the release cycles aren't measured in months and not even in days, but in hours or minutes, there is no time for a separate, manual QA process. You must automate the testing and verification process.
Academia
If you are a student you don't have the luxury of having a people do QA for you. In fact you might be the person doing manual QA for the projects of your professor. I teach Python programming to biology and in general life-sciences students. Some of them will end up writing lots of software to support the research and thesis. The don't have a separate QA department that would check the applications they wrote. They have to do it themselves.
Open Source
Most of the Open Source developers work on their project in their spare time. They don't have any means to pay someone to do quality assurance for them. They are also not very interested in doing QA themselves nor they want to fix the same bug twice. So Open Source developers tend to write a lot of automated tests. Certainly a lot more than in a corporation. This is true even for the same person in the two different situations. I know a number of people who write lots of tests for their Open Source projects, but almost none at work.