MVP (minimal viable product) for tests or tests for MVPs

Diogo Munaro Vieira
3 min readJun 30, 2018

--

What’s MVP?

MVP definition is Minimal Viable Product and it’s basically a simple way to test your new product without really make this product. You can read more about StartUps and MVPs in my post at my new post.

MVPs are common in StartUps, because they are testing something new, but it’s applicable for big companies too when they are trying to launch a new feature or improve UX (user experience) for a product. Here is a video that shows it better:

Let you as an entrepreneurship in your startup and you really don’t know if your product will be accepted or people will like it. So, you can do your MVP (a simple web page or a YouTube video, etc). Doing it, you can receive feedbacks and improve your MVP. This is the point… Improve your MVP…

Now you just have a simple system that users can use basic functions and you want to know if users are using and if they aren’t getting in trouble with some feature. With these feedbacks your system is growing… But when should I test my MVP?

Tests for MVP. Make your judgment…

Here the question should be: “When is it not a PoC yet?”. You need to realize when your software is with enough users and need automated tests, and if do you need just testing features as a PoC (proof of concept) that users should never use.

Prove your hypothesis with PoCs for a controlled number of users, like 0.1% of your user base without automated tests and release later the best PoC as an MVP with all tests for all users.

More conservative programmers will hate me for that opinion, but when you are innovating, as much time you spend with bad ideas as much you lost time with new great ideas, because every new idea will fail, at least in one feature. Make your choice! It can determine a lot of things…

I don’t have a PoC anymore! Help me to test my MPV!!

Congrats! Your idea, and you software now are growing and you really need tests. Now you should decide better tests for your software and perhaps use TDD (Test Driven Development). Here is a list of popular test types and a summarized description:

  • Unit Tests: Test each fragment of your code. E.g.: test each function individually.
  • Integration Tests: Test integration between parts of your code. E.g.: if a module works with another.
  • System Tests: Test your entire code usability. E.g.: if your entire new feature works as expected.
  • Interface Tests: Test your user interface. E.g.: if your interface isn’t with bugs to user.
  • Differential Tests: Test if a feature is better than older version of this feature. E.g.: if a feature is faster then older.
  • Stress Tests: Test if part or all code is stable. E.g.: how many requests a server support.
  • Random Tests: Test with random inputs part of the code. E.g.: try a lot of random inputs in a function.

Python have some libraries that help with these tests: unittest2, nose, pytest. With then you can apply these tests and later can use coverage to determine how many of your code is already tested.

There are a lot of coverage types, and you can learn more about tests and coverage in this amazing Free Course.

--

--

Diogo Munaro Vieira

Ph.D Student at PUC Rio, Head of AI at PicPay and Co-Founder at Data Bootcamp