The process of ideating-planning-prototyping-testing in cycles is called iterative design.
Constantly confronting the idea and prototype of a product with real life users can expose flaws and issues early before production and lead to a better product and save money and resources.
Iteration can be applied to the whole product (eg: a website ) or to specific part of a product ( eg: upload process of an app ).
Brainstorming and planning a product or a feature before building the prototype.
Prototyping is the simulation of the real product. Allows the company to show a close-to-real product without the costs ( money / time ) of developing it. It is a draft so it can be easily changed and edited.
Testing is the process of showing the prototype to real life users and make them play wit it ( or with some specific parts of it ) in order to observe user behaviour and product functionality, spotting flaws and issue, spotting
opportunities , gathering data.
Gathering, understanding and evaluating data and observations pulled out from user testing. If the test has not been satisfactory or exposed issues and opportunities, a new cycle must be run before the release, starting from a new prototype.
If the user testing has been satisfactory, the product ( or its specific tested part ) can be released to the public.
The linear representation of the process gives an easier understanding of the stages, but this is an ongoing, flexible and non linear process, where stages can be run at different pace and in different phases, and where data and informations can be gathered throughout the entire process.