Subscribe by Email


Showing posts with label Methodologies. Show all posts
Showing posts with label Methodologies. Show all posts

Thursday, May 24, 2012

What are common mistakes and misunderstandings in a unified process?


As it is always said “to err is human”, one may make innumerable mistakes. This truth holds good for every aspect of our lives and so for the technology also. While programming, it is obvious that some mistakes will be made but they are not intended, some mistakes might creep in without the knowledge of the programmer; other mistakes might arise due to a lack of knowledge of the programmers and the developers! 
Anything is possible. With so much complex and advanced software systems and applications to build around it is obvious for the programmers and the developers to make mistakes while programming the software because it is not the feature of human intelligence to keep of check of each and every bit of the program that is being built.

Well, this article has been focused up on the mistakes and misunderstandings that result in mistakes in a unified process. Such mistakes and misunderstandings in a development can cause severe problems in the whole development process causing further problems in the software system or application that is being built. 

What are common mistakes in unified process?


There are various mistakes that one can make while programming using the unified process. 
- The very common mistake that is done is that the complex problems might be made more complex due to lack of sufficient understanding of the methodologies that are available for programming or may be because wrong or inappropriate methodologies might have been put in to use. 
- The problem that occurs here is for adopting any software development process different people assume different values and hence it is like using a single software development process for every programmer or developer.
- For getting the appropriate solutions to the programming problems it is not necessary that the programs should be developed with the extreme agile or test driven development methodologies. See this is where the people make mistakes!
- When a software system or application can be developed using the simplest of the methodologies available then why go for the complex and the tough ones? 
- Even though the agile processes and the unified software development processes are a big step towards the advancement of the software development, it is not always that they can be extended for all sorts of softwares and applications.
- The best way to avoid much of the problems is to train the programmers and developers in information protection. It does not require months and weeks to learn about common software security mistakes and misunderstandings. 

Examples of Common Mistakes


- Suppose that during programming a file was not locked properly and there are two parts of the programs that access the same file without properly locking it. 
- Such a case can result in a race condition between the two programs that can make the file quite unstable or in a vulnerable condition. 
- Another mistake can be logging in trying many passwords in just few seconds without giving the system a proper time to check. 
- The spirit of a programmer should be as such that even if he/ she has not made the mistakes he/she should take the responsibility to correct them before they cause more harm to the software system or application. 
- The longer the time is spent on writing the programs the more you avoid the mistakes. 


Saturday, April 21, 2012

What are different aspects of Crystal Methods?


Crystal methods together constitute a family of methods called the “crystal family” and were introduced by the Alistair Cockburn around the year of 1990. Cockburn developed these methods after carrying out some interviews of the development teams and observed that some of the teams even though did not made use of the formal methodologies of software development were successful in delivering successful software projects and products. 

The crystal family he introduced can be thought of as a catalogue that includes their methodologies for delivering the successful projects and products. These crystal methods have been categorised under the category of the light weight methodologies. The term “crystal” in the context of the software engineering implies a view on the underlying core of values and principles and the faces are the means representing the standards, roles, tools and techniques.

Cockburn differentiated the methodologies, techniques and policies as:

  1. Methodologies: set of elements like tools and practices.
  2. Techniques: include skill areas like development of use cases.
  3. Policies: statements dictating the must haves of the organizations.

Aspects on which Crystal Methods are Focused

- Below mentioned are the aspects up on which the crystal methods are focused:
  1. Interaction
  2. People
  3. Skills
  4. Community
  5. Communications
  6. Talents and so on.
- Cockburn stated that the above mentioned aspects are much important than the process which should be the secondary focus. 
- Crystal methods are based up on the idea of having variant talented and skilled individuals in the development team so that process element does not pose up a major factor. 

What makes the crystal methods the easiest agile software development method? 

- Crystal methods are very much tolerant to the issue that the teams can complete a task in several different ways.
- Crystal methods over the time have proven to be very effective in avoiding the rigid and strict processes (that were typical of the older development methodologies) and that is why they are very flexible. 
- Cockburn eventually developed may types of crystal methods for each and every type and kind of development team which are required to solve diverse problems. 
- These crystal methods are categorized by different color label denoting the weight of the methodology to be used. 

What are seven crystal methods?

- The crystal family of methodologies consist of seven crystal methods:
  1. Crystal clear
  2. Crystal yellow
  3. Crystal orange
  4. Crystal orange web
  5. Crystal red
  6. Crystal maroon
  7. Crystal diamond
  8. Crystal sapphire
- Depending up on the size of the project, the colour darkens from left to right. 
- The crystal methods have been scaled to the international standards based up on the size and criticality of the teams.

Properties of Crystal Methods

For all the seven crystal methods, some common properties have been defined as mentioned below:
  1. Reflective improvement which involves taking breaks from the regular development routine and think and come up with ways of improving the process.
  2. Personal safety involves free speaking within a group.
  3. Easy access to expert users.
  4. Frequent delivery is the measure of the ability of the method to frequently deliver the iterations of the software product or project. The features to be included in the iterations are decided up on by the developers and the designers.
  5. Osmotic or close communication involves flow of information among the teams in a room.
  6. Focus involves focusing up on direction in which the project development is taking place and individual task.
  7. Technical environment inclusive of the automated tests, frequent integration and configuration management.  


Friday, February 24, 2012

What is meant by error guessing methodology?

Errors and bugs are perhaps the worst enemy of a software system or application and of course cause a lot of nuisance in the programming and give nightmares to the program developers and testers. Till date several methodologies have been developed to cope up with these errors and bugs but, the problem of errors is something which cannot be rooted. It can only be controlled.

Error guessing and error seeding are two such technologies about which we will be discussing in this article.

CHARACTERISTICS OF ERROR GUESSING
- Error guessing is a self explaining term.
- It can be thought of as a software testing methodology or technique that employs test cases to dig out the bugs buried in the software program.

DIFFERENCE BETWEEN ERROR GUESSING & OTHER SOFTWARE TESTING METHODOLOGIES

Then what is the difference between error guessing and other software testing methodologies? Though they may seem similar, there is a considerable difference which lies in the composition of the test cases.

DIFFERENCE #1:
- The test cases used in other types of software testing methodologies are based up on the requirements specifications of the software system or the application. - But, in error guessing, the test cases involved are based up on the past experiences of the testing as well as on the experience of the program that is to undergo testing.

DIFFERENCE #2:
- These test cases are created by the tester who has been involved in the whole programming of the software system or application.
- The tester has a past experience of the older versions of the programs so that he can easily put forth the situations and conditions that can cause the system failure or give rise to errors like null pointers, division by zero or use of parameters that are invalid.
- Error guessing methodology like exploratory testing does not follow any explicit rules or regulations.
- The tester is free to choose the basis to base the test cases on whether be it on functional or non functional requirements, experience, and situation and so on.

ASPECTS USED BY TESTERS IN USING ERROR GUESSING
Testers who have an experience of using error guessing make use of the below mentioned aspects:

1. Knowledge about the methods and techniques used in the AUT like implementation technology and designing method etc.
2. Past experience of software testing in different phases. Such experience is required during the phase of the regression testing.
3. Past experience of testing similar software system or applications and a knowledge of the factors that caused defects in them.
4. Knowledge of typical errors like those mentioned above in the article which are implemented unknowingly in the code.
5. General Thumb rules of heuristics.

ADVANTAGES OF ERROR GUESSING
- Error guessing when implemented properly can gradually increase the efficiency and effectiveness of your software testing life cycle.
- The error guessing skills of a tester gradually improve with the gradual experience of software testing.
- Error guessing is the easiest software technology that a tester can ever use.
- It is just like a guessing game, you guess where all the errors might be hidden.
- This methodology does not require any specially designed tools.
- Error guessing involves seeding out of errors.
- Error guessing methodology can be applied while carrying all other software testing techniques so as to get much better outcomes since the error guessing helps a great deal in improving the quality of the test cases.
- Error guessing is a technique that roots those defects that appear to be an intuition in the AUT.


Tuesday, February 21, 2012

Explain the differences between SDLC and STLC?

SDLC (software development life cycle) and STLC (software testing life cycle) are two one of the most important cycles in the development of any software system or application. There is much confusion about these two topics and often characteristics of one are mistaken for the other. This article seeks to make the differences between the two confusing concepts clear.

DIFFERENCES BETWEEN SDLC AND STLC

DIFFERENCE #1:
- The systems development life cycle is one of the major concepts in the field of information systems, software and systems engineering, that one needs to understand really well.
- It can be thought of as a process following which the creation or alteration of the information systems, methodologies and other methods takes place.
- It is a cycle that is followed to keep the development of a software system or application on track.
- On the other hand, software testing life cycle is an integral part of the software development life cycle and takes care of the software testing activities.

DIFFERENCE #2:
- All these development and testing processes are not just one single activity.
- They comprise of many constituent activities that are employed for multiple tasks.
- The software development life cycle is comprised many types of different methodologies for software development.
- Usually these software development methodologies together constitute the framework for the software system or application through which the entire development process can be planned and controlled.
- In contrast to the software development life cycle, software testing life cycle is comprised of the activities for testing and certifying the final software product.

DIFFERENCE #3:
- The software development life cycle constitutes the following processes:
(a) Analysis
(b) Design
(c) Implementation
(d) Testing and
(e) Evaluation
- The software testing life cycle constitutes the following processes:
(a) Requirement analysis
(b) Test analysis
(c) Test case development
(d) Environment set up
(e) Test execution
(f) Test cycle closure
Each of the above mentioned processes under software testing life cycle is provided with an entry criteria as well as exit criteria.

DIFFERENCE #4:
- The control of the software development life cycle is taken by the system analyst and is employed for the creation of an information system.
- This cycle also involves other activities like training, validation and stake holder ownership.
- The SDLC takes care of the quality of the software system under development and ensures that it is always maintained at a high level and also that all the user expectations are satisfied.
- It also makes sure that the project is completed with a stipulated period of time as well as budget.
- Similarly the STLC takes care of the successful completion of the software testing.

DIFFERENCE #5:
- The phase of requirements gathering in software development life cycle can be compared with the requirement analysis in the software testing life cycle.

DIFFERENCE #6:
Various methodologies have been designed to implement software development life cycle like:
(a) Spiral
(b) Water fall
(c) Agile software development
(d) Synchronize and stabilize
(e) Rapid prototyping
(f) Incremental etc.
The software testing life cycle is implemented only in two ways i.e., either manually or through automation.

DIFFERENCE #7:
- The software development life cycle is managed by the system and on the other hand, the software testing life cycle is managed by the project manager.
- He/ she is the one who decides the time period for the completion of testing and allots the budget.
- The following aspects are also identified:
(a) Scope of testing
(b) Approach to be followed
(c) Associated risks
(d) Resources
(e) Time schedule

These were some of the basic differences between the SDLC and STLC. Though having many different aspects, these two cycles have many things in common.


Monday, February 20, 2012

What are Application Testing Methodologies?

First of all, lets be clear with what is application testing actually.
- It is simply the testing of application software. But, it is not so easy to carry out as it sounds like.
- To develop good application software, great efforts and skills are required both of development and testing.
- Testing is needed to check the quality status of application software.
- This is indeed very important for quality assurance and to see that if the application software is meeting the expectations of the consumers or not.

WHY IS TESTING METHODOLOGY IMPORTANT?
- It is obvious that all the aspects of application software cannot be discovered by following just one testing methodology.
- One has to employ many testing methodologies in order to discover most of the hidden bugs and errors.
- Many methodologies have been developed for testing application software.
- Discovery of flaws is the primary aim of any software testing methodology.
- Criticism is yet another aim.

APPLICATION TESTING METHODOLOGIES

1.BOX TESTING TECHNIQUES
- White Box Testing
It includes techniques that are used to test the program or algorithmic structures and working of that particular software application in opposition to its functionalitY or the results of its black box tests.
a) API testing
b) Fault injection
c) Code coverage: Code coverage can be defined as a measure to measure the extent to which the source code of a software system has been tested.
d) Mutation testing
e) Static testing

- Black Box Testing
a) Equivalence partitioning
b) Boundary value analysis
c) Pair wise testing
d) Fuzz testing
e) Exploratory testing
f) Model based testing
g) Specification based testing

- Grey Box Testing
As the grey colour is made from the combination black and white colours, so does grey box testing is made from a combination of both white box testing as well as black box testing.
- Visual Testing
As the name suggests, non destructive testing techniques do not involve vigorous checking of the software structure.
- Unit Testing
- Integration Testing
The units or modules are combined and tested.
- System Testing
- System Integration Testing

- Regression Testing
It basically discovers and unhide the hidden and new errors and flaws.

- Acceptance Testing
There should be some kind of testing that looks in to the contract and verifies whether or not all the requirements have been met. Acceptance testing serves the purpose right. Acceptance is a composition of 3 kinds of tests namely Physical tests, Chemical tests and Performance tests.

- Alpha Testing
The purpose of checking the application software before the release is served by alpha testing on the basis of:
a) Service level agreement or SLA as it is abbreviated.
b)Requirements
c)Specifications
d)Defect rate efficiency (known as DRE in short form).

- Beta Testing
Beta testing is carried out after the successful completion of the alpha testing.
- Performance Testing

- Usability Testing
Usability testing can be defined as a technique which is used in interaction design. This designing is centred around the user and accounts for the evaluation of the software system, application or product by testing it out on the software product users.

- Security Testing
Security testing as its name suggests can be defined as a process to determine that whether or not a software or information system or application is capable of protecting data and keeping it secure.

- Internationalization
Internationalization can be defined as a process of coding and designing a product. This coding is done in such a way that it can perform well almost on any platform after modification for use in different regional standards and languages.
- Localization


Facebook activity