Subscribe by Email


Showing posts with label Ability. Show all posts
Showing posts with label Ability. Show all posts

Sunday, January 29, 2012

What are the different quality attributes in software architecture?

Software is of no use without good quality. Incorporating high quality in software is very difficult. The term “quality” is itself very hard to be defined. We can only measure quality using certain attributes. These attributes are called software quality attributes.

WHAT IS THE IDEA BEHIND QUALITY ATTRIBUTES?
1. Quality attributes of a software system or application define its behavior.
2. The quality attributes give a certain idea of how much suitable is the software for a purpose or environment.
3. It is an essential component of software architecture.
4. Identification of quality attributes is necessary as it helps the system to be built according to the intended behavior.

Certain scenarios are used to measure the quality attributes.
1. The scenarios are very helpful in helping the program developer to make decisions that are qualitative in nature and related to the program behavior.
2. Writing good scenario statements is very important in identification of quality attributes.
3. Although the scenarios help in the identification of attributes, they don’t provide an effective way to achieve those attributes that has to be figured out separately.

Architectural methodologies come to help at this point.
1. There are several architectural methods possible to achieve a particular quality attribute.
2. The software architect should select the right method and use it according to the needs of the software.
3. He should justify the selection of a method and provide documentation on it.

Over the years, some basic quality attributes have been identified and recorded in a list. The quality attributes have been classified in to 4 categories:

1.Run-time system qualities
These attributes are measured when the software is in execution mode.
- Functionality is the ability via which the system completes the assigned task.
- Performance is the collective measure of resource utilization, the response time, and the through put of the system.
- Security is the ability of the system to protect itself from unauthorized access and modifications.
- Availability is the time period for which the system is available to use.
- Inter-operability is the ability of a system to run in cooperation with another system.
- Usability includes other attributes like affect, control, help, and efficiency.

2.Non runtime system quality attributes
These attributes cannot be measured when the software is in execution mode.
- Portability is the ability of a system to perform well in varying environments.
- Modifiability is the adaptive ability of a system by virtue of which it is able to adapt to the changes.
- Integratibility is the ability of the components of the system to work in coordination with each other.
- Reusability is the measure of extent to which the existing features can be used in new software.
- Testability is the measure of the extent to which the software can be tested.

3.Business quality attributes
These attributes affect the other quality attributes.
- Marketability is the value of the system in the market.
- Cost is the money value of the software.
- Schedule is the expected utilization of the system.
- Appropriateness

4.Architecture quality attributes
These are specific attributes concerning the software architecture.
- Correctness is said to account for over all satisfaction of the system requirements.
- Conceptual integrity is the ability of the components of a system to integrate with each other.

5.Domain specific quality attributes
These are specific attributes concerning the business domain.
- Calibrability is the ability of a software system by virtue of which it recalibrates itself according to a specific range of work.
- Sensitivity is the measure of response of the software system to the measuring of a quality attribute.

The software architecture is greatly influenced by the quality attributes of a system. A measure taken in favor of one quality attribute often goes against another.


Sunday, December 25, 2011

What are different characteristics of endurance testing?

The term endurance defines the stamina, durability, resilience and the sufferance of something and its ability to perform actively and exert itself for a long period of time.

- Endurance also stands for the ability of the thing to resist, recover from and withstand.
- It also gives the degree of immunity of a thing towards trauma, fatigue or wounds.
- For software systems or applications, endurance testing has been developed to check the endurance of the software system or applications.
- Endurance testing is also known as soak testing.
- It is carried out to determine if the concerned software system or application can sustain the expected continuous load.
- The memory utilization is monitored during the endurance testing.
- This is done so as to check the potential memory leaks.
- The endurance is checked during the endurance testing but quite often, performance degradation is overlooked.
- The good response times and throughput are ensured throughout the life of the software system or application i.e., from the beginning of the usage of the software system or application to the last time of usage.

The endurance testing is aimed at testing the sustainability of a software system or application. Its goal is to check how the system behaves or responds under the prolonged significant pressure or load for an extended and significant period of time.

- It aims to test how the software system or application behaves under the sustained use.
- Endurance testing checks for the problems that may occur as a result of prolonged execution of the software program.
- It tests the application or the system under heavy loads of data for a desired period of time which is typically more than the normal usage time.
- Endurance testing is usually carried out to identify the problems that the software system or applications face under the prolonged execution.
- It also aims at identifying the buffer flows and memory leaks which are otherwise not identifiable without carrying out the endurance testing.
- The testing for the behavior of the program under significant load over a significant period of time is done with normal ramp down and ramp up time.

This can be illustrated with the following example:

- Always some memory is allocated to the objects of the program.
- In some cases it happens that the allocated memory is not de- allocated and thus remains occupied.
- This leads to a situation of over consumption of memory in which a chunk of memory is again and again taken away by the program whenever it is executed.

- Eventually the software program reaches a point when the leftover memory is not sufficient for the program to execute.
- At this point, the program crashes and is reported to have a breakdown. Such a situation is called a memory leak.
- Endurance testing is a part of performance testing.
- The other types of testings under performance testing include load testing, volume testing, and stress testing.
- The basic aim of the endurance is to check and correct the performance related problems being faced by the software system or application.
- Those problems appear only after the software system or application has been running for a long time under some significant load or stress.
- Some of the endurance test cases are available for free and have been checked into repository.
- It is recommended to include a report argument so that you visualize the usage of memory during the test and share it.
- The endurance tests create a real world model which employs a normal and high load pattern of usage for the software system or application to determine its potential and problems.


Wednesday, December 14, 2011

What are different characteristics of recovery testing?

Recovery testing itself makes clear what it is by through its name. We all know what recovery means. To recover means to return to the normal state after some failure or illness etc. This qualitative aspect is also present in today’s software system or applications.

- The recovery of a software system or application is defined as its ability to recover back form some hardware failure, crashes and similar such problems that are quite frequent with computers.
- Before the release of any software it needs to be tested for its recovery factor. This is done by recovery testing.
- Recovery testing can be defined as the testing of software system or application to determine its ability to recover fatal system crashed and hardware problems.

One should always keep one thing in mind which is that recovery testing is not to be confused with reliability testing since reliability testing aims at discovering the points at which the software system or application tends to fail.

- In a typical recovery testing, the system is forced to fail or crash or hang in order to check how the recovery asset of the software system or application is responding and how much strong it is.
- The software system or application is forced to fail in a variety of ways.
- Every attempt is made to discover the failure factors of the software system or application.

Objectives of Recovery Testing
- Apart from the recovery factor, the recovery testing also aims at determining the speed of recovery of the software system.
- It aims to check how fast the software system or application is able to recover from a failure or crash.
- It also aims to check how better the system recovers.
- It checks the quality of the recovered software system or application. There is some type and extent to which the software is recovered.
- The types and extent are mentioned in the documentation in the requirements and specifications section.
- Recovery testing is all about testing the recovering ability of the software system or application i.e., how well it recovers from the catastrophic problems, hardware failures and system crashes etc.

The following examples will further clarify the concept of recovery testing:

1. Keep the browser in runny mode and assign it multiple sessions. Then just restart your system. After the system has booted in, check whether the browser is able to recover all of the sessions that were running previously before the restart. If the browser is able to recover, then it is said to have good recovering ability.

2. Suddenly restart your computer while an application is in running mode. After the boot in session check whether the data which was being worked upon by the application is still integrate and valid or not? If the data is still valid, integrate and safe the application has a great deal of recovery factor.

3. Set some application like file downloader or similar to that on data receiving or downloading mode. Then just unplug the connecting cable. After a few minutes plug in the cable back and let the application resume its operation and check whether the application is still able to receive the data from the point where it was left. If its not able to resume the data receiving then its said to have a bad recovery factor.

Recovery testing tests the ability of application software to restart the operations that were running just before the loss of the integrity of the applications. The main objective of recovery testing is to ensure that the applications continue to run even after the failure of the system.

Recovery testing ensures the following:
- Data is stored in a preserved location.
- Previous recovery records are maintained.
- Development of a recovery tool which is available all the time.


Sunday, December 11, 2011

What are different characteristics of compatibility testing?

First let us clear up with the concept of compatibility.

Compatibility of a software system or an application or any hardware system or components can be defined as the ability of that software system or hardware component to work efficiently with all the versions either newer or older of all CPU architecture designs and operating systems.

- Compatibility is one of the most important properties of any software system or application and hardware system.
- Not every where, every one uses the same CPU architecture designs and operating systems.
- Therefore, it becomes necessary to make software and hardware compatible will all sorts of systems available.
- Otherwise, the software or the hardware will remain confined to only one CPU architecture and operating system.
- There will be no benefit to the software and hardware developers who developed that software or hardware.

In other words, the software or the hardware product or artifact get promotion and hence it would not be widely accepted.
Keeping in view all these issues, care is taken to provide maximum compatibility to the software or the hardware system. Before its release to the open public, the software or the hardware product needs to undergo testing for determining its compatibility.
Such testing is called compatibility testing.

- Compatibility is categorized under non functional testings.
- Compatibility testing can be defined as the testing that is conducted on the software application or the hardware component to determine the concerned product’s compatibility with the computing technological environment.

A proper computing technological environment contains all of the below mentioned aspects:

- Bandwidth handling capacity: the environment should be able to handle bandwidth of the networking software and hardware.
- It should have a computing capacity of hardware platform like HP 9000 and IBM 360 etc.
- It should be compatible with all kinds of peripherals. In other words, it should have compatibility of peripherals. Peripherals include DVD drive, printers, monitors, speakers and so on.
- It should be compatible with all operating systems including UNIX, MVS, windows and so on.
- It should support all types of data bases like oracle, DB2, Sybase etc.
- It should be well compatible with other software systems like messaging tools, networking systems and web servers.
- It should be browser compatible. It should support all the available browsers till date like Netscape, internet explorer, Firefox, Google chrome, safari etc.

The above aspects together make up a proper and efficient computing environment to carry out compatibility testing for the software and hardware products.

Compatibility testing comprises many other small testings like peripheral compatibility testing, browser compatibility testing etc. browser compatibility testing is also known as user experience testing.
It involves the checking of web and network applications on all the available different browsers.

It is done to ensure the following:
- The application under testing should respond exactly in the same way with all the different browsers. It should exhibit same features and functionalities when run under different browsers.
- The visual experience for the users must be the same irrespective through which browser they are using the web application.
- The applications should be backwards compatible i.e., it should work with the older versions of the browser as well.
- The applications should be carrier compatible i.e., data transformation should be same no matter which carrier is being used. Some famous carriers include orange, sprint, Verizon, Airtel, O2 etc.
- Apart from software compatibility, the application should be hardware compatible.
- The applications should be compiler compatible i.e., there should be no difference in compilation by different compilers. All the compilers should compile the source code correctly.
- The applications should be able to run on emulators.


Facebook activity