Monday, March 15, 2010


As user's run-time needs keeps on increasing, it becomes imperative to design effective models where multiple concurrent tasks can be successfully accomplished. One set of possibilities already exists in terms of creating multiple processes running at the same time. Withn 1 process, multiple threads are used to used to devise parallelism. This phenomenon is highly applied in case of network processors. One good link:

As previous posts have already emphasized on these concepts, today's post focusses on testing multithreaded applications.

Reference for this post is:
Object-Oriented Multithreading Using C++ by Cameron Hughes and Tracey Highes

 2 important testing guidelines shared by them:
 -Don't wait until a software system gets complex before testing it
 -Categorize the types of defects to which the software is subject

Unit Testing - Requires that SW be tested one component or unit at a time

Stress Testing - Designed to push a component or a system up to and sometimes beyond its limits

Integration Testing - Used to test the assembly of components. The components are combined into logical groups, and each group is tested as a unit

Regression Testing - Used to retest modules that have changed.Regression tests ensure that the changes to the component do not cause it to lose any functionality

Operational Testing - Used to test the system in its full operation. The operation tests also serve to determine how the component will behave in a totally foreign environment.

Specification Testing - The component is audited against the original specification, used as part of the software verification process.

Acceptance Testing - Used by the end user of the module, component or system to determine performance.

Lets also try to understand several typical categories of software defects that are specific to programs that contain multithreading, concurrency, parallelism or asynchronous process:

Race Condition - Occurs when two or more threads or processes are attempting to modify the same block of shared modifiable data simultaneously.

Deadlock - A thread or process is waiting for an event that will not occur.

Priority Inversion - Occurs when a lower priority thread blocks the execution of a higher priority thread when synchronization variables are being used or when competing for resources.

Performance Degradation - Occurs when a system's performance lowers or degrades in terms of responsiveness, execution time, calculation of results, and so on.

Indefinite Postponement - Occure when a system indefinitely delays the scheduling of processes or threads while other processes or threads receive the attention and the allocation of resources.

Mutex Exhaustion - Occurs when a system has reached its maximum number of mutexes that can be created.

Thread Exhaustion - Occurs when a system has reached its maximum number of threads that can be allocated.


I scored pretty bad  in the first!

1 comment:

Anonymous said...

You may not be aware of the endless stream of invisible threats you expose yourself to every time you log on to the Internet. In order to combat these dangers you really should have a quality anti-virus, anti-spyware and firewall installed on your system. There are hundreds of new malicious threats created daily designed to infect your machine, steal your personal information, corrupt your files and generally cause great harm to you and your computer.
There are also [url=] keyloggers [/url] to steal your personal information.
Viruses and spyware are also used to steal personal information from you such as your address, phone number, social security number and your mother’s maiden name. This information can be used for anything from stealing your money, applying for a loan, or using your details for forging fake passports and other important documents. When the crime is detected by the authorities it is linked back to you.
For those on a low budget there are various free anti-virus and anti-spyware programs available that do a decent job of protecting you. However, if you can spare some money, it is strongly advisable that you purchase a quality Internet security package, which includes a whole array of defences to keep you adequately secure. You generally get an anti-virus, anti-spyware, firewall, identity protection, email protection, parental controls which protects you and your family from all the major threats.
Finding [url=] keyloggers [/url] on your computer is next to impossible unless you have professional help in the form of an updated spyware removal software system. The real problem is that if you don't know that a keylogger is tracking everything you do then you won't know when the little darlin' has stolen your bank account passwords or your credit card numbers until a theft of your assets has been attempted. And the discovery may only be made by you after your assets have been raided and depleted.