Common mistakes of Software developers

Introduction:

Most Software developers are not even aware that there favorites methods are problematic. Quite often experts are self thought, hence they tend to have the same bad habit as when they first began, usually because they never witnessed the better ways of performing their embedded systems. These experts then train novices who subsequently acquire the same bad habits. The purpose of this presentation is to improve the awareness to common problems, and to provide a start towards eliminating mistakes and thus creating software that is more reliable and easier to maintain.

It is easy for spending a million on testing a program. Common estimation of the cost of finding and fixing the errors in program range from 40% to 80% of total development cost. Companies don’t spend this kind of money to “verify that a program works”. They spend it because the program doesn’t work, it has bugs and they want them found. No matter what development methodology they follow, their programs still end up with bugs. Beizer’s (1990) review estimation the average number of errors in program released to testing at 1 to 3 bugs per 100 executable statements. There are big differences between programmers, but no one’s work is error-free.

One error per 100 statements is an estimate of public bugs; the ones still left in program after the programmer declares it error-free Beizer (1984) reported his private bug rate, how many mistakes he made in designing and coding a program, as 1.5 errors per executable statement. This includes all mistakes including typing errors.

“At this rate, if your programming language allows one executable statements per lines, you make 150 errors while writing a 100 lines program.”

Most programmers catch and fix more than 99% of their mistake before releasing a program for testing. Having found so many, no wonder they think they most found a lot. But they haven’t .Tester’s job is to find the remaining 1%.

Correcting just one of the mistakes within a project can lead to week or months of savings in manpower (especially during the maintenance place of a software life cycle.).

Mail from Mr. Pradeep Soundararajan

For a long time i wasn't unable to update my blog after recieving the mail from Mr.Pradeep Soundararajan.


Hi Amardeep,

I am sure you know at least a little about me and you might not need my introduction. I found my blog linked to yours and as it seemed to be on testing, I did want to peruse it.

I was impressed by the fact that you linked people James and Dr Cem Kaner with respect of Mr. I intended to make you a few suggestions to help you write better posts.

1. The copy paste stuff never makes someone read your blog, since there are so many copy pasted stuff. All people might want to read is your experience, be it little or whatever or your day to day testing activities, the problem you face, the problems you solve, the testers you meet and lots more.
2. You might also want to read this: http://testertested.blogspot.com/2006/11/indian-testing-community-start.html

Best wishes and Happy Testing!



I feel really good after recieving the mail from
Mr.Pradeep Soundararajan. I always want to write my own experiences and thoughts after reading his mail. i will do my best in improving my blog and skills.


DEAR UPCOMING TESTERS : this mail is not only for me, but for all of you who just want to become the stars in TESTING INDUSTRY

why do software fails !

Generally speaking, there are bugs in software because of unclear requirements, software complexity, programming errors, changes in requirements, errors made in bug tracking, time pressure, poorly documented code and/or bugs in tools used in software development.

* There are unclear software requirements because there is miscommunication as what the software should or shouldn't do.

* Software complexity. All of the followings contribute to the exponential growth in software and system complexity.

* Programming errors occur because programmers and software engineers, like everyone else, can make mistakes.

* As to changing requirements, in some fast-changing business environments, continuously modified requirements are a fact of life. Sometimes customers do not understand the effects of changes, or understand them but request them anyway. And the changes require redesign of the software, rescheduling of resources and some of the work already completed have to be redone or discarded and hardware requirements can be effected, too.

* Bug tracking can result in errors because the complexity of keeping track of changes can result in errors, too.

* Time pressures can cause problems, because scheduling of software projects is not easy and it often requires a lot of guesswork and when deadlines loom and the crunch comes, mistakes will be made.

* Code documentation is tough to maintain and it is also tough to modify code that is poorly documented. The result is bugs. Sometimes there is no incentive for programmers and software engineers to document their code and write clearly documented, understandable code. Sometimes developers or programmers feel they cannot have job security if everyone can understand the code they write, or they believe if the code was hard to write, it should be hard to read.

* Software development tools, including visual tools, class libraries, compilers, scripting tools, can introduce their own bugs. Other times the tools are poorly documented, which can create additional bugs.

Globalization Testing

Globalization Testing ensures the application can function in any culture/locale. The goal of globalization testing is to detect potential problems in application design that could inhibit globalization. It makes sure that the code can handle all international support without breaking functionality that would cause either data loss or display problems. The following must be part of your globalization-testing plan:

1.) Decide the priority of each component :

To make globalization testing more effective, assign a testing priority to all tested components. Components that should receive top priority:

* Support text data in the ANSI (American National Standards Institute)format.

* Extensively handle strings (for example, components with many edit controls).

* Use files for data storage or data exchange (e.g., *Windows metafiles, security configuration tools, and Web-based tools).

2.) Select a test platform,

3.) Create the test environment,

4.) Execute tests,

5.) Recognize the problems.


LIFE begins when we loose,

LIFE ends when we win,

So, make sure that you always win.


-------AMAR DEEP MARADANA

Localization testing

Localization : is a service that are acceptable for a particular culture or locale that makes users to accept the adaptable software. For example MS OFFICE is used in many languages as a packagable software, as i use the software in english and others may use in Japanese or Hindi etc.

Localization testing checks how well the build has been translated into a particular target language. This test is based on the results of globalized testing where the functional support for that particular locale has already been verified. If the product is not globalized enough to support a given language, you probably will not try to localize it into that language in the first place!