Software Testing and Quality Assurance.docx (1)
Software Testing and Quality Assurance.docx (1)
Conditions demand software development staff with interest and training in the areas of
software product and process quality. Highly qualified staff make sure that software
products are built on time, within budget, and are of the highest quality.
The education and training of engineers in each engineering discipline is based on the
teaching of related scientific principles as shown in Figure 1.1.
A joint task force has been formed to define a body of knowledge that covers the
software engineering discipline, to discuss the nature of education for this new
profession and to define a code of ethics for the software engineering discipline. The
members of the joint task force are IEEE Computer Society and the Association of
Computing Machinery (ACM).
A test specialist is one whose education is based on the principles, practices and
processes that constitute the software engineering discipline and whose specific focus
is on one area of that discipline, software testing.
A test specialist who is trained as an engineer should have knowledge on the following
· Processes,
· Measurements,
· Standards,
· Plans,
Testing concepts, are not an isolated collection of technical and managerial activities, it
should be integrated within the context of a quality testing process. It grows in
competency and uses engineering principles to guide improvement growth.
· Project Planning
· Requirements Management
· Designed
· Implemented
· Evaluated
· Maintained
Testing as a process
The software development process is described as a series of phases, procedures and steps
that result in the production of software products, embedded within the software development
process are several other processes including testing.
Validation is the process of evaluating a software system or components during or at the end of
the development cycle in order to determine whether it satisfies specified requirements.
Validation is usually associated with traditionally execution-based testing, that is, exercising the
code with test cases.
Testing covers both validation and verification activities. Testing includes the
following,
· Technical reviews,
· Test planning,
· Test tracking,
· Unit test,
· Integration test,
· System test,
· Usability test.
· Security,
· Usability, and
· Correctness.
The debugging process begins after testing has been carried out and the tester has
noted that the software is not behaving as specified.
Testing has economic, technical and managerial aspects. Testing must be managed.
Organizational policy for testing must be defined and documented.
Basic Definitions
Many of the definitions generally used in testing are based on the terms described in the IEEE
Standards Collection for Software Engineering. The standards collection includes the IEEE
Standard Glossary of Software Engineering Terminology, which is a dictionary of software
engineering vocabulary.
Errors
An error is a mistake, misconception, or misunderstanding on the part of a software developer.
Faults (Defects)
A fault (defect) is introduced into the software as the result of an error. It is an irregularity in the
software that may cause it to behave incorrectly, and not according to its specification.
Failures
A failure is the inability of a software system or component to perform its required functions
within specified performance requirements.
Test Cases
To detect defects in a piece of software the tester selects a set of input data and then executes
the software with the input data under a particular set of conditions.
1. A set of test inputs. These are data items received from an external source
by the code under test. The external source can be hardware, software, or
human.
2. Execution conditions. These are conditions required for running the test, for
example, a certain state of a database, or a configuration of a hardware device.
Test
A test is a group of related test cases, or a group of related test cases and test procedures.
Test Oracle
A test oracle is a document, or piece of software that allows testers to determine whether a test
has been passed or failed.
Test Bed
A test bed is an environment that contains all the hardware and software needed to test a
software component or a software system.
Software Quality
Software quality can either be defined as
Metric
A metric is a quantitative measure of the degree to which a system, system component, or
process has a given attribute
Quality Metric
A quality metric is a quantitative measurement of the degree to which an item possesses a
given quality attribute. Some examples of quality metric are,
Reviews
A review is a group meeting whose purpose is to evaluate a software artifact or a set of software
artifacts.
In the software domain, principles may also refer to rules or codes of conduct relating to
professionals who design, develop, test, and maintain software systems. The following
are a set of testing principles,
The term “software component” means any unit of software ranging in size and
complexity from an individual procedure or method, to an entire software system.
The term “defects” represents any deviations in the software that have a negative
impact on its functionality, performance, reliability, security, and/or any other of its
specified quality attributes.
Principle 2. When the test objective is to detect defects, then a good test case is one
that has a high probability of revealing a yet undetected defects.
Testers must carry out testing in the same way as scientists carry out experiments.
Testers need to create a hypothesis and work towards proving or disproving it, it means
he/she must prove the presence or absence or a particular type of defect.
Testers need to carefully inspect and interpret test results. Several erroneous and costly
scenarios may occur if care is not taken.
A failure may be overlooked, and the test may be granted a “pass” status when in reality
the software has failed the test. Testing may continue based on erroneous test results.
The defect may be revealed at some later stage of testing, but in that case it may be
more costly and difficult to locate and repair.
The test case is of no value unless there is an explicit statement of the expected outputs
or results. Expected outputs allow the tester to determine
It is very important to have a correct statement of the output so that time is not spent
due to misconceptions about the outcome of a test. The specification of test inputs and
outputs should be part of test design activities.
Principle 5. Test cases should be developed for both valid and invalid input conditions.
A tester must not assume that the software under test will always be provided with valid
inputs. Inputs may be incorrect for several reasons.
Software users may have misunderstandings, or lack information about the nature of
the inputs. They often make typographical errors even when complete/correct
information is available. Devices may also provide invalid inputs due to erroneous
conditions and malfunctions.
The higher the number of defects already detected in a component, the more likely it is
to have additional defects when it undergoes further testing.
If there are two components A and B, and testers have found 20 defects in A and 3
defects in B, then the probability of the existence of additional defects in A is higher than
B.
This principle is true for psychological as well as practical reasons. It is difficult for a
developer to admit that software he/she has created and developed can be faulty.
Testers must realize that
· Developers have a great pride in their work,
The tester needs to record the exact conditions of the test, any special events that
occurred, equipment used, and a carefully note the results. This information is very
useful to the developers when the code is returned for debugging so that they can
duplicate test conditions. It is also useful for tests that need to be repeated after defect
repair.
Test plans should be developed for each level of testing. The objective for each level
should be described in the associated plan. The objectives should be stated as
quantitatively as possible.
Principle 10. Testing activities should be integrated into the software life cycle.
Testing activity should be integrated into the software life cycle starting as early as in the
requirements analysis phase, and continue on throughout the software life cycle in
parallel with development activities.
· A tester needs to reason like a scientist and make hypotheses that relate
to presence of specific types of defects.
· A tester needs to have a good understanding of the problem domain of
the software that he/she is testing. Familiarly with a domain may come from
educational, training, and work related experiences.
· A tester needs to create and document test cases. To design the test
cases the tester must select inputs often from a very wide domain. The
selected test cases should have the highest probability of revealing a defect.
Familiarly with the domain is essential.
· A tester needs to design and record test procedures for running the tests.
· A tester needs to analyse test results and decide on success or failure for
a test. This involves understanding and keeping track of huge amount of
detailed information.
· A tester needs to learn to use tools and keep updated of the newest test
tools.
· Reveal defects,
It is difficult for developers to effectively test their own code. A tester needs very good
programming experience in order to understand how code is constructed, and to know
where and what types of, defects could occur.
A tester should work with the developers to produce high-quality software that meets
the customers’ requirements.
Teams of testers and developers are very common in industry, and projects should have
a correct developer/tester ratio. The ratio will vary depending on
· Available resources,
· Type of project,
· TMM level.
· Project Schedules
A testers also need to work with requirements engineers to make sure that
requirements are testable, and to plan for system and acceptance test.
Testers also need to work with designers to plan for integration and unit test.
· Testing standards,
· Polices,
· Goals.
Testers also need to cooperate with software quality assurance staff and software
engineering process group members.
Testers are a part of the development group. They concentrate on testing. They may be
part of the software quality assurance group. Testers are specialists, their main function
is to plan, execute, record, and analyse tests. They do not debug software. When
defects are detected during testing, software should be returned to the developers.
The developers locate the defect and repair the code. The developers have a detailed
understanding of the code, and they can perform debugging better.
Testers need the support of management. Testers ensure that developers release code
with few or no defects, and that marketers can deliver software that satisfies the
customers’ requirements, and is reliable, usable, and correct.
Origins of defects
Origins of Defects
Defects have negative effects on software users. Software engineers work very hard to produce
high-quality software with a low number of defects.
1. Education: The software engineer did not have the proper educational
background to prepare the software artifact.
4. Transcription: The software engineer knows what to do, but makes a mistake in
doing it.
5. Process: The process used by the software engineer misdirected his/her actions.
The impact of defect on the user ranges from a minor inconvenience to rendering the software
unfit for use. Testers have to discover these defects before the software is in operation. The
results of the tests are analysed to determine whether the software has behaved correctly.
In this scenario a tester develops hypotheses about possible defects. Test cases are then
designed based on the hypotheses. The hypotheses are used to,
1. Fault Model
REPORT THIS AD
A fault (defect) model can be described as a link between the error made, and the fault/defect in
the software.
2. Defect Repository
To increase the effectiveness of their testing and debugging processes, software organizations
need to initiate the creation of a defect database, or defect repository. The defect repository
supports storage and retrieval of defect data from all projects in a centrally accessible location.
Some defects will fit into more than one class or category. Because of this problem, developers,
testers, and SQA staff should try to be as consistent as possible when recording defect data.
The defect types and frequency of occurrence should be used in test planning, and test design.
Execution-based testing strategies should be selected that have the strongest possibility of
detecting particular types of defects. The four classes of defects are as follows,
· Design defects,
· Code defects,
· Testing defects
· Ambiguous,
· Contradictory,
· Unclear,
· Redundant,
· Imprecise.
2. Design Defects
Design defects occur when the following are incorrectly designed,
· System components,
It includes defects in the design of algorithms, control, logic, data elements, module interface
descriptions, and external software/hardware/user interface descriptions. The design defects
are,
3. Coding Defects
Coding defects are derived from errors in implementing the code. Coding defects classes are
similar to design defect classes. Some coding defects come from a failure to understand
programming language constructs, and miscommunication with the designers.
· Precision loss,
· System calls,
· Links to databases,
· Input/output sequences,
· Memory usage,
· Resource usage,
· Protocols,
· Formats,
· Timing sequences.
4. Testing Defects
Test plans, test cases, test harnesses, and test procedures can also contain defects. These
defects are called testing defects. Defects in test plans are best detected using review
techniques.
Forms and templates should be designed to collect the data. Each defect and frequency
of occurrence must be recorded after testing.
Defect monitoring should be done for each on-going project. The distribution of defects
will change when changes are made to the process.
Figure 1.5 The Defect Repository and Support for TMM Maturity Goals
The defect data is useful for test planning. It is a TMM level 2 maturity goal. It helps a
tester to select applicable testing techniques, design the test cases, and allocate the
amount of resources needed to detect and remove defects. This allows tester to
estimate testing schedules and costs.
The defect data can support debugging activities also. A defect repository can help in
implementing several TMM maturity goals including
· Test measurement,
Using White Box Approach to Test design– Static Testing Vs. Structural
Testing, Code Functional Testing, Coverage and Control Flow Graphs,
Using Black Box Approaches to Test Case Design, Random Testing,
Requirements based testing, Decision tables, State-based testing,
Cause-effect graphing, Error guessing, Compatibility testing, Levels of
Testing -Unit Testing, Integration Testing, Defect Bash Elimination. System
Testing - Usability and Accessibility Testing, Configuration Testing,
Compatibility Testing.
The first thing a tester will often do is learn and understand the source
code of the application. Since white box testing involves the testing of
the inner workings of an application, the tester must be very
knowledgeable in the programming languages used in the applications
they are testing. Also, the testing person must be highly aware of secure
coding practices. Security is often one of the primary objectives of
testing software. The tester should be able to find security issues and
prevent attacks from hackers and naive users who might inject
malicious code into the application either knowingly or unknowingly.
● A = 1, B = 1
● A = -1, B = -3
● Statement Coverage
● Decision Coverage
● Branch Coverage
● Condition Coverage
● Multiple Condition Coverage
● Finite State Machine Coverage
● Path Coverage
● Control flow testing
● Data flow testing
● EclEmma
● NUnit
● PyUnit
● HTMLUnit
● CppUnit
Conclusion:
Types of Reviews:
The types of reviews can be given by a simple diagram:
Branch Testing = (Number of decisions outcomes tested / Total Number of decision Outcomes)
x 100 %
Path Coverage = (Number paths exercised / Total Number of paths in the program) x 100 %
Functional Testing
Before proceeding to functional testing, we should know about the testing,
what testing is?
What is testing?
In simple terms, the testing is to compare the actual result with the
expected result. Testing is done to identify whether all the function is
working as expectations.
Software testing ensures that the application has not any defect or the
requirement is missing to the actual need. Either manual or automation
testing can do software testing.
Software testing also defines as verification of application under test (AUT).
Functional Testing:
It is a type of software testing which is used to verify the functionality of
the software application, whether the function is working according to the
requirement specification. In functional testing, each function tested by
giving the value, determining the output, and verifying the actual output
with the expected value. Functional testing performed as black-box testing
which is presented to confirm that the functionality of an application or
system behaves as we are expecting. It is done to verify the functionality of
the application.
● Functional testing can miss a critical and logical error in the system.
● This testing is not a guarantee of the software to go live.
● The possibility of conducting redundant testing is high in functional
testing.
Conclusion
Black box testing helps to find the gaps in functionality, usability, and
other features. This form of testing gives an overview of software
performance and its output. It improves software quality and reduces the
time to market. This form of testing mitigates the risk of software failures
at the user’s end.
Username (T/F) F T F T
Password (T/F) F F T T
Output (E/H) E E E H
Legend:
● T – Correct username/password
● F – Wrong username/password
● E – Error message is displayed
● H – Home screen is displayed
Interpretation:
● Case 1 – Username and password both were wrong. The user is shown
an error message.
● Case 2 – Username was correct, but the password was wrong. The
user is shown an error message.
● Case 3 – Username was wrong, but the password was correct. The
user is shown an error message.
● Case 4 – Username and password both were correct, and the user
navigated to the homepage
Templates
You use templates to modify decision table values in the business process rules
manager. The templates are designed in IBM® Integration Designer and
contained in the business rule definition. The templates determine which
aspects of a decision table you can modify and provide a list of valid values to
choose from. You create new rows or columns in the table or new actions
based on the templates defined for that decision table, and you modify existing
conditions or actions that were created with the template. Decision table
templates are not shared between decision tables.
Decision tables support the use of an initialization action rule, which runs
before the decision table is started and allows for preprocessing, such as for
creating business objects or setting initial values. You can modify an
initialization action rule in the business process rules manager, provided that
the business rule definition was designed in IBM Integration Designer with an
initialization action.
Although only one initialization action rule can be created from a single
template, the action rule can have multiple action expressions in it, so it can
perform multiple actions. If an initialization rule template is defined for a
particular decision table, it can only be used in that table.
Otherwise conditions
The otherwise condition will only display in the business process rules
manager if it is included in the decision table definition that was designed in
IBM Integration Designer. You cannot add or remove it dynamically in the
business process rules manager.
However, you can incorporate actions defined with templates for the otherwise
condition. The otherwise condition can be used zero or one time for any
condition being checked.
The following figure shows a decision table with an initialization action rule that sets
the default member type to Silver) and otherwise conditions that apply to gold and
silver customers spending less than $500. The conditions PurchaseAmount and
MemberType are along the first and second rows, and the action Discount is along
the third row. The orientation of conditions and actions is shown by arrows.
Figure 1. Decision table
The example shows that gold customers spending $500 - $1999 get an 8%
discount while silver customers spending $500 - $2000 get a 3% discount.
Gold customers spending $2000 or more get a 10% discount while silver
customers spending $2000 or more get a 5% discount. Gold customers
spending less than $500 get a 2% discount while silver customers spending
less than $500 get a 0% discount.
Six-Sigma-
Six Sigma
Six Sigma is the process of improving the quality of the output by identifying and
eliminating the cause of defects and reduce variability in manufacturing and business
processes. The maturity of a manufacturing process can be defined by a sigma rating
indicating its percentage of defect-free products it creates. A six sigma method is one in
which 99.99966% of all the opportunities to produce some features of a component are
statistically expected to be free of defects (3.4 defective features per million
opportunities).
History of Six Sigma
Six-Sigma is a set of methods and tools for process improvement. It was introduced by
Engineer Sir Bill Smith while working at Motorola in 1986. In the 1980s, Motorola was
developing Quasar televisions which were famous, but the time there was lots of
defects which came up on that due to picture quality and sound variations.
By using the same raw material, machinery and workforce a Japanese form took over
Quasar television production, and within a few months, they produce Quasar TV's sets
which have fewer errors. This was obtained by improving management techniques.
Six Sigma was adopted by Bob Galvin, the CEO of Motorola in 1986 and registered as a
Motorola Trademark on December 28, 1993, then it became a quality leader.
3. Fact and Data-Based Approach: The statistical and methodical aspect of Six
Sigma shows the scientific basis of the technique. This accentuates essential
elements of the Six Sigma that is a fact and data-based.
4. Project and Objective-Based Focus: The Six Sigma process is implemented for
an organization's project tailored to its specification and requirements. The
process is flexed to suits the requirements and conditions in which the projects
are operating to get the best results.
5. Customer Focus: The customer focus is fundamental to the Six Sigma approach.
The quality improvement and control standards are based on specific customer
requirements.
2. DMADV
DMAIC
5. Control: It covers process control planning, using SPC for operational control and
PRE-Control.
DMADV
It specifies a data-driven quality strategy for designing products and processes. This
method is used to create new product designs or process designs in such a way that it
results in a more predictable, mature, and detect free performance.
5. Verify: It can verify the design performance and ability to meet customer needs.
What is Quality?
Quality is defined as the product or services that should be "fit for use and
purpose."
What is Assurance?
Assurance is a positive declaration on a product or service. It is all about
the product which should work well. It provides a guarantee which would
work without any problem according to expectations and requirements.
1. Functionality
2. Reliability
3. Usability
4. Efficiency
The efficiency of the software is dependent on the architecture and coding
practice followed during development.
5. Maintainability
6. Portability
1. Pre-project Plan
Pre-project Plan ensures that the resources required for project, schedule,
and budget should be clearly defined. Plan for development and ensuring
quality has been determined.
The main aim of this class of components is to initiate and support the
implementation of Software Quality Assurance components, identify any
deviations from the predefined Software Quality Assurance procedures,
methods, and recommended improvements. The Software Quality
Assurance organizational team includes test managers, testers, SQA unit
SQA committee, and SQA forum members.
1. Predictability
Software quality drives predictability. Do it once and do it right, and there
overall. Products get delivered on time, and they get built more
product increases.
2. Reputation
Some companies have a reputation for building quality software. It
becomes who they are, a part of their brand, and ultimately it is the
expectation people have of them. Customers seek them out because of it. A
good, solid reputation is hard to establish and easy to lose, but when your
company has it, it’s a powerful business driver. A few mistakes and that
3. Employee Morale
The most productive and happy employees have pride in their work.
Enabling employees to build quality software will drive a much higher level
workforce.
4. Customer Satisfaction
A quality product satisfies the customer. A satisfied customer comes back
for more and provides positive referrals. Customer loyalty is heavily driven
by the quality of the software you produce and service you provide. And,
let’s not forget that with the explosion of social media channels such as
Twitter and Facebook, positive referrals can spread quickly. Of course that
5. Bottom Line
It all drives the bottom line. Predictable and productive performance, a
In software, a quality assurance plan is the set of procedures, tools, and techniques
that testers can use to ensure that an app or service meets the software requirements.
● Purpose: Defines the reasoning behind the document, the scope of the testing,
and what stages of the software lifecycle it covers.
● Reference: Any references or other materials used to create this plan can go in
here.
● Management: In this section, outline (broadly) the organizational structure and
personnel necessary to implement the quality assurance plan.
● Problem Reporting: Define what happens when testers encounter issues (are
they tracked as bugs, is it an email that gets sent, or does the tester report it in
some other manner?).
● Tools, Technologies, and Methodologies: What will the testers use to carry out
the plan?
● Code Control: How will this plan ensure that harmful code doesn’t make it to
production (perhaps the testers check it out on an integration system before
pushing it to prod).
● Records Maintenance: What records will testers maintain, and will they ever
destroy them? This section is often critical for government software quality
assurance plans.
● Testing Methodology: What methods will the testers themselves employ? Will
they run through a rubric of test cases once a day? Or will they perform
continuous testing on the prod system?
The idea is to outlay a comprehensive set of rules and procedures that will ensure all
the code written, checked in, and the resulting systems are of the highest quality.
Difference between Product and Process:-
5. The main goal of the product is While the purpose of the process is to
to complete the work make the quality of the project better.
successfully.
Project requirements
Before you choose a model, take some time to go through the project requirements
and clarify them alongside your organization’s or team’s expectations. Will the user
need to specify requirements in detail after each iterative session? Will the
requirements change during the development process?
Project size
Consider the size of the project you will be working on. Larger projects mean bigger
teams, so you’ll need more extensive and elaborate project management plans.
Project complexity
Complex projects may not have clear requirements. The requirements may change
often, and the cost of delay is high. Ask yourself if the project requires constant
monitoring or feedback from the client.
Cost of delay
Is the project highly time-bound with a huge cost of delay, or are the timelines
flexible?
Customer involvement
Do you need to consult the customers during the process? Does the user need to
participate in all phases?
Project resources
This involves the amount and availability of funds, staff, and other resources.
Waterfall Model
The waterfall model is a sequential, plan driven-process where you must plan and
schedule all your activities before starting the project. Each activity in the waterfall
model is represented as a separate phase arranged in linear order.
It has the following phases:
● Requirements
● Design
● Implementation
● Testing
● Deployment
● Maintenance
Each of these phases produces one or more documents that need to be approved
before the next phase begins. However, in practice, these phases are very likely to
overlap and may feed information to one another.
V Model
The V model (Verification and Validation model) is an extension of the waterfall
model. All the requirements are gathered at the start and cannot be changed. You
have a corresponding testing activity for each stage. For every phase in the
development cycle, there is an associated testing phase.
Incremental Model
The incremental model divides the system’s functionality into small increments that
are delivered one after the other in quick succession. The most important
functionality is implemented in the initial increments.
The subsequent increments expand on the previous ones until everything has been
updated and implemented.
Incremental development is based on developing an initial implementation, exposing
it to user feedback, and evolving it through new versions. The process’ activities are
interwoven by feedback.
Iterative Model
The iterative development model develops a system through building small
portions of all the features. This helps to meet initial scope quickly and release it for
feedback.
In the iterative model, you start off by implementing a small set of the software
requirements. These are then enhanced iteratively in the evolving versions until
the system is completed. This process model starts with part of the software, which
is then implemented and reviewed to identify further requirements.
Like the incremental model, the iterative model allows you to see the results at the
early stages of development. This makes it easy to identify and fix any functional
or design flaws. It also makes it easier to manage risk and change requirements.
The deadline and budget may change throughout the development process,
especially for large complex projects. The iterative model is a good choice for large
software that can be easily broken down into modules.
RAD Model
The Rapid Application Development (RAD model) is based on iterative development
and prototyping with little planning involved. You develop functional modules in
parallel for faster product delivery. It involves the following phases:
1. Business modeling
2. Data modeling
3. Process modeling
4. Application generation
5. Testing and turnover
Spiral Model
The spiral model is a risk driven iterative software process model. The spiral model
delivers projects in loops. Unlike other process models, its steps aren’t activities but
phases for addressing whatever problem has the greatest risk of causing a failure.
It was designed to include the best features from the waterfall and
introduces risk-assessment.
You have the following phases for each cycle:
1. Address the highest-risk problem and determine the objective and alternate
solutions
2. Evaluate the alternatives and identify the risks involved and possible solutions
3. Develop a solution and verify if it’s acceptable
4. Plan for the next cycle
You develop the concept in the first few cycles, and then it evolves into an
implementation. Though this model is great for managing uncertainty, it can be
difficult to have stable documentation. The spiral model can be used for projects with
unclear needs or projects still in research and development.
Agile model
The agile process model encourages continuous iterations of development and
testing. Each incremental part is developed over an iteration, and each iteration is
designed to be small and manageable so it can be completed within a few weeks.
Each iteration focuses on implementing a small set of features completely. It
involves customers in the development process and minimizes documentation by
using informal communication.
Software Crisis
1. Size: Software is becoming more expensive and more complex with
2. Quality: Many software products have poor quality, i.e., the software
FAA's Advanced Automation System cost over $700 per lines of code.
often the software takes longer than the estimated time to develop,
which in turn leads to cost shooting up. For example, one in four
1. Stratification
2. Histogram
3. Check sheet (tally sheet)
4. Cause and effect diagram (fishbone or Ishikawa diagram)
5. Pareto chart (80-20 rule)
6. Scatter diagram
7. Control chart (Shewhart chart)
1. Stratification
With its simple setup and easy-to-read graphics, check sheets make it
easy to record preliminary frequency distribution data when measuring
out processes. This particular graphic can be used as a preliminary
data collection tool when creating histograms, bar graphs, and other
quality tools.
Click on template to edit in Lucidchart
Out of the seven quality tools, the scatter diagram is most useful in
depicting the relationship between two variables, which is ideal for
quality assurance professionals trying to identify cause and effect
relationships.
Scatter diagrams can prove useful as a quality control tool when used
to define relationships between quality defects and possible causes
such as environment, activity, personnel, and other variables. Once
the relationship between a particular defect and its cause has been
established, you can implement focused solutions with (hopefully)
better outcomes.
7. Control chart (also called a Shewhart chart)
Using a control chart can save your organization time and money by
predicting process performance, particularly in terms of what your
customer or organization expects in your final product.
Bonus: Flowcharts
Mapping out your current process can help you to more effectively
pinpoint which activities are completed when and by whom, how
processes flow from one department or task to another, and which
steps can be eliminated to streamline your process.
Unit 5
Software Assurance Models:
Models for Quality Assurance, ISO-9000 series, CMM, CMMI, Test Maturity
Models, SPICE, Malcolm Baldrige Model- PCMM.
The ISO 9000 series of standards is based on the assumption that if a proper
stage is followed for production, then good quality products are bound to follow
automatically. The types of industries to which the various ISO standards apply are as
follows.
2. ISO 9002: This standard applies to those organizations which do not design
products but are only involved in the production. Examples of these category
industries contain steel and car manufacturing industries that buy the product
and plants designs from external sources and are engaged in only manufacturing
those products. Therefore, ISO 9002 does not apply to software development
organizations.
3. ISO 9003: This standard applies to organizations that are involved only in the
installation and testing of the products. For example, Gas companies.
How to get ISO 9000 Certification?
An organization determines to obtain ISO 9000 certification applies to ISO registrar
office for registration. The process consists of the following stages:
3. Document review and Adequacy of Audit: During this stage, the registrar reviews
the document submitted by the organization and suggest an improvement.
4. Compliance Audit: During this stage, the registrar checks whether the
organization has compiled the suggestion made by it during the review or not.
5. Registration: The Registrar awards the ISO certification after the successful
completion of all the phases.
6. Continued Inspection: The registrar continued to monitor the organization time
by time.
2. CMM
The capability Maturity Model defines five different maturity levels. CMMI (Capability Maturity
Model Integration) is a quality standard and process improvement model. It helps organizations
to improve their performance and strive for continuous improvement.
The CMMI Levels are as follows:
CMMI Level 1 -> Initial
CMMI Level 2 -> Managed
CMMI Level 3 -> Defined
CMMI Level 4 -> Quantitatively Managed
CMMI Level 5 -> Optimizing
This is the initial level. Process followed by the organization is chaotic and uncontrolled or
poorly controlled. The process followed by the organization is undocumented and the
environment is unstable.
CMMI Level 2 -> Managed
The process followed by the organization is managed to some extent, it is undocumented. The
process is generally reactive. and little effort is made to control or assure quality.
CMMI Level 3 -> Defined
The process followed by the organization is managed, efforts are made to control and assure
quality. Risks in the organization are managed. Incidents are resolved and prevented from
reoccurrence.
CMMI Level 4 -> Quantitatively Managed
The process followed by the organization is measured, controlled, and documented. Quality is
controlled and assured, incidents are prevented. The organization also emphasizes customer
satisfaction.
CMMI Level 5 -> Optimizing
The main focus for the organization at this level is on optimizing the process. The organization
strives to continually improve the process.
The People Capability Maturity Model (PCMM) is a framework that helps the
organization successfully address their critical people issues. Based on the best current
study in fields such as human resources, knowledge management, and organizational
development, the PCMM guides organizations in improving their steps for managing
and developing their workforces.
The People CMM defines an evolutionary improvement path from Adhoc, inconsistently
performed workforce practices, to a mature infrastructure of practices for continuously
elevating workforce capability.questions on Structures
The PCMM subsists of five maturity levels that lay successive foundations for
continuously improving talent, developing effective methods, and successfully directing
the people assets of the organization. Each maturity level is a well-defined evolutionary
plateau that institutionalizes a level of capability for developing the talent within the
organization
The Initial Level of maturity includes no process areas. Although workforce practices
implement in Maturity Level, 1 organization tend to be inconsistent or ritualistic, virtually
all of these organizations perform processes that are defined in the Maturity Level 2
process areas.
To achieve the Managed Level, Maturity Level 2, managers starts to perform necessary
people management practices such as staffing, operating performance, and adjusting
compensation as a repeatable management discipline. The organization establishes a
culture focused at the unit level for ensuring that person can meet their work
commitments. In achieving Maturity Level 2, the organization develops the capability to
handle skills and performance at the unit level. The process areas at Maturity Level 2
are Staffing, Communication and Coordination, Work Environment, Performance
Management, Training and Development, and Compensation.
At the Predictable Level, the organization handles and exploits the capability developed
by its framework of workforce competencies. The organization is now able to handle its
capacity and performance quantitatively. The organization can predict its capability for
performing work because it can quantify the ability of its workforce and of the
competency-based methods they use performing in their assignments.
Software is the set of instructions in the form of programs to govern the computer
system and process the hardware components. To produce a software product a
set of activities is used. This set is called a software process.
In this article, we will see a difference between PSP and TSP.
PSP TSP
PSP is based on the waterfall model. TSP is based on the agile model.
PSP is more suited for large projects. TSP is more suited for small projects.
PSP projects are typically completed in TSP projects are typically completed in multiple
one phase. phases.
PSP programs are written in English and TSP programs are written in assembly language
they are easy to understand. and they are difficult to understand.
PSP is a portable language and it can be TSP is a platform-dependent language and it can
run on any platform. be run only on specific platforms.
PSP is an interpreted language and it TSP is a compiled language and it needs to be
does not need to be compiled. compiled before it can be run.
PSP is a free language and it can be TSP is a commercial language and it is not
downloaded from the internet. available for free.
1. Incremental planning
● In this task, the incremental plan is developed.
● The functionality of each increment, projected size of the increment and
the cleanroom development schedule is created.
● The care is to be taken that each increment is certified and integrated in
proper time according to the plan.
2. Requirements gathering
● Requirement gathering is done using the traditional techniques like
analysis, design, code, test and debug.
● A more detailed description of the customer level requirement is
developed.
4. Formal design
● The cleanroom design is a natural specification by using the black box
structure approach.
● The specification is called as state boxes and the component level
diagram called as the clear boxes.
5. Correctness verification
● The cleanroom conducts the exact correctness verification activities on
the design and then the code.
● Verification starts with the highest level testing box structure and then
moves toward the design detail and code.
● The first level of correctness takes place by applying a set of 'correcting
questions'.
● More mathematical or formal methods are used for verification if
correctness does not signify that the specification is correct.
9. Certification
● After the verification, inspection and correctness of all errors, the
increments are certified and ready for integration.
1. Black box
● The black box identifies the behavior of a system.
● The system responds to specific events by applying the set of transition
rules.
2. State box
● The box consist of state data or operations that are similar to the
objects.
● The state box represents the history of the black box i.e the data
contained in the state box must be maintained in all transitions.
3. Clear box
● The transition function used by the state box is defined in the clear box.
● It simply states that a clear box includes the procedural design for the
state box.
Object Oriented Methodology
Object Oriented Methodology (OOM) is a system development approach encouraging and
facilitating re-use of software components. With this methodology, a computer system can be
developed on a component basis which enables the effective re-use of existing components and
facilitates the sharing of its components by other systems.
Documents of OOM
This document aims at introducing briefly to the readers the Object Oriented Methodology
(OOM). Information covered in the document includes a brief overview of the OOM, its benefits,
the processes and some of the major techniques in OOM.
This methodology employs the international standard Unified Modeling Language (UML) from
the Object Management Group (OMG). UML is a modeling standard for OO analysis and design
which has been widely adopted in the IT industry.
The OOM life cycle consists of six stages. These stages are the business planning stage, the
business architecture definition stage, the technical architecture definition stage, the incremental
delivery planning stage, the incremental design and build stage, and the deployment stage.
The objectives of this document are to describe the Object Oriented Methodology (OOM)
process structure and to detail the procedures involved in conducting OOM projects.
2. Scope
The intended readers of this manual are the practitioners of OOM projects. This manual is
structured according to the stages of the OOM process. For each task in the OOM stages, the
following information is documented :
● Objective
● Description
● Prerequisites
● Deliverables
● Guidelines
● Techniques
● Sub-tasks
For ease of reference, part of the contents are extracted from the full manual and summarized
in the following sections.
3. OOM Overview
● Business planning;
● Business architecture definition;
● Technical architecture definition;
● Incremental delivery planning;
● Incremental design and build;
● Deployment.
OOM Documentation Manual
1. Purpose
The purpose of this manual is to define the documentation which will be produced by a project
using the Object Oriented Methodology (OOM). It describes the purpose, contents and
preparation guidelines of each document. Examples are also provided, as appropriate, for
reference.
2. Scope
The intended readers of this manual are the practitioners of OOM projects.
Guidelines - States when the documentation is to be created, modified, and used. Guidelines in
producing the documents, if any, will also be provided.
Contents - States the suggested contents, and where appropriate, examples will be given.