Posted in Software Engineering, Technology
Thursday, March 30, 2006
Performance testing, or load testing, investigates how well your software system performs under load. Your software may behave differently when there is one user and when there are fifty simultaneous users. I am loath to admit that I worked on a system that locked up when there were five simultaneous users. Hey, it wasn’t my design!
The point is that some errors only manifest themselves when a load is applied to the system. This testing finds things such as deadlock, memory leaks and invalid use of such things as shared memory, semaphores and threads. Any change that could adversely affect performance should be tested.
This week of testing topics continues tomorrow with my discussion of operational validation testing. Don’t miss it!
Posted in Software Engineering, Technology
Wednesday, March 29, 2006
Verification testing, or requirements testing, is testing to make sure the software meets the project’s requirements. This testing is usually done by a third party, i.e. not the developer. Many companies have a dedicated test team for this function.
If you work with an independent tester, be sure to make them a part of the project from the being. This includes design meetings. Their job is to look at the requirements and figure out how to test them. Take the time to explain your design and development to your test engineer. Do not focus so much on the coding that you neglect your team.
Speaking of requirements, the only hurricanes New Orleans requires are the mixed drinks. Don’t ya think?
Tomorrow I plan to discuss performance testing.
Posted in Software Engineering, Technology
Tuesday, March 28, 2006
Integration testing, or end-to-end testing, tests how well software components integrate. For large projects there may be several different components that are written by different people or even teams. There is a potential for a breakdown in communcation. For example one component may feed another component by placing a value on a database table.
While unit testing is focused on source code modules, integration testing is concerned about the system as a whole. In this testing data may be fed into the system to watch how it behaves when it reaches your source code and, in turn, how your code affects other components.
It is important to understand the system architecture as whole. Write a formal plan that describes two things: 1) what you plan to test and 2) what you expect the results to be. Document any results that differ from your expected results. They should either be fixed or explained.
Holy Batcars! Don’t miss tomorrow’s blog entry when I will discuss verification testing. Boffo!
Posted in Software Engineering, Technology
Monday, March 27, 2006

Unit testing is what software developers do to check each source code module and its methods. This testing checks invalid values being passed in parameters, makes sure errors and exceptions are handled correctly and ensures code cleans up after itself.
The closest I came to learning testing in college was unit testing. Of course I did not take a disciplined approach back then. No unit test plan was written, results were not captured and defects were not documented. Some may argue that documentation is boring and useless. But I have come in after unit testing and taken over projects in my career. Believe me you can have more confidence in the testing if the developers have a disciplined mind and take the time to document their unit testing.
Come back tomorrow when I will discuss integration testing. The bunny knows where you live.
Posted in Software Engineering, Technology
Sunday, March 26, 2006
This coming weeking I plan to discuss various topics in software testing. Today I am going to cover the fundamentals. Unfortunately, I do not recall formal testing being taught in college. My experience has come from on-the-job lessons learned.
To start with you should have at least three classes of servers. Your company and budget may be small. In that case the development and staging server could potentially share the same box.
TYPES OF SERVERS
- Development Servers
- Staging Servers
- Production Servers
A development server is a server on which code is developed. Once development is completed, then it is installed on a staging server. A staging server should match the production server as closely as possible. This includes, the same version of operating system, the same software and the same configuration. The staging server is your last chance to discuss bugs before it hits the production server. The production server is the server that runs your code live. It is what your customer uses.
By seperating the servers in this way you can test on the staging server and develop on the development server. This is particularly useful if the test takes a long time. The developers can start working on bug fixes even before all of the tests complete.
Stayed tuned for tomorrow’s topic: Unit Testing
Posted in Software Engineering, Technology
Saturday, March 25, 2006
There is an interesting project that aims to be the google of freely available source code. I have high hopes for krugle. It is a search engine that is smart about how source code is organized. Instead of just treating code just like lines of text, krugle organizes it into projects and displays it with syntax highlighting. Right now the site is in closed beta. I cannot wait to try it live.
Microsoft Research scientists say that schools and colleges are not training the next generation of scientists with the necessary computer skills. Hey Microsoft, how about you give us the next version of the Windows operating system before you judge? The last Microsoft Windows release was Windows XP in 2001! Computer journalists initially forecasted the next version in 2003. But after a redesign, streamlining planned features and a recent restructuring, we can look forward to seeing Windows Vista sometime next year.
Posted in Software Engineering, Technology
Friday, March 24, 2006
One of my first tasks when I joined the staff of the U.S. District Court was to write a disaster recovery plan for the IT department. While everyone knows the importance of backups (right? RIGHT?), not everybody considers the importance of establishing offsite backups.
Offsite backups are critical for disaster recovery. You will need them in the event a disaster causes physical damage to your computers.
Things have changed since I wrote that first disaster recovery plan. Nowadays renting space on a managed Internet server is cheaper than tape backups. Take a look at file hosting providers and online backup and recovery services.