Friday, August 3, 2012

Various Testing Performed on a Computer System

To be able to pass the TESDA NC II Computer Servicing Exam you need also to learn about Various Testing procedure performed on a computer System. System testing of software or hardware is testing conducted on a complete, integrated system to evaluate the system's compliance with its specified requirements. As a rule, system testing takes, as its input, all of the integrated software components that have successfully passed integration testing and also the software system itself integrated with any applicable hardware system(s). The purpose of integration testing is to detect any inconsistencies between the software units that are integrated together (called assemblages) or between any of the assemblages and the hardware.

The following examples are different types of testing that should be considered during System testing:

GUI SOFTWARE TESTING


Is the process of testing a product that uses a graphical user interface, this is to ensure that it meet its written specifications. This is normally done through the use of a variety of test cases. Most clients in client/server and web-based systems deliver system functionality using a GUI. When testing complete systems, the tester must grapple with the additional functionality provided by the GUI. GUIs make testing systems more difficult for many reasons: the event-driven nature of GUIs, unsolicited events, many ways in/many ways out and the infinite input domain problems make it likely that the programmer has introduced errors because he could not test every path.
               
Graphical user interface is a type of user interface which allows people to interact with electronic devices such as computers; hand-held devices such as MP3 Players, Portable Media Players or Gaming devices; household appliances and office equipment with images rather than text commands. A GUI offers graphical icons, and visual indicators, as opposed to text-based interfaces, typed command labels or text navigation to fully represent the information and actions available to a user. The actions are usually performed through direct manipulation of the graphical elements.


USABILITY TESTING


Is a technique used to evaluate a product by testing it on users. This can be seen as an irreplaceable usability practice, since it gives direct input on how real users use the system. This is in contrast with usability inspection methods where experts use different methods to evaluate a user interface without involving users.
               

Goals of usability testing:


Usability testing is a black-box testing technique. The aim is to observe people using the product to discover errors and areas of improvement. Usability testing generally involves measuring how well test subjects respond in four areas: efficiency, accuracy, recall, and emotional response. The results of the first test can be treated as a baseline or control measurement; all subsequent tests can then be compared to the baseline to indicate improvement.
  • Performance - How much time, and how many steps, are required for people to complete basic tasks? (For example, find something to buy, create a new account, and order the item.)
  • Accuracy - How many mistakes did people make? (And were they fatal or recoverable with the right information?)
  • Recall - How much does the person remember afterwards or after periods of non-use?
  • Emotional response - How does the person feel about the tasks completed? Is the person confident, stressed? Would the user recommend this system to a friend?

PERFORMANCE TESTING


Software performance testing is used to determine the speed or effectiveness of a computer, network, software program or device. This process can involve quantitative tests done in a lab, such as measuring the response time or the number of MIPS. (millions of instructions per second) at which a system functions. Qualitative attributes such as reliability, scalability and interoperability may also be evaluated. Performance testing is often done in conjunction with stress testing.

Compatibility testing


Is part of software non-functional tests, is testing conducted on the application to evaluate the application's compatibility with the computing environment. Computing environment may contain some or all of the below mentioned elements:
  • Computing capacity of Hardware Platform (IBM 360, HP 9000, etc.)..
  • Bandwidth handling capacity of networking hardware
  • Compatibility of peripherals (Printer, DVD drive, etc.)
  • Operating systems (MVS, UNIX, Windows, etc.)
  • Database (Oracle, Sybase, DB2, etc.)
  • Other System Software (Web server, networking/ messaging tool, etc.)
  • Browser compatibility (Firefox, Netscape, Internet Explorer, Safari, etc.)
Browser compatibility testing can be more appropriately referred to as user experience testing. This requires that the web applications are tested on different web browsers, to ensure the following:

Users have the same visual experience irrespective of the browsers through which they view the web application.
In terms of functionality, the application must behave and respond the same way across different browsers.

LOAD TESTING


It is used in different ways in the professional software testing community. Load testing generally refers to the practice of modelling the expected usage of a software program by simulating multiple users accessing the program concurrently. As such, this testing is most relevant for multi-user systems; often one built using a client/server model, such as web servers. However, other types of software systems can also be load tested. For example, a word processor or graphics editor can be forced to read an extremely large document; or a financial package can be forced to generate a report based on several years' worth of data. The most accurate load testing occurs with actual, rather than theoretical, results. When the load placed on the system is raised beyond normal usage patterns, in order to test the system's response at unusually high or peak loads, it is known as stress testing. The load is usually so great that error conditions are the expected result, although no clear boundary exists when an activity ceases to be a load test and becomes a stress test.

Various tools are also available to find out the causes for slow performance which could be in the following areas:
  • Application
  • Database
  • Network
  • Client side processing
  • Load balancer 

VOLUME TESTING


A test belongs to the group of non-functional tests, which are often misunderstood and/or used interchangeably. Volume testing refers to testing a software application with a certain amount of data. This amount can, in generic terms, be the database size or it could also be the size of an interface file that is the subject of volume testing. For example, if you want to volume test your application with a specific database size, you will expand your database to that size and then test the application's performance on it. Another example could be when there is a requirement for your application to interact with an interface file (could be any file such as .dat, .xml); this interaction could be reading and/or writing on to/from the file. You will create a sample file of the size you want and then test the application's functionality with that file in order to test the performance.

STRESS TESTING


IT industry - software testing, stress test refers to tests that put a greater emphasis on robustness, availability, and error handling under a heavy load, rather than on what would be considered correct behavior under normal circumstances. In particular, the goals of such tests may be to ensure the software doesn't crash in conditions of insufficient computational resources (such as memory or disk space), unusually high concurrency, or denial of service attacks.

Examples:


A web server may be stress tested using scripts, bots, and various denial of service tools to observe the performance of a web site during peak loads.

Hardware - When modifying the operating parameters of a CPU, such as in overclocking, underclocking, overvolting, and undervolting, it may be necessary to verify if the new parameters (usually CPU core voltage and frequency) are suitable for heavy CPU loads. This is done by running a CPU-intensive program (usually Prime95) for a long time, to see if the computer hangs or crashes. CPU stress testing is also referred to as torture testing. Software that is suitable for torture testing should typically run instructions that utilise the entire chip rather than only a few of its units.

Security Testing - Is a Process to determine that an IS (Information System) protects data and maintains functionality as intended.The six basic security concepts that need to be covered by security testing are: confidentiality, integrity, authentication, authorization, availability and non-repudiation.

Six Basic Security Concepts


Confidentiality - A security measure which protects against the disclosure of information to parties other than the intended recipient that is by no means the only way of ensuring the security.

Integrity - A measure intended to allow the receiver to determine that the information which it receives has not been altered in transit or by other than the originator of the information. Integrity schemes often use some of the same underlying technologies as confidentiality schemes, but they usually involve adding additional information to a communication to form the basis of an algorithmic check rather than the encoding all of the communication.

Authentication - A measure designed to establish the validity of a transmission, message, or originator.Allows a receiver to have confidence that information it receives originated from a specific known source.

Authorization - The process of determining that a requester is allowed to receive a service or perform an operation. Access control is an example of authorization.

Availability - Assuring information and communications services will be ready for use when expected. Information must be kept available to authorized persons when they need it.Also authority to operate.

Non-repudiation - A measure intended to prevent the later denial that an action happened, or a communication that took place etc. In communication terms this often involves the interchange of authentication information combined with some form of provable time stamp.

RECOVERY TESTING


It is the activity of testing how well an application is able to recover from crashes, hardware failures and other similar problems.Recovery testing is the forced failure of the software in a variety of ways to verify that recovery is properly performed. Recovery testing should not be confused with reliability testing, which tries to discover the specific point at which failure occurs.

Examples of recovery testing:


  • While an application is running, suddenly restart the computer, and afterwards check the validness of the application's data integrity.
  • While an application is receiving data from a network, unplug the connecting cable. After some time, plug the cable back in and analyze the application's ability to continue receiving data from the point at which the network connection disappeared.
  • Restart the system while a browser has a definite number of sessions. Afterwards, check that the browser is able to recover all of them.

ACCESSIBILITY TESTING


It is a general term used to describe the degree to which a product (e.g., device, service, environment) is accessible by as many people as possible. Accessibility can be viewed as the "ability to access" the functionality, and possible benefit, of some system or entity. Accessibility is often used to focus on people with disabilities and their right of access to entities, often through use of assistive technology. Several definitions of accessibility refer directly to access-based individual rights laws and regulations. Products or services designed to meet these regulations are often termed Easy Access or Accessible.Accessibility is not to be confused with usability which is used to describe the extent to which a product (e.g., device, service, environment) can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use.Accessibility is strongly related to universal design when the approach involves "direct access." This is about making things accessible to all people (whether they have a disability or not). However, products marketed as having benefited from a Universal Design process are often actually the same devices customized specifically for use by people with disabilities.An alternative is to provide "indirect access" by having the entity support the use of a person's assistive technology to achieve access (e.g., screen reader).

Maintenance testing - is that testing which is performed to either identify equipment problems, diagnose equipment problems or to confirm that repair measures have been effective.

Types of maintenance for which testing can be used. Maintenance falls into the following four categories:
  • Preventive maintenance - Changes to the existing system so as to reduce the risk of failure while operating.
  • Corrective maintenance - correcting problems that arise while using the system.
  • Perfective maintenance - Enhancements (modifications) to improve the safety, reliability, efficiency or cost-effectiveness of operation.
  • Adaptive maintenance - Adaptations to address requirements that crop up due to changes in the environment or new regulations.