final exam material Flashcards
what is testing intended to do
it is intended to demonstrate to the developer and the customer that the software meets its requirements
what are the two types of software testing
verification testing : are we building the product right?
- intended to show that the system conforms to its specification
- tests whether the system verifies tits functional and non-functional requirements
validation testing: did we build the right product?
- testing whether the software does what the user requires
- testing whether the software runs without incorrect or undesirable behavior (defect testing)
what does the confidence required in a system depend on?(3)
software purpose: the level of confidence depends on how critical the software is to an organisation
user expectations: users may have low expectations of certain kinds of software or they can tolerate certain software failure rates
marketing environment: getting a product to market early may be more important than finding defects in the program
what is software inspection
analyzing the system documentation: requirements, architecture, design models and test cases to discover problems
what is software testing and what is another word for it
running and observing product behavior. also known as dynamic verification
what are the 3 advantages of software inspection
- inspections may be applied to any representation of the system
- incomplete versions of a system can be inspected without additional costs
- during testing, errors can mask other errors. but because inspection is a static process, we don’t have to be concerned with interactions between errors
what are the 4 difficulties of software inspection
- software inspection involves people examining the source representation with the aim of discovering anomalies and defects which is difficult to automate
- difficult to detect errors which could appear due to component interactions
- difficult to detect problems related to performance issues
- requires a dedicated team which is not always available
what are the three major stages of testing
- development testing: system is tested during development
- release testing: separate testing team tests a complete version of the system before it is released
- user testing: users test the system in their own environment
what is a test case?
testing procedure to describe the input, expected output and the test process
what are the three types of development testing
- unit testing: individual program units or object classes are tested
- component testing: testing composite components made of individual units
- system testing: testing the system as a whole
what is unit testing and what does it target? what is the most difficult to test
the process of testing individual program units in isolation
units designate individual program entities such as:
- individual functions or methods within an object
- object classes with several attributes and methods
- composite components with defined interfaces used to access their functionality
class relations make it more difficult to design object class tests as the information to be tested is not localized
what are TAT
test automation tools provide generic test classes that can be extended to create specific test cases
what are the 3 main phases of test automation
- setup phase: where the system is initialized with the test case
- call phase: where object or method to be tested is called
- assertion phase: where the result is compared with the expected result
what are the two types of unit test cases
- evaluating the normal operation behavior of a program
- evaluating the abnormal behavior of a program
what are the two strategies to be used in unit testing
- partition testing: where we identify groups of input that have common characteristics and should be processed in the same way
- guideline-based testing: where certain testing guidelines are used
what are some examples of guideline based testing
- choose inputs that force the system to generate all error messages
- design inputs that cause input buffers to overflow
describe the component testing
- software components are composite entities made of several interacting entities which could be individual or composite components
- the functionality of the constituent entities of a component are accessed through the defined component interface
- testing composite components should therefore focus on showing that the component interface behaves according to its specification
what is interface testing in component testing and what are its 4 types
detecting faults due to interface errors or invalid assumptions about interfaces
interface types:
- parameter interfaces: data passed from one method to another
- shared memory interfaces: block of memory is shared between procedures
- procedural interfaces: sub-system encapsulates a set of procedures to be called by other subsystems
- message passing interfaces: sub-systems request services from other sub-systems
what are interface errors
- interface misuse: a calling component calls another component and makes an error in tis use of its interface
- interface misunderstanding: a calling component embeds assumptions about the behavior of the called component which are incorrect
- timing errors: the called and calling component operate at different speeds and out of date information is accessed
what are the interface testing guidelines (5)
- user parameters when calling components at the extreme ends of their ranges
- always test pointer parameters with null pointers
- design tests which case the component to fail
- use stress testing in message passing systems
- in shared memory systems, vary the order in which components are activated
what is system testing and what does it focus on?
- system testing involves integrating components to create a version of the system and then testing the integrated system
- focuses on the interactions between components
- Reusable components that have been separately developed and off the shelf systems may be integrated with the newly developed components
- components developed by different team members may be integrated at this stage
what are the testing policies in system testing
- exhaustive system testing is impossible so testing policies which define the required system test coverage is developed.
examples:
- all system functions that are accessed through menus should be tested
- combinations of functions that are accessed through the same menu must be tested
- where user input is provided, all functions must be tested with correct and incorrect values
what is TDD
Test driven development is an approach to program development in which you interleave testing and code development. commonly used with agile development
- test cases are written before code and passing the tests is the critical driver for development
what are the 4 pros and 4 cons of TDD
pros:
- code coverage: every code segment that is written has at least one associated test so all code written has at least one test
- regression testing: a regression test suite is developed incrementally as a program is developed
- simplified debugging: when a test fails, it should be obvious where the problem lies such that only newly written code needs to be checked
- system documentation: the tests themselves are a form of documentation that describe what the code should be doing
Cons:
- programmers prefer programming to testing
- some tests can be very difficult to write incrementally
- it is difficult to judge the completeness of a set of tests
- maintaining simplicity requires extra work
what is regression testing
- testing the system to check that new changes have not damaged previously working code
- in a manual testing process, regression testing is expensive but, with automated testing, it is simple and straightforward
- tests must run successfully before the changes can be committed
what is release testing and what is its primary goal
- testing a particular release of a system that is intended for use outside of the development team
- primary goal is to convince the supplier of the system that it is good enough for use
- release testing is usually a black-box testing process
what is the difference between release testing and system testing (2)
release testing is a form of system testing
main differences:
- a separate team that has not been involved in the system development should be responsible for the release testing
- system testing by development team mainly focuses on discovering bugs in the system (defect testing)
- release testing is to check the system meets its requirements and is good enough for external use
what are the types of release testing (3)
- requirements testing: requirements based testing involves examining each requirement and developing a test for it
- scenario based testing: testing the system in typical scenarios of use
- performance testing: testing emergent properties of a system such as performance and reliability
what is user testing
stage in the testing process in which users or customers provide input and advice on system testing
what are the 3 types of user
- alpha testing: users of the software work with the development team to test
- beta testing: a release of the software is made available to users to allow them to experiment and to raise problems that they discover with the system developers
- acceptance testing: customers test a system to decide whether or not it is ready to be accepted from the system developers
NOTE: in agile methods, user/customer is part of the development team
what are the success criteria for good project management (4)
- deliver the software to the customer at the agreed time
- keep overall costs within budget
- deliver software that meets the customer’s requirements
- maintain a happy and well-functioned development team
what are the features distinguishing software management
- the product is intangible
- many software projects are ‘one-off’ projects (different from the rest)
- software processes are variable and organization specific
what are project management activities (5)
- project planning: estimating and scheduling project development, assigning people to tasks etc.
- Reporting: project managers are responsible for reporting on the progress of a project to customers
- Risk management: project managers asses the risks that may affect the project and take action when problems arise
- People management: choose people for their team and establish ways of working that leads to effective performance
- Proposal Writing: which describes the objectives of the project and how it will be carries out
what are the 3 types of risks giving 4 types in each
-
Project risks affect scheduling and resources
- staff turnover: experienced staff will leave the project before it is finished
- management change: there will be a change of organizational management with different priorities
- hardware unavailability: hardware that is essential for the project will not be delivered on schedule
- Requirement specification delays: specification of essential requirements are not available on time
-
Product risks affect the quality and performance of the software being developed
- Product requirements change: larger number of changes than anticipated
- Requirements specification ambiguity: specifications of essential components are not clear
- size underestimate: the size of the system has been underestimated
- CASE tool underperformance: CASE tools, which support the project, do not perform as anticipated
-
Business risks affect the organization developing and procuring the software
- technology change: the underlying technology on which the system is built is superseded by new technology
- Product competition: a competitive product is marketed before the system is completed
- New Regulations: governments introduce new regulatory functions and policies which may affect the business
- cash flow reduction: budget cuts might arise, reducing cash flows
what are the 4 types of project risks
- staff turnover: experienced staff will leave the project before it is finished
- management change: there will be a change of organizational management with different priorities
- hardware unavailability: hardware that is essential for the project will not be delivered on schedule
- Requirement specification delays: specification of essential requirements are not available on time
what are 4 examples of product risks
- Product requirements change: larger number of changes than anticipated
- Requirements specification ambiguity: specifications of essential components are not clear
- size underestimate: the size of the system has been underestimated
- CASE tool underperformance: CASE tools, which support the project, do not perform as anticipated
what are 4 examples of business risks
- technology change: the underlying technology on which the system is built is superseded by new technology
- Product competition: a competitive product is marketed before the system is completed
- New Regulations: governments introduce new regulatory functions and policies which may affect the business
- cash flow reduction: budget cuts might arise, reducing cash flows
describe the 4 stages in risk management process
- Risk identification
- Risk analysis
- Risk planning: how to avoid or minimize the effects
- Risk monitoring: monitor the risks throughout the project
what are some common risks that may be used to identify risks in a project
- Technology risks
- people risks
- organizational risks
- requirements risks
- estimation risks
what are the 4 risk consequence levels
- Catastrophic: threaten the survival of the project
- Serious: would cause major delays
- *Tolerable: delays are within allowed contingencies
- Insignificant: does not significantly affect the project
what are the two approaches to risk
- Avoidance strategies: reduce the probability that the risk will arise
- minimization strategies: reduce the impact of the risk on the project or product
how can we perform risk monitoring
- Asses each identified risk regularly
- discuss key risks at management progress meetings
what is the most important asset in an organization
PEOPLE
what are teh major people management factors (4)
- consistency: team members are treated fairly
- Respect: Different team members have different skills which should be respected
- Inclusion: involve all team members and make sure that people’s views are considered
- Honesty: always be honest about what is going well & what is going badly
what are the general needs for team motivation
- basic needs
- social needs
- personal needs
what are the basic needs in an SE group
-
social:
- provide communal facilities
- allow informal communications
-
esteem
- Recognition and achievements
- appropriate rewards
-
self-realization
- training: people like to learn more
- responsibility: people like to know they can be counted on
what are the 3 personality types
- task oriented motivation for doing the work itself
- self-oriented: the work is a means to an end, which is achievement of individual goals
- interaction oriented: the principal motivation ins the presence and actions of co-workers
what are the 4 advantages of a cohesive group
- group quality standards can be developed by the group members
- team members learn from each other and get to know each other’s work
- knowledge is shared: continuity can be maintained if a group member leaves
- refactoring and continual improvement is encouraged
what does the effectiveness of a team depend on
- the people in the group: you need a mix of people in a group project as software development involves diverse activities
- the group organization
- technical and managerial communications
what is a manager or team leader’s job and what makes it challenging
to create a cohesive group
it may not be possible to appoint the ideal people to work on a project:
- project budget may not allow for use of highly-paid staff
- staff with the appropriate experience may not be available
- an organization may wish to develop employee skills on a software project
why is a team composed of members with the same motivation problematic?
- task oriented: everyone wants to do their own thing
- *self oriented: everyone wants to be the boss
- *interaction oriented: too much babbling
what are the properties of informal groups and when does it become successful
- the group acts as a whole and comes to a consensu on decisions
- the leader serves as the external interface of the group
- work is discussed by the group as a whole
Successful where members are experienced and competent
what may team communications depend on
- team size: the larger the group, the harder it is for people to communicate
- team structure: communication is better in informally structured groups than in hierarchically structured groups than in hierarchy structured groups
- team composition: communications is better when there are different personality types in a group
- the physical work environment: good workplace encourages communication
what are the 7 roles a member can play in teams
-
encourager
- energizing the group when motivation is low
-
compromiser
- tries to maintain harmony among team members
- tolerant individuals and good judges of people
- diplomatic
- able to resolve differences of opinion
-
leader
- directs the work and keeps the group on track
- good at controlling people and events and coordinating resources
- recognize the skills of each individual and how they can be used
-
summarizer
- summarizes group discussions and highlights conclusions
- calm and reflective
- elaborate on the ides of others
-
ideas person
- suggest new ideas to solve group problems
- suggest new ways for the group to organize the task
- they may get bored after the initial motivation wears off
-
evaluator
- helps the group avoid coming to agreement too quickly
- tend to be slow in making decisions
- logical, analytical and objective people
-
recorder
- keeps the group focused and organized
- make sure everyone is helping with the project
- time keepers
- can act as spokesperson
- memory of the group
what makes a team effective (8)
- clear goals
- range of individuals who contribute in different ways
- help each other achieve work
- there should be balance between teh task and the process
- the team is comfortable with disagreement
- there are lots of discussion sand everyone’s ideas are heard
- the group learn from experience
- highlighting individual performance within the team
what makes a team ineffective
- no clear goals
- people talk more than they listen
- ideas are dismissed
- there are arguments instead of constructive conversations
- a few members dominate the rest
- disagreements are put to the vote (makes some unhappy)
- roles are not delegated to particular team members
- lack of trust
when does the project planning take place in the project life
takes place at three stages of a project’s life:
- proposal stage, when bidding for a contract to develop or provide a software system
- during the project startup phase when planning (who will work on the project, how the project is broken down etc)
- periodically throughout the project
what are the factors affecting software pricing (5)
-
Market opportunity
- a development organization may quote a low price because it wishes to move into a new segment of the software market
- accepting lower profit on one project may give the organisation the opportunity to make a greater profit on one project may give the organization the opportunity to make great profit later
- the experience gained may also help develop new products
-
cost estimate uncertainty:
- if an organization is unsure of tis cost estimate it may increase its price by a contingency over and above its normal profit
-
contractual terms:
- a customer may be willing to allow a developer to retain ownership of the source code and reuse it in other projects
-
requirements volatility:
- if the requirements are likely to change, an organization may lower its price to win a contract
-
*development company financial crisis
- developers in financial difficulty may lower the price to gain a contract
what is plan driven development
plan driven development is an approach to software engineering where the development process is planned in detail
what are the project plan’s main sections
- introduction: briefly describing the project objectives requirements and company constraints
- project team organization: describes how the development team is organized
- requirements specification: starting from organizational & external non-functional requirements to more detailed functional & non-functional requirements
- risk analysis: describes possible risks and their likelihood as well as their mitigation/avoidance strategies
- development requirements: hardware and software support required to develop the project
-
work breakdown: dividing the project into activities in order to define milestones and deliverables
- milestone: key stages where progress is assessed
- deliverables: work products delivered to the customer
-
project schedule:
- dependencies between activities
- estimated time to reach milestone
- allocation of people to activities
- Monitoring and reporting mechanisms: defines management reports that have to be produced
what is project monitoring
- measuring ongoing project activities (where we are)
- monitoring project variables
- identify corrective actions
what are the project plan supplements (4)
- quality plan: describes the quality procedures and standards that will be used in a project
- validation plan: describes the approach, resources, and schedule used for system validation
- maintenance plan: describes the maintenance requirements, costs and effort
- staff development plan: describe how the skills and experience of the project team members will be developed
what type of process is project planning
Iterative process where changes are inevitable
what is project scheduling (3)
- deciding how the work in a project will be organized as separate tasks
- estimating the calendar time needed to complete each task
- estimating the resources needed to complete each task
what are the main project scheduling activities (4)
- split project into tasks
- estimate resources required to complete each task
- estimate time required to complete each task
- optimization: minimize dependencies to avoid delays caused by waiting
what is person-day
average effort spend by one person during a day
why is the relation between duration and effort (in person-days) not straightforward
it depends on different factors:
- number of staff allocated to each task
- productivity of each staff member
- amount of time allocated by each staff member to task
NOTE: we use staff allocation chart
what is agile planning
- agile methods are iterative approaches where software is developed and delivered in increments
- not planned
- based on the idea that customer’s requirements and priorities change
what do XP and Scrum approaches have in common
they both have two-stage planning
- release planning: whcih looks ahead for several months and decides the features that should be included in the release
- iteration planning: which has shorter term outlook and focuses on planning the next increment of the system (2-4 weeks long)
-
story based planning:
- the system specification is based on user stories
- rank the stories in order of time they think it will take
- release planning involves selecting and refining the stories selected