Core Values
History
Resumes
Contact
 
Fixed Price Software and Systems Development
System/Module Testing
Consulting Strategy
Why hire us?
email
more...
 
Nobody knows how to break it like the people who make it.

Over the past 20 years of embedded systems and real-time control software contracting, MicroTools has learned the value of testing. We have learned how to do it very well. We've also encountered and corrected a lot of bad development and testing practices: those of our own and those of our customers.

Here's a collection of some of the lessons we've learned and a description of the MicroTools services available to you that let you apply these lessons.


 
Testing should be part of the development process from specification to maintenance.

Specification Phase:

One mark of a good product specification and/or software specification is that every requirement is testable and everything that should be tested should be listed as a requirement. In fact, the first draft of the test plan can and should be written alongside the specification. (The first draft of the user manual can and should be written at this time as well. It is a crucial part of the testing.)

MicroTools can help you make sure your specification/s is/are test ready by translating the specification/s and user documentation into a test plan. MicroTools can also help you in not getting bogged down during the specification phase with issues which are really design questions subject to prototyping and feasibility testing that should be reserved to the next phase.

Design Phase:

The design plan needs to be firmly rooted in reality. How is this done? You bet - testing. This is the time to reduce your risk. Can your specification be met with today's technologies? Will it be fast enough? Strong enough? Can it handle the capacity needed? Will the tool-sets you plan to use work together? It is far less expensive and embarrassing to learn now that the answer to these questions is no.

As areas of risk are identified, the final test plan is modified to put more pressure on those areas.

MicroTools can help you build prototypes, utilities and benchmarking tools to test the assumptions of your design. MicroTools can also help you plan your coding strategy, recommending areas of particular risk that should be coded first so as to reduce their potential impact.

Coding Phase:

Testing should be done throughout coding. This includes module testing, iterative testing of features as portions of the product are completed and code reviews at major milestones.

Again, as areas of risk are identified, the final test plan is modified to put more pressure on those areas.

We completely agree with the Extreme Programming principle that all modules should be unit tested. But is anyone doing it?

We are developers ourselves and we can complete all these tasks for you. Our experience in real-time embedded systems will be of particular benefit to your project during code reviews.

Testing Phase:

Hopefully, we've convinced you that every phase is the testing phase. Still, there is no avoiding the need for the conventional "final" test.

Here, MicroTools brings together the best of industry standards; your company's quality assurance process and documentation; and our creativity and tools. MicroTools works with companies with all different quality assurance philosophies, from Six Sigma to completely in-house standards. We will test every aspect of your product: Unit Testing, Integration Testing, System Testing, Performance Testing, Acceptance Testing, Documentation Testing…even the packaging, web site and shipment methods, if you would like. We use the test plans we developed in the specification phase as well as creatively (deviously) beating on the product to find problems. We use both black box and white box methods to shake the problems loose. We use testing tools we have developed in-house like Poc-it and Key Commander. We also use your company's problem tracking system rather than pushing you to change to ours.

Maintenance Phase:

Once the product is in the field, when problems arise, it is critical to be able to reproduce and isolate a problem in the field. Our automated testing tools as well as the White Box methods available to us as developers can be very effective in this process. Often times, our customers prefer to stay out of maintenance altogether and rely on us to interface with dealers, distributors or even customers directly to find and solve problems.

We can provide you a fixed price proposal to perform any or all of these functions.


 
There are always more bugs!

Imperfection is the rule. Modern electrical software systems are so complex that it is impossible to design or test out every problem. Current industry estimates state that tested and released software averages more than 10 significant bugs per 1000 lines of code. Modern systems consist of hundreds of thousands of lines of code. So, the testing effort should be driven by finding as many problems as possible. It should not be considered an effort to ratify the soundness of the product.

As a result, we don't believe that you can consider a testing effort done if at the end of a test plan you are still finding bugs at anywhere near the rate you were finding them throughout the rest of the process. The rate of discovery must decline significantly. Even then you won't know that your product is error free..IT'S NOT! Instead, you will have a high level of confidence that your customers will not encounter significant issues in the field.

With many consulting companies, this would turn into an endless time and materials project. Not so with MicroTools. Instead, we do all our development work (including testing) on a Fixed Price contract basis. So, you know what you are getting into from the start.


 
Testing requires an understanding of your market.

MicroTools' strategy is to develop long term relationships with companies who develop embedded real-time software so that we can meet your overflow software development and testing needs quickly and efficiently. We learn your core business:

  • The Technical Challenges/Solutions of your Product Line
  • Your Customers
  • The Tools
  • Your Software Procedures
  • The People

You learn our skills and limitations so that you can effectively utilize us. Our engineers work as an integral part of your team, not as outsiders.

Our strategy involves doing development work as fixed price contracts. This forces a level of discipline on both of us up front. You, the customer, know what you are getting, when and for how much. This method of doing business has proven invaluable to our customers and to us.

This is a proven strategy as shown by our long term relationships with our current customers.


 
Why Use Linux for Real Time Embedded Systems
Guidelines for Creating Robust Embedded Systems: Part 1 - Introduction
How to Select a Real-Time Embedded Systems Consultant
How to Grow Your Software Engineering Department
How to write a software requirements specification
How to Write a Software Process Procedures and Policy Manual
Principles of Software Driven User Interface Design for Business and Industrial Applications
If it's not tested, it doesn't work!
more...
Click here...