How do you emphasize testing your own software?

I've worked on the app myself and I'm at a stage where everything works great - as long as the user does whatever he or she has to do. :-) The software needs more testing to understand how solid it is, how strong it is works when people do things like hit the same button once, try to open the wrong type of files, put data in the wrong places, etc.

I have a little problem with this because it's a little hard for me to think in terms of misusing the app. These are all edge cases for me. However, I would like the application to be as stable and well tested as possible before I start giving it to beta testers. Assuming I'm not talking about hiring professional testers at this point, I'm curious if you have any advice or systematic ways of thinking about this task.

Thanks as always.

+2


source to share


3 answers


Well it looks like you are talking about two different things "Testing the functionality of your application" and "Stress testing" (that's the title of your question)

Stress testing is when you have a website and you want to test that it can serve 100,000 people at the same time. Observing how your application is performing under stress. You can do this in a number of ways, such as by recording some actions and then getting multiple agent agents to access your application at the same time.

These questions are more like quality assurance. This requires testers / beta testers. But there are things you can do yourself to test your application as best you can.



Testing your code is a good start to help you find these edge cases. If your method accepts things like ints then try going to int.max, int.min and see what happens. Pass zeros to everything. If you are using .Net you can look at PEX, it will go through all branches / codecs that your application has. This can help you refine your unit tests to test your application as best as possible.

Integration tests, see what happens end-to-end for some of your usual stuff. This will help you "find bugs" as you develop later.

Here are some tips on what you can do yourself to try and find edge cases that you may have missed. But yes, in the end you will need to transfer your application to someone else to test. Just make sure you cover as much as you can before it hits them :-)

+2


source


Make sure you have sufficient code coverage in your unit tests and integration tests.

Use appropriate UI validation and test combinations that might break it.



I've found that a well thought out application that reduces the number of possible permutations in the UI (the way the user can break it) helps a lot. Design templates like MVC can be especially helpful in this regard as they make your UI veneer as thin as possible.

0


source


Automation.

(Re) Mark your code so that another program can call custom events on it. Create simple custom event scripts and replay them back into your program. Capture events from beta users and save them as test scripts (useful for reproducing problems and checking regressions). Write a fuzz-tester that applies small random changes to scripts and try them against your program.

With this kind of automation, you can highlight and apply and find glaring issues like caches and memory leaks. It will not check the actual functionality. For functionality, unit tests can be helpful. There are a ton of unit testing modules out there to try. Pick something useful, learn how to write good tests, and integrate them into your build process.

0


source







All Articles