Examples of Architectural Styles / Patterns
There are many common ways of designing computer software modules and their communications, among them:
· Blackboard
· Client-server
· Distributed computing
· Event Driven Architecture
· Implicit invocation
· Monolithic application
· Peer-to-peer
· Pipes and filters
· Plugin
· Representational State Transfer
· Structured (module-based but usually monolithic within modules)
· Software componentry (strictly module-based, usually object-oriented programming within modules, slightly less monolithic)
· Service-oriented architecture
· Search-oriented architecture
· Space based architecture
· Shared nothing architecture
· Three-tier model
Showing posts with label Manual Tesing Basic. Show all posts
Showing posts with label Manual Tesing Basic. Show all posts
Wednesday, January 21, 2009
Tuesday, January 20, 2009
Software design vs. software implementation
Software design vs. software implementation
Software testers should not be limited only to testing software implementation, but also to testing software design. With this assumption, the role and involvement of testers will change dramatically. The test cycle will change too. To test software design, testers will review requirement and design specifications together with designer and programmer. This will help to identify bugs earlier.
Software testers should not be limited only to testing software implementation, but also to testing software design. With this assumption, the role and involvement of testers will change dramatically. The test cycle will change too. To test software design, testers will review requirement and design specifications together with designer and programmer. This will help to identify bugs earlier.
Labels:
Manual Tesing Basic
Exploratory vs. Scripted Testing
Exploratory vs. scripted
Exploratory testing means simultaneous test design and test execution with an emphasis on learning. Scripted testing means that learning and test design happen prior to test execution, and quite often the learning has to be done again during test execution. Exploratory testing is very common, but in most writing and training about testing it is barely mentioned and generally misunderstood. Some writers consider it a primary and essential practice. Structured exploratory testing is a compromise when the testers are familiar with the software. A vague test plan, known as a test charter, is written up, describing what functionalities need to be tested but not how, allowing the individual testers to choose the method and steps of testing.
There are two main disadvantages associated with a primarily exploratory testing approach. The first is that there is no opportunity to prevent defects, which can happen when the designing of tests in advance serves as a form of structured static testing that often reveals problems in system requirements and design. The second is that, even with test charters, demonstrating test coverage and achieving repeatability of tests using a purely exploratory testing approach is difficult. For this reason, a blended approach of scripted and exploratory testing is often used to reap the benefits while mitigating each approach's disadvantages.
Exploratory testing means simultaneous test design and test execution with an emphasis on learning. Scripted testing means that learning and test design happen prior to test execution, and quite often the learning has to be done again during test execution. Exploratory testing is very common, but in most writing and training about testing it is barely mentioned and generally misunderstood. Some writers consider it a primary and essential practice. Structured exploratory testing is a compromise when the testers are familiar with the software. A vague test plan, known as a test charter, is written up, describing what functionalities need to be tested but not how, allowing the individual testers to choose the method and steps of testing.
There are two main disadvantages associated with a primarily exploratory testing approach. The first is that there is no opportunity to prevent defects, which can happen when the designing of tests in advance serves as a form of structured static testing that often reveals problems in system requirements and design. The second is that, even with test charters, demonstrating test coverage and achieving repeatability of tests using a purely exploratory testing approach is difficult. For this reason, a blended approach of scripted and exploratory testing is often used to reap the benefits while mitigating each approach's disadvantages.
Labels:
Manual Tesing Basic
Agile vs. traditional Testing
Agile vs. traditional
Starting around 1990, a new style of writing about testing began to challenge what had come before. The seminal work in this regard is widely considered to be Testing Computer Software, by Cem Kaner.[5] Instead of assuming that testers have full access to source code and complete specifications, these writers, including Kaner and James Bach, argued that testers must learn to work under conditions of uncertainty and constant change. Meanwhile, an opposing trend toward process "maturity" also gained ground, in the form of the Capability Maturity Model. The agile testing movement (which includes but is not limited to forms of testing practiced on agile development projects) has popularity mainly in commercial circles, whereas the CMM was embraced by government and military software providers.
However, saying that "maturity models" like CMM gained ground against or opposing Agile testing may not be right. Agile movement is a 'way of working', while CMM is a process improvement idea.
But another point of view must be considered: the operational culture of an organization. While it may be true that testers must have an ability to work in a world of uncertainty, it is also true that their flexibility must have direction. In many cases test cultures are self-directed and as a result fruitless; unproductive results can ensue. Furthermore, providing positive evidence of defects may either indicate that you have found the tip of a much larger problem, or that you have exhausted allpossibilities. A framework is a test of Testing. It provides a boundary that can measure (validate) the capacity of our work. Both sides have, and will continue to
argue the virtues of their work. The proof however is in each and every assessment of delivery quality. It does little good to test systematically if you are too narrowly focused. On the other hand, finding a bunch of errors is not an indicator that Agile methods was the driving force; you may simply have stumbled upon an obviously poor piece of work.
Starting around 1990, a new style of writing about testing began to challenge what had come before. The seminal work in this regard is widely considered to be Testing Computer Software, by Cem Kaner.[5] Instead of assuming that testers have full access to source code and complete specifications, these writers, including Kaner and James Bach, argued that testers must learn to work under conditions of uncertainty and constant change. Meanwhile, an opposing trend toward process "maturity" also gained ground, in the form of the Capability Maturity Model. The agile testing movement (which includes but is not limited to forms of testing practiced on agile development projects) has popularity mainly in commercial circles, whereas the CMM was embraced by government and military software providers.
However, saying that "maturity models" like CMM gained ground against or opposing Agile testing may not be right. Agile movement is a 'way of working', while CMM is a process improvement idea.
But another point of view must be considered: the operational culture of an organization. While it may be true that testers must have an ability to work in a world of uncertainty, it is also true that their flexibility must have direction. In many cases test cultures are self-directed and as a result fruitless; unproductive results can ensue. Furthermore, providing positive evidence of defects may either indicate that you have found the tip of a much larger problem, or that you have exhausted allpossibilities. A framework is a test of Testing. It provides a boundary that can measure (validate) the capacity of our work. Both sides have, and will continue to
argue the virtues of their work. The proof however is in each and every assessment of delivery quality. It does little good to test systematically if you are too narrowly focused. On the other hand, finding a bunch of errors is not an indicator that Agile methods was the driving force; you may simply have stumbled upon an obviously poor piece of work.
Thursday, January 15, 2009
What is software? Why should it be tested? What is Quality?
What is software? Why should it be tested?
Software is a series of instructions for the computer that perform a particular task, called a program; the two major categories of software are system software and
application software. System software is made up of control programs. Application software is any program that processes data for the user (spreadsheet, word
processor, payroll, etc.).
A software product should only be released after it has gone through a proper process of development, testing and bug fixing. Testing looks at areas such as
performance, stability and error handling by setting up test scenarios under controlled conditions and assessing the results. This is why exactly any software has to be
tested. It is important to note that software is mainly tested to see that it meets the customers’ needs and that it conforms to the standards. It is a usual norm that
software is considered of good quality if it meets the user requirements.
What is Quality? How important is it?
Quality can briefly be defined as “a degree of excellence”. High quality software usually conforms to the user requirements. A customer’s idea of quality may cover a
breadth of features - conformance to specifications, good performance on platform(s)/configurations, completely meets operational requirements (even if not
specified!), compatibility to all the end-user equipment, no negative impact on existing end-user base at introduction time.
Quality software saves good amount of time and money. Because software will have fewer defects, this saves time during testing and maintenance phases. Greater
reliability contributes to an immeasurable increase in customer satisfaction as well as lower maintenance costs. Because maintenance represents a large portion of all
software costs, the overall cost of the project will most likely be lower than similar projects.
Following are two cases that demonstrate the importance of software quality:
Ariane 5 crash June 4, 1996- Maiden flight of the European Ariane 5 launcher crashed about 40 seconds after takeoff
- Loss was about half a billion dollars
- Explosion was the result of a software error
- Uncaught exception due to floating-point error: conversion from a 64-bit integer to a 16-bit signed integer applied to a larger than expected number
- Module was re-used without proper testing from Ariane 4
- Error was not supposed to happen with Ariane 4
- No exception handler
Mars Climate Orbiter - September 23, 1999 - Mars Climate Orbiter, disappeared as it began to orbit Mars.
- Cost about $US 125-million
- Failure due to error in a transfer of information between a team in Colorado and a team in California
- One team used English units (e.g., inches, feet and pounds) while the other used metric units for a key spacecraft operation.
Software is a series of instructions for the computer that perform a particular task, called a program; the two major categories of software are system software and
application software. System software is made up of control programs. Application software is any program that processes data for the user (spreadsheet, word
processor, payroll, etc.).
A software product should only be released after it has gone through a proper process of development, testing and bug fixing. Testing looks at areas such as
performance, stability and error handling by setting up test scenarios under controlled conditions and assessing the results. This is why exactly any software has to be
tested. It is important to note that software is mainly tested to see that it meets the customers’ needs and that it conforms to the standards. It is a usual norm that
software is considered of good quality if it meets the user requirements.
What is Quality? How important is it?
Quality can briefly be defined as “a degree of excellence”. High quality software usually conforms to the user requirements. A customer’s idea of quality may cover a
breadth of features - conformance to specifications, good performance on platform(s)/configurations, completely meets operational requirements (even if not
specified!), compatibility to all the end-user equipment, no negative impact on existing end-user base at introduction time.
Quality software saves good amount of time and money. Because software will have fewer defects, this saves time during testing and maintenance phases. Greater
reliability contributes to an immeasurable increase in customer satisfaction as well as lower maintenance costs. Because maintenance represents a large portion of all
software costs, the overall cost of the project will most likely be lower than similar projects.
Following are two cases that demonstrate the importance of software quality:
Ariane 5 crash June 4, 1996- Maiden flight of the European Ariane 5 launcher crashed about 40 seconds after takeoff
- Loss was about half a billion dollars
- Explosion was the result of a software error
- Uncaught exception due to floating-point error: conversion from a 64-bit integer to a 16-bit signed integer applied to a larger than expected number
- Module was re-used without proper testing from Ariane 4
- Error was not supposed to happen with Ariane 4
- No exception handler
Mars Climate Orbiter - September 23, 1999 - Mars Climate Orbiter, disappeared as it began to orbit Mars.
- Cost about $US 125-million
- Failure due to error in a transfer of information between a team in Colorado and a team in California
- One team used English units (e.g., inches, feet and pounds) while the other used metric units for a key spacecraft operation.
Labels:
Manual Tesing Basic
Algorithm of Software Testing
5. Heuristics OR Algorithm of Software Testing
Testability
Software testability is how easily, completely and conveniently a computer program can be tested.
Software engineers design a computer product, system or program keeping in mind the product testability. Good programmers are willing to do things that will help the testing process and a checklist of possible design points, features and so on can be useful in negotiating with them.
Here are the two main heuristics of software testing.
1. Visibility
2. Control
Visibility
Visibility is our ability to observe the states and outputs of the software under test. Features to improve the visibility are
· Access to Code
Developers must provide full access (source code, infrastructure, etc) to testers. The Code, change records and design documents should be provided to the testing team. The testing team should read and understand the code.
· Event logging
The events to log include User events, System milestones, Error handling and completed transactions. The logs may be stored in files, ring buffers in memory, and/or serial ports. Things to be logged include description of event, timestamp, subsystem, resource usage and severity of event. Logging should be adjusted by subsystem and type. Log file report internal errors, help in isolating defects, and give useful information about context, tests, customer usage and test coverage.
The more readable the Log Reports are, the easier it becomes to identify the defect cause and work towards corrective measures.
· Error detection mechanisms
Data integrity checking and System level error detection (e.g. Microsoft Appviewer) are useful here. In addition, Assertions and probes with the following features are really helpful
§ Code is added to detect internal errors.
§ Assertions abort on error.
§ Probes log errors.
§ Design by Contract theory---This technique requires that assertions be defined for functions. Preconditions apply to input and violations implicate calling functions while post-conditions apply to outputs and violations implicate called functions. This effectively solves the oracle problem for testing.
· Resource Monitoring
Memory usage should be monitored to find memory leaks. States of running methods, threads or processes should be watched (Profiling interfaces may be used for this.). In addition, the configuration values should be dumped. Resource monitoring is of particular concern in applications where the load on the application in real time is estimated to be considerable.
Control
Control refers to our ability to provide inputs and reach states in the software under test.
The features to improve controllability are:
· Test Points
Allow data to be inspected, inserted or modified at points in the software. It is especially useful for dataflow applications. In addition, a pipe and filters architecture provides many opportunities for test points.
· Custom User Interface controls
Custom UI controls often raise serious testability problems with GUI test drivers. Ensuring testability usually requires:
§ Adding methods to report necessary information
§ Customizing test tools to make use of these methods
§ Getting a tool expert to advise developers on testability and to build the required support.
§ Asking third party control vendors regarding support by test tools.
· Test Interfaces
Interfaces may be provided specifically for testing e.g. Excel and Xconq etc.
Existing interfaces may be able to support significant testing e.g. InstallSheild, AutoCAD, Tivoli, etc.
· Fault injection
Error seeding---instrumenting low level I/O code to simulate errors---makes it much easier to test error handling. It can be handled at both system and application level, Tivoli, etc.
· Installation and setup
Testers should be notified when installation has completed successfully. They should be able to verify installation, programmatically create sample records and run multiple clients, daemons or servers on a single machine.
A BROADER VIEW
Below are given a broader set of characteristics (usually known as James Bach heuristics) that lead to testable software.
Categories of Heuristics of software testing
· Operability
The better it works, the more efficiently it can be tested.
The system should have few bugs, no bugs should block the execution of tests and the product should evolve in functional stages (simultaneous development and testing).
· Observability
What we see is what we test.
§ Distinct output should be generated for each input
§ Current and past system states and variables should be visible during testing
§ All factors affecting the output should be visible.
§ Incorrect output should be easily identified.
§ Source code should be easily accessible.
§ Internal errors should be automatically detected (through self-testing mechanisms) and reported.
· Controllability
The better we control the software, the more the testing process can be automated and optimized.
Check that
§ All outputs can be generated and code can be executed through some combination of input.
§ Software and hardware states can be controlled directly by the test engineer.
§ Inputs and output formats are consistent and structured.
§ Test can be conveniently, specified, automated and reproduced.
· Decomposability
By controlling the scope of testing, we can quickly isolate problems and perform effective and efficient testing.
The software system should be built from independent modules which can be tested independently.
· Simplicity
The less there is to test, the more quickly we can test it.
The points to consider in this regard are functional (e.g. minimum set of features), structural (e.g. architecture is modularized) and code (e.g. a coding standard is adopted) simplicity.
· Stability
The fewer the changes, the fewer are the disruptions to testing.
The changes to software should be infrequent, controlled and not invalidating existing tests. The software should be able to recover well from failures.
· Understandability
The more information we will have, the smarter we will test.
The testers should be able to understand well the design, changes to the design and the dependencies between internal, external and shared components.
Technical documentation should be instantly accessible, accurate, well organized, specific and detailed.
· Suitability
The more we know about the intended use of the software, the better we can organize our testing to find important bugs.
The above heuristics can be used by a software engineer to develop a software configuration (i.e. program, data and documentation) that is convenient to test and verify.
Testability
Software testability is how easily, completely and conveniently a computer program can be tested.
Software engineers design a computer product, system or program keeping in mind the product testability. Good programmers are willing to do things that will help the testing process and a checklist of possible design points, features and so on can be useful in negotiating with them.
Here are the two main heuristics of software testing.
1. Visibility
2. Control
Visibility
Visibility is our ability to observe the states and outputs of the software under test. Features to improve the visibility are
· Access to Code
Developers must provide full access (source code, infrastructure, etc) to testers. The Code, change records and design documents should be provided to the testing team. The testing team should read and understand the code.
· Event logging
The events to log include User events, System milestones, Error handling and completed transactions. The logs may be stored in files, ring buffers in memory, and/or serial ports. Things to be logged include description of event, timestamp, subsystem, resource usage and severity of event. Logging should be adjusted by subsystem and type. Log file report internal errors, help in isolating defects, and give useful information about context, tests, customer usage and test coverage.
The more readable the Log Reports are, the easier it becomes to identify the defect cause and work towards corrective measures.
· Error detection mechanisms
Data integrity checking and System level error detection (e.g. Microsoft Appviewer) are useful here. In addition, Assertions and probes with the following features are really helpful
§ Code is added to detect internal errors.
§ Assertions abort on error.
§ Probes log errors.
§ Design by Contract theory---This technique requires that assertions be defined for functions. Preconditions apply to input and violations implicate calling functions while post-conditions apply to outputs and violations implicate called functions. This effectively solves the oracle problem for testing.
· Resource Monitoring
Memory usage should be monitored to find memory leaks. States of running methods, threads or processes should be watched (Profiling interfaces may be used for this.). In addition, the configuration values should be dumped. Resource monitoring is of particular concern in applications where the load on the application in real time is estimated to be considerable.
Control
Control refers to our ability to provide inputs and reach states in the software under test.
The features to improve controllability are:
· Test Points
Allow data to be inspected, inserted or modified at points in the software. It is especially useful for dataflow applications. In addition, a pipe and filters architecture provides many opportunities for test points.
· Custom User Interface controls
Custom UI controls often raise serious testability problems with GUI test drivers. Ensuring testability usually requires:
§ Adding methods to report necessary information
§ Customizing test tools to make use of these methods
§ Getting a tool expert to advise developers on testability and to build the required support.
§ Asking third party control vendors regarding support by test tools.
· Test Interfaces
Interfaces may be provided specifically for testing e.g. Excel and Xconq etc.
Existing interfaces may be able to support significant testing e.g. InstallSheild, AutoCAD, Tivoli, etc.
· Fault injection
Error seeding---instrumenting low level I/O code to simulate errors---makes it much easier to test error handling. It can be handled at both system and application level, Tivoli, etc.
· Installation and setup
Testers should be notified when installation has completed successfully. They should be able to verify installation, programmatically create sample records and run multiple clients, daemons or servers on a single machine.
A BROADER VIEW
Below are given a broader set of characteristics (usually known as James Bach heuristics) that lead to testable software.
Categories of Heuristics of software testing
· Operability
The better it works, the more efficiently it can be tested.
The system should have few bugs, no bugs should block the execution of tests and the product should evolve in functional stages (simultaneous development and testing).
· Observability
What we see is what we test.
§ Distinct output should be generated for each input
§ Current and past system states and variables should be visible during testing
§ All factors affecting the output should be visible.
§ Incorrect output should be easily identified.
§ Source code should be easily accessible.
§ Internal errors should be automatically detected (through self-testing mechanisms) and reported.
· Controllability
The better we control the software, the more the testing process can be automated and optimized.
Check that
§ All outputs can be generated and code can be executed through some combination of input.
§ Software and hardware states can be controlled directly by the test engineer.
§ Inputs and output formats are consistent and structured.
§ Test can be conveniently, specified, automated and reproduced.
· Decomposability
By controlling the scope of testing, we can quickly isolate problems and perform effective and efficient testing.
The software system should be built from independent modules which can be tested independently.
· Simplicity
The less there is to test, the more quickly we can test it.
The points to consider in this regard are functional (e.g. minimum set of features), structural (e.g. architecture is modularized) and code (e.g. a coding standard is adopted) simplicity.
· Stability
The fewer the changes, the fewer are the disruptions to testing.
The changes to software should be infrequent, controlled and not invalidating existing tests. The software should be able to recover well from failures.
· Understandability
The more information we will have, the smarter we will test.
The testers should be able to understand well the design, changes to the design and the dependencies between internal, external and shared components.
Technical documentation should be instantly accessible, accurate, well organized, specific and detailed.
· Suitability
The more we know about the intended use of the software, the better we can organize our testing to find important bugs.
The above heuristics can be used by a software engineer to develop a software configuration (i.e. program, data and documentation) that is convenient to test and verify.
Types of Software Systems
4. Types of Software Systems
The type of software system refers to the processing that will be performed by that system. This contains the following software system types.
4.1 Batch Systems
The Batch Systems are a set of programs that perform certain activities which do not require any input from the user.
4.2 Event Control Systems
Event Control Systems process real time data to provide the user with results for what command (s) he is given.
For example, when you type on the word document and press Ctrl + S, this tells the computer to save the document. How this is performed instantaneously? These
real time command communications to the computer are provided by the Event Controls that are pre-defined in the system.
4.3 Process Control Systems
There are two or more different systems that communicate to provide the end user a specific utility. When two systems communicate, the co-ordination or data
transfer becomes vital. Process Control Systems are the one’s which receive data from a different system and instructs the system which sent the data to perform
specific tasks based on the reply sent by the system which received the data.
4.4 Procedure Control Systems
Procedure Control Systems are the one’s which control the functions of another system.
4.5 Advanced Mathematical Models
Systems, which make use of heavy mathematics, fall into the category of Mathematical Models. Usually all the computer software make use of mathematics in some
way or the other. But, Advance Mathematical Models can be classified when there is heavy utilization of mathematics for performing certain actions. An example of
Advanced Mathematical Model can be simulation systems which uses graphics and controls the positioning of software on the monitor or Decision and Strategy
making software’s.
4.6 Message Processing Systems
A simple example is the SMS management software used by Mobile operator’s which handle incoming and outgoing messages. Another system, which is
noteworthy is the system used by paging companies.
4.7 Diagnostic Software Systems
The Diagnostic Software System is one that helps in diagnosing the computer hardware components.
When you plug in a new device to your computer and start it, you can see the diagnostic software system doing some work. The “New Hardware Found” dialogue
can be seen as a result of this system. Today, almost all the Operating System’s come packed with Diagnostic Software Systems.
4.8 Sensor and Signal Processing Systems
The message processing systems help in sending and receiving messages. The Sensor and Signal Processing Systems are more complex because these systems make
use of mathematics for signal processing. In a signal processing system the computer receives input in the form of signals and then transforms the signals to a user
understandable output.
4.9 Simulation Systems
A simulation system is a software application, some times used in combination with specialized hardware, which re-creates or simulates the complex behavior of a
system in its real environment. It can be defined in many ways:
"The process of designing a model of a real system and conducting experiments with this model for the purpose of understanding the behavior of the system and/or
evaluating various strategies for the operation of the system"-- Introduction to Simulation Using SIMAN, by C. D. Pegden, R. E. Shannon and R. P. Sadowski,
McGraw-Hill, 1990.
“A simulation is a software package (sometimes bundled with special hardware input devices) that re-creates or simulates, albeit in a simplified manner, a complex
phenomena, environment, or experience, providing the user with the opportunity for some new level of understanding. It is interactive, and usually grounded in some
objective reality. A simulation is based on some underlying computational model of the phenomena, environment, or experience that it is simulating. (In fact, some
authors use model and modeling as synonyms of simulation.)" --Kurt Schumaker, A Taxonomy of Simulation Software." Learning Technology Review.
4.10 Database Management Systems
As the name denotes, the Database Management Systems (DBMS) handles the management of databases. It is basically a collection of programs that enable the
storage, modification and extraction from the Database. The DBMS, as they are often referred to as, can be of various different types ranging from small systems
that run on PC’s to Mainframe’s. The following can be categorized as example of DBMS:
· Computerized Library Systems.
· Automated Teller Machines.
· Passenger Reservation Systems.
· Inventory Systems.
4.11 Data Acquisition
Data Acquisition systems, taken in real time data and store them for future use. A simple example of Data Acquisition system can be a ATC (Air Traffic Control)
Software which takes in real time data of the position and speed of the flight and stores it in compressed form for later use.
4.12 Data Presentation
Data Presentation software stores data and displays the same to the user when required. An example is a Content Management System. You have a web site and
this is in English, you also have your web site in other languages. The user can select the language he wishes to see and the system displays the same web site in the
user chosen language. You develop your web site in various languages and store them on the system. The system displays the required language, the user chooses.
4.13 Decision and Planning Systems
These systems use Artificial Intelligence techniques to provide decision-making solutions to the user.
4.14 Pattern and Image Processing Systems
These systems are used for scanning, storing, modifying and displaying graphic images. The use of such systems is now being increased as research tests are being
conducted in visual modeling and their use in our daily lives is increasing. These systems are used for security requests such as diagnosing photograph, thumb
impression of the visitor etc.
4.15 Computer System Software Systems
These are the normal computer software’s, that can be used for various purposes.
4.16 Software Development Tools
These systems ease the process of Software Development.
The type of software system refers to the processing that will be performed by that system. This contains the following software system types.
4.1 Batch Systems
The Batch Systems are a set of programs that perform certain activities which do not require any input from the user.
4.2 Event Control Systems
Event Control Systems process real time data to provide the user with results for what command (s) he is given.
For example, when you type on the word document and press Ctrl + S, this tells the computer to save the document. How this is performed instantaneously? These
real time command communications to the computer are provided by the Event Controls that are pre-defined in the system.
4.3 Process Control Systems
There are two or more different systems that communicate to provide the end user a specific utility. When two systems communicate, the co-ordination or data
transfer becomes vital. Process Control Systems are the one’s which receive data from a different system and instructs the system which sent the data to perform
specific tasks based on the reply sent by the system which received the data.
4.4 Procedure Control Systems
Procedure Control Systems are the one’s which control the functions of another system.
4.5 Advanced Mathematical Models
Systems, which make use of heavy mathematics, fall into the category of Mathematical Models. Usually all the computer software make use of mathematics in some
way or the other. But, Advance Mathematical Models can be classified when there is heavy utilization of mathematics for performing certain actions. An example of
Advanced Mathematical Model can be simulation systems which uses graphics and controls the positioning of software on the monitor or Decision and Strategy
making software’s.
4.6 Message Processing Systems
A simple example is the SMS management software used by Mobile operator’s which handle incoming and outgoing messages. Another system, which is
noteworthy is the system used by paging companies.
4.7 Diagnostic Software Systems
The Diagnostic Software System is one that helps in diagnosing the computer hardware components.
When you plug in a new device to your computer and start it, you can see the diagnostic software system doing some work. The “New Hardware Found” dialogue
can be seen as a result of this system. Today, almost all the Operating System’s come packed with Diagnostic Software Systems.
4.8 Sensor and Signal Processing Systems
The message processing systems help in sending and receiving messages. The Sensor and Signal Processing Systems are more complex because these systems make
use of mathematics for signal processing. In a signal processing system the computer receives input in the form of signals and then transforms the signals to a user
understandable output.
4.9 Simulation Systems
A simulation system is a software application, some times used in combination with specialized hardware, which re-creates or simulates the complex behavior of a
system in its real environment. It can be defined in many ways:
"The process of designing a model of a real system and conducting experiments with this model for the purpose of understanding the behavior of the system and/or
evaluating various strategies for the operation of the system"-- Introduction to Simulation Using SIMAN, by C. D. Pegden, R. E. Shannon and R. P. Sadowski,
McGraw-Hill, 1990.
“A simulation is a software package (sometimes bundled with special hardware input devices) that re-creates or simulates, albeit in a simplified manner, a complex
phenomena, environment, or experience, providing the user with the opportunity for some new level of understanding. It is interactive, and usually grounded in some
objective reality. A simulation is based on some underlying computational model of the phenomena, environment, or experience that it is simulating. (In fact, some
authors use model and modeling as synonyms of simulation.)" --Kurt Schumaker, A Taxonomy of Simulation Software." Learning Technology Review.
4.10 Database Management Systems
As the name denotes, the Database Management Systems (DBMS) handles the management of databases. It is basically a collection of programs that enable the
storage, modification and extraction from the Database. The DBMS, as they are often referred to as, can be of various different types ranging from small systems
that run on PC’s to Mainframe’s. The following can be categorized as example of DBMS:
· Computerized Library Systems.
· Automated Teller Machines.
· Passenger Reservation Systems.
· Inventory Systems.
4.11 Data Acquisition
Data Acquisition systems, taken in real time data and store them for future use. A simple example of Data Acquisition system can be a ATC (Air Traffic Control)
Software which takes in real time data of the position and speed of the flight and stores it in compressed form for later use.
4.12 Data Presentation
Data Presentation software stores data and displays the same to the user when required. An example is a Content Management System. You have a web site and
this is in English, you also have your web site in other languages. The user can select the language he wishes to see and the system displays the same web site in the
user chosen language. You develop your web site in various languages and store them on the system. The system displays the required language, the user chooses.
4.13 Decision and Planning Systems
These systems use Artificial Intelligence techniques to provide decision-making solutions to the user.
4.14 Pattern and Image Processing Systems
These systems are used for scanning, storing, modifying and displaying graphic images. The use of such systems is now being increased as research tests are being
conducted in visual modeling and their use in our daily lives is increasing. These systems are used for security requests such as diagnosing photograph, thumb
impression of the visitor etc.
4.15 Computer System Software Systems
These are the normal computer software’s, that can be used for various purposes.
4.16 Software Development Tools
These systems ease the process of Software Development.
Types of Development Systems
3. Types of Development Systems
The type of development project refers to the environment/methodology in which the software will be developed. Different testing approaches need to be used for
different types of projects, just as different development approaches.
3.1 Traditional Development Systems
The Traditional Development System has the following characteristics:
· The traditional development system uses a system development methodology.
· The user knows what the customer requires (Requirements are clear from the customer).
· The development system determines the structure of the application.
What do you do while testing:
· Testing happens at the end of each phase of development.
· Testing should concentrate if the requirements match the development.
· Functional testing is required.
3.2 Iterative Development
During the Iterative Development:
· The requirements are not clear from the user (customer).
· The structure of the software is pre-determined.
Testing of Iterative Development projects should concentrate only if the CASE (Computer Aided Software Engineering) tools are properly utilized and the
functionality is thoroughly tested.
3.3 Maintenance System
The Maintenance System is where the structure of the program undergoes changes. The system is developed and being used, but it demands changes in the
functional aspects of the system due to various reasons.
Testing Maintenance Systems requires structural testing. Top priority should be put into Regression Testing.
3.4 Purchased/Contracted Software
At times it may be required that you purchase software to integrate with your product or outsource the development of certain components of your product. This is
Purchased or Contracted Software.
When you need to integrate third party software to your existing software, this demands the testing of the purchased software with your requirements. Since the two
systems are designed and developed differently, the integration takes the top priority during testing. Also, Regression Testing of the integrated software is a must to
cross check if the two software’s are working as per the requirements.
The type of development project refers to the environment/methodology in which the software will be developed. Different testing approaches need to be used for
different types of projects, just as different development approaches.
3.1 Traditional Development Systems
The Traditional Development System has the following characteristics:
· The traditional development system uses a system development methodology.
· The user knows what the customer requires (Requirements are clear from the customer).
· The development system determines the structure of the application.
What do you do while testing:
· Testing happens at the end of each phase of development.
· Testing should concentrate if the requirements match the development.
· Functional testing is required.
3.2 Iterative Development
During the Iterative Development:
· The requirements are not clear from the user (customer).
· The structure of the software is pre-determined.
Testing of Iterative Development projects should concentrate only if the CASE (Computer Aided Software Engineering) tools are properly utilized and the
functionality is thoroughly tested.
3.3 Maintenance System
The Maintenance System is where the structure of the program undergoes changes. The system is developed and being used, but it demands changes in the
functional aspects of the system due to various reasons.
Testing Maintenance Systems requires structural testing. Top priority should be put into Regression Testing.
3.4 Purchased/Contracted Software
At times it may be required that you purchase software to integrate with your product or outsource the development of certain components of your product. This is
Purchased or Contracted Software.
When you need to integrate third party software to your existing software, this demands the testing of the purchased software with your requirements. Since the two
systems are designed and developed differently, the integration takes the top priority during testing. Also, Regression Testing of the integrated software is a must to
cross check if the two software’s are working as per the requirements.
Process of Developing Project in the Software Company
Software Testing Concepts (Manual Testing)
Definitions
Project : It is something developed based on a particular customer requirement and used by that particular customer only.
Product: Product is some thing that is developed based on the company’s specifications and used by multiple customers.
Quality: Quality is defined as not only the justification of the requirement but also the present of value (user friendly).
Defect: Defect is defined as deviation from the requirements.
Testing: Testing is a process in which the defects are identified, isolated (separated), subjected (sending) for rectification and ensured that the product is defect free in order
to produce a quality product in the end and hence customer satisfaction.
(Or)
Testing is the process of executing a program with the intent of finding errors.
(Or)
Verifying and validating the application with respect to customer requirements.
(Or)
Finding the differences between customer expected and actual values.
(Or)
Testing should also ensure that a quality product is delivered to the customer.
Process of Developing Project in the Software Company.
BIDDING THE PROJECT : Bidding the project is defined as request for proposal, estimation and signoff.
KICK OF MEETING:
It is a initial meeting conducted in the software company soon after the project is signed off in order to discus the over view of the project and to select a project
manager for the project.
Usually High Level Manager, Project Manager, Technical Manager, Quality Managers, Test leads and Project leads will be involved in this meeting.
PIN (Project Initiation Note)
PIN is a mail prepaid by the project manager and send to the CEO of the software company in order to get the permission to start the project development.
Definitions
Project : It is something developed based on a particular customer requirement and used by that particular customer only.
Product: Product is some thing that is developed based on the company’s specifications and used by multiple customers.
Quality: Quality is defined as not only the justification of the requirement but also the present of value (user friendly).
Defect: Defect is defined as deviation from the requirements.
Testing: Testing is a process in which the defects are identified, isolated (separated), subjected (sending) for rectification and ensured that the product is defect free in order
to produce a quality product in the end and hence customer satisfaction.
(Or)
Testing is the process of executing a program with the intent of finding errors.
(Or)
Verifying and validating the application with respect to customer requirements.
(Or)
Finding the differences between customer expected and actual values.
(Or)
Testing should also ensure that a quality product is delivered to the customer.
Process of Developing Project in the Software Company.
BIDDING THE PROJECT : Bidding the project is defined as request for proposal, estimation and signoff.
KICK OF MEETING:
It is a initial meeting conducted in the software company soon after the project is signed off in order to discus the over view of the project and to select a project
manager for the project.
Usually High Level Manager, Project Manager, Technical Manager, Quality Managers, Test leads and Project leads will be involved in this meeting.
PIN (Project Initiation Note)
PIN is a mail prepaid by the project manager and send to the CEO of the software company in order to get the permission to start the project development.
Labels:
Manual Tesing Basic
MY First Testing Post is- What is Software Testing and Why is it Important?
A brief history of Software engineering and the SDLC.
The software industry has evolved through 4 eras, 50’s –60’s, mid 60’s –late 70’s, mid 70’s- mid 80’s, and mid 80’s-present. Each era has its own distinctive
characteristics, but over the years the software’s have increased in size and complexity. Several problems are common to almost all of the eras and are discussed
below.
The Software Crisis dates back to the 1960’s when the primary reasons for this situation were less than acceptable software engineering practices. In the early
stages of software there was a lot of interest in computers, a lot of code written but no established standards. Then in early 70’s a lot of computer programs started
failing and people lost confidence and thus an industry crisis was declared. Various reasons leading to the crisis included:
q Hardware advances outpacing the ability to build software for this hardware.
q The ability to build in pace with the demands.
q Increasing dependency on software’s
q Struggle to build reliable and high quality software
q Poor design and inadequate resources.
This crisis though identified in the early years, exists to date and we have examples of software failures around the world. Software is basically considered a failure if
the project is terminated because of costs or overrun schedules, if the project has experienced overruns in excess of 50% of the original or if the software results in
client lawsuits. Some examples of failures include failure of Air traffic control systems, failure of medical software, and failure in telecommunication software. The
primary reason for these failures other than those mentioned above is due to bad software engineering practices adopted. Some of the worst software practices
include:
q No historical software-measurement data.
q Rejection of accurate cost estimates.
q Failure to use automated estimating and planning tools.
q Excessive, irrational schedule pressure and creep in user requirements.
q Failure to monitor progress and to perform risk management.
q Failure to use design reviews and code inspections.
To avoid these failures and thus improve the record, what is needed is a better understanding of the process, better estimation techniques for cost time and quality
measures. But the question is what a process is? Process transform inputs to outputs i.e. a product. A software process is a set of activities, methods and practices
involving transformation that people use to develop and maintain software.
At present a large number of problems exist due to a chaotic software process and the occasional success depends on individual efforts. Therefore to be able to
deliver successful software projects, a focus on the process is essential since a focus on the product alone is likely to miss the scalability issues and improvements in
the existing system. This focus would help in the predictability of outcomes, project trends, and project characteristics.
The process that has been defined and adopted needs to be managed well and thus process management comes into play. Process management is concerned with
the knowledge and management of the software process, its technical aspects and also ensures that the processes are being followed as expected and improvements
are shown.
From this we conclude that a set of defined processes can possibly save us from software project failures. But it is nonetheless important to note that the process
alone cannot help us avoid all the problems, because with varying circumstances the need varies and the process has to be adaptive to these varying needs.
Importance needs to be given to the human aspect of software development since that alone can have a lot of impact on the results, and effective cost and time
estimations may go totally waste if the human resources are not planned and managed effectively. Secondly, the reasons mentioned related to the software
engineering principles may be resolved when the needs are correctly identified. Correct identification would then make it easier to identify the best practices that can
be applied because one process that might be suitable for one organization may not be most suitable for another.
Therefore to make a successful product a combination of Process and Technicalities will be required under the umbrella of a well-defined process.
Having talked about the Software process overall, it is important to identify and relate the role software testing plays not only in producing quality software but also
maneuvering the overall process.
The computer society defines testing as follows: “Testing -- A verification method that applies a controlled set of conditions and stimuli for the purpose of finding
errors. This is the most desirable method of verifying the functional and performance requirements. Test results are documented proof that requirements were met
and can be repeated. The resulting data can be reviewed by all concerned for confirmation of capabilities.”
There may be many definitions of software testing and many which appeal to us from time to time, but its best to start by defining testing and then move on depending
on the requirements or needs.
Many Definitions are:
"Testing is the process of executing the software components or a program with th intend of finding errors."
"Testing is a process used to help identify the correctness, completeness and quality of developed computer software."
The software industry has evolved through 4 eras, 50’s –60’s, mid 60’s –late 70’s, mid 70’s- mid 80’s, and mid 80’s-present. Each era has its own distinctive
characteristics, but over the years the software’s have increased in size and complexity. Several problems are common to almost all of the eras and are discussed
below.
The Software Crisis dates back to the 1960’s when the primary reasons for this situation were less than acceptable software engineering practices. In the early
stages of software there was a lot of interest in computers, a lot of code written but no established standards. Then in early 70’s a lot of computer programs started
failing and people lost confidence and thus an industry crisis was declared. Various reasons leading to the crisis included:
q Hardware advances outpacing the ability to build software for this hardware.
q The ability to build in pace with the demands.
q Increasing dependency on software’s
q Struggle to build reliable and high quality software
q Poor design and inadequate resources.
This crisis though identified in the early years, exists to date and we have examples of software failures around the world. Software is basically considered a failure if
the project is terminated because of costs or overrun schedules, if the project has experienced overruns in excess of 50% of the original or if the software results in
client lawsuits. Some examples of failures include failure of Air traffic control systems, failure of medical software, and failure in telecommunication software. The
primary reason for these failures other than those mentioned above is due to bad software engineering practices adopted. Some of the worst software practices
include:
q No historical software-measurement data.
q Rejection of accurate cost estimates.
q Failure to use automated estimating and planning tools.
q Excessive, irrational schedule pressure and creep in user requirements.
q Failure to monitor progress and to perform risk management.
q Failure to use design reviews and code inspections.
To avoid these failures and thus improve the record, what is needed is a better understanding of the process, better estimation techniques for cost time and quality
measures. But the question is what a process is? Process transform inputs to outputs i.e. a product. A software process is a set of activities, methods and practices
involving transformation that people use to develop and maintain software.
At present a large number of problems exist due to a chaotic software process and the occasional success depends on individual efforts. Therefore to be able to
deliver successful software projects, a focus on the process is essential since a focus on the product alone is likely to miss the scalability issues and improvements in
the existing system. This focus would help in the predictability of outcomes, project trends, and project characteristics.
The process that has been defined and adopted needs to be managed well and thus process management comes into play. Process management is concerned with
the knowledge and management of the software process, its technical aspects and also ensures that the processes are being followed as expected and improvements
are shown.
From this we conclude that a set of defined processes can possibly save us from software project failures. But it is nonetheless important to note that the process
alone cannot help us avoid all the problems, because with varying circumstances the need varies and the process has to be adaptive to these varying needs.
Importance needs to be given to the human aspect of software development since that alone can have a lot of impact on the results, and effective cost and time
estimations may go totally waste if the human resources are not planned and managed effectively. Secondly, the reasons mentioned related to the software
engineering principles may be resolved when the needs are correctly identified. Correct identification would then make it easier to identify the best practices that can
be applied because one process that might be suitable for one organization may not be most suitable for another.
Therefore to make a successful product a combination of Process and Technicalities will be required under the umbrella of a well-defined process.
Having talked about the Software process overall, it is important to identify and relate the role software testing plays not only in producing quality software but also
maneuvering the overall process.
The computer society defines testing as follows: “Testing -- A verification method that applies a controlled set of conditions and stimuli for the purpose of finding
errors. This is the most desirable method of verifying the functional and performance requirements. Test results are documented proof that requirements were met
and can be repeated. The resulting data can be reviewed by all concerned for confirmation of capabilities.”
There may be many definitions of software testing and many which appeal to us from time to time, but its best to start by defining testing and then move on depending
on the requirements or needs.
Many Definitions are:
"Testing is the process of executing the software components or a program with th intend of finding errors."
"Testing is a process used to help identify the correctness, completeness and quality of developed computer software."
Labels:
Manual Tesing Basic
Subscribe to:
Posts (Atom)