Finals Flashcards

(95 cards)

1
Q

What are the types of software testing?

A

1 - Verification testing:
- Intended to show that system conforms to its specifications
- Tests whether the system verifies its functional and non-functional requirements

2- Validation testing:
- Testing whether the software does what the user requires
- Testing whether the software runs without incorrect behavior

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What does the level of confidence in a system depend on?

A
  • Software purpose:
    Depends on how critical the software is to an organization
  • User expectations:
    User may have low expectations or tolerate certain failures
  • Marketing environment:
    Getting a product to market early may be more important than finding defects
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is software inspection?

A
  • It is prior to testing
  • It analyses the system documentation to find problems
  • Also known as static verification
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the advantages of software inspection?

A
  • Useful in searching for program defects
  • Inspections do not require executing the system
  • Won’t be concerned with interactions between errors
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What are difficulties in software inspection

A
  • Manual effort
  • Difficult to detect errors which appear due to component interactions
  • Difficult to detect problems related to performance issues
  • Required dedicated team
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are the 3 stages of testing?

A

1- Development testing (during development):
- Discover bugs
- Verifying functional requirements

2- Release testing (beta):
- separate testing team tests a complete version of the system before it is released to users
- Verifying functional and non-functional requirements

3- User testing (prod):
Users test the system on their own

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are the 3 different levels development testing?

A
  • Unit testing:
    Individual units or object classes are tested
  • Component testing:
    Testing composite components made of individual units
  • System testing:
    Testing the system as a whole
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Explain unit testing

A
  • Unit testing is the process of testing the individual program units in isolation
  • Units designate individual program entities such as functions, object classes,…
  • Focuses on testing the functionality of objects or methods
  • It is a defect testing process
  • Breaks down and assesses functional requirements at the unit level
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What do test automation tools provide?

A

Generic test classes that can be extended to create specific test cases

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What phases does test automation pass through?

A

1- Setup phase:
Where the system is initialized with test case

2- Call phase:
Object or method to be tested is called

3- Assertion phase:
The result of the call is compared with the expected result

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What is a test case and what are the two types of test cases?

A
  • Test procedure designed to show that the unit tested is working properly

1- Evaluating normal operation behavior of a program

2- Evaluating abnormal behavior of a program

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What are unit testing strategies that can be considered?

A
  • Partition testing:
    Identify group of inputs that are similar and should be processed the same way
  • Guideline-based testing:
    Certain testing guidelines are used. These reflect previous errors that programmers make
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Explain partition testing

A
  • Input data and output results are divided into different classes where all members of a class are related
  • Each of these classes is an equivalence partition
  • Test cases should be chosen from each partition

Testing values in partitions + testing values around boundaries + testing values outside of boundaries

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Explain the guideline-based testing

A
  • Choose inputs that force the system to generate all error messages
  • Design inputs that cause input buffers to overflow
  • Repeat the same input or series of inputs numerous times
  • Force invalid outputs to be generated
  • Force computations results to be too large or too small
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Explain what is a component and what is component testing

A
  • Software components are composite entities made of several interacting entities
  • Testing composite components should focus on showing that the component interface meets required specification
  • Assumes that unit tests on individual entities have been done
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What is interface testing?

A
  • Detects faults due to interface errors
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

What are the types of interface?

A
  • Parameter interface:
    Data passed from one method to another
  • Shared memory interface:
    Block of memory shared between functions
  • Procedural interface:
    Subsystem encapsulates a set of procedures to be called by other subsystems
  • Message passing interfaces:
    Subsystems request services from other subsystems
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

What are types of interface errors?

A
  • Interface misuse:
    Two components calling each other causing an error
  • Interface misunderstanding:
    Calling component assumes behavior of called component which is incorrect
  • Timing error:
    Called and calling components operate at different speeds
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

What are interface testing guidelines?

A
  • Use edge cases
  • Always test pointer parameters with null pointers
  • Design tests which cause component to fail
  • In message system, use stress testing
  • In shared memory systems, vary the order in which components are activated
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Explain system testing

A
  • Test interactions between components
  • Checks that components are compatible, interact correctly, and transfer the right data
  • Test the overall behavior of the system
  • Components developed by team members or sub-teams may be integrated at this stage
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

What are the key considerations in developing testing policies for system testing when exhaustive testing is not possible?

A
  • Since it’s not possible to test every aspect of a system, we develop testing policies that define which parts are most important to test.

Examples:
- All system functions that are accessed through menus
- Combinations of functions that are accessed through the same menu
- User input functions must be tested with correct and incorrect input

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

What is test-driven development

A
  • It is an approach where we combine testing and code development
  • Test cases are written before code and once the test is passed, the code is written
  • Code is developed incrementally along with a test for each increment
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

What are pros of TDD

A
  • Code coverage:
    Every code has at least one test associated with it
  • Regression testing:
    Developed incrementally as program is developed
  • Simplified debugging:
    Problem is clear when test fails
  • System documentation:
    Tests are a form of documentation
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

What are the cons of TDD?

A
  • Programmer prefer programming to testing
  • Some test can be difficult to write incrementally
  • Difficult to judge completeness of a set of tests
  • Requires extra work
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
What is regression testing?
- Testing the system to check that the new changes did not affect previous code - Expensive when done manually, but when automated it is simple - Tests must run successfully before the changes can be committed
26
What is release testing?
- The process of testing a particular release of a system that is intended to be used outside of the development team - Form of system testing - Primary goal is to convince supplier that the system is good enough for use - Black-box testing where tests are only derived from system specification
27
What is the difference between system testing and release testing?
- A separate team that has not been involved in system development should be responsible for release testing - System testing by the development team focuses on discovering bugs in the system - The objective of release testing is validation and verification
28
What are the 3 types of tests that are associated with release testing?
1- Requirements testing: - Tests to verify requirements are met 2- Scenario based testing: - Testing the system in typical scenarios of use - Scenarios could be narrative stories or visual diagrams 3- Performance testing: - Tests performance and reliability - Stress testing
29
What is user testing? What are the types of user testing?
- Where users test the system Alpha testing: Users test system at developer's site Beta testing: A release of the software is available to certain users and raise problems with developers Acceptance testing: Customers test a system to decide whether or not it is ready to be accepted from the system developers and deployed in the customer environment
30
What are project management activities?
- Project planning: Assigning people to tasks - Reporting: Report on progress of a project to customers and managers - Risk management: Assess the risks that may affect a project - People management: Choose people for their time and establish ways of working that lead to effective team performance - Proposal writing: Writing a proposal to win a contract to carry out an item of work
31
What is risk management?
It is concerned with identifying risks and drawing up plans to minimize their effect on a project
32
What is a risk and what are the types or risks?
A risk is a probability that some adverse circumstance will occur Types of risks are: - Project risks: Affect schedule or resources - Product risks: Affect the quality/performance of the software being developed - Business risks: Affect the organization developing/using software
33
What are some examples of project risks?
- Staff turnover - Management Change - Hardware unavailability - Requirement specification delays
34
What are examples of product risks?
- Product requirements change - Requirements specification ambiguity - Size underestimate - CASE tool underperformance
35
What are examples of business risks?
- Technology change - Product competition - New regulations - Cash flow reduction
36
What is the risk management process?
- Risk identification: Identify project, product, and business risk - Risk analysis: Assess the likelihood and consequences of these risks - Risk planning: Draw up plans to avoid or minimize the effects of risk - Risk monitoring: Monitor the risks throughout the project
37
How can risk identification be performed and what are different types of risks?
It can be performed as a team activity or individually. It revises a checklist of common risks that may be used to identify the risks such as: 1- Technology risks: - Database can't process as many transactions per second as expected - Reusable software components contain defects and cannot be reused as planned 2- People risks: - Difficult to recruit staff with skills required - Key staff are ill 3- Organizational risks: - Organization is restructured so that different management supervises project - Organizational financial problems force reductions in the project budget 4- Requirements risks: - Changes to requirements that require major design rework are proposed - Software tools cannot work together in an integrated way 5- Estimation risks: - Time required to develop is underestimated - The rate of the defect repair is underestimated 6- Tools: - Code generated by software code generation tools is inefficient - Software tools cannot work together in an integrated way
38
What is risk analysis:
- It assesses the probability and seriousness of each risk
39
How to measure risk consequence?
- Catastrophic: Threatens the survival of project - Serious: Would cause major delays - Tolerable: Delays are within allowed contingencies - Insignificant: Do not significantly affect project
40
How to measure risk probability?
- Very low (< 10%) - Low (10-25%) - Moderate (25-50%) - High (50-75%) - Very high (> 75%)
41
What are the strategy categories that are taken in risk planning phase?
- Avoidance strategy: Reduce probability that the risk will arise - Minimization strategies: Reduce the impact of the risk on the project or product Contingency plans to deal with that risk
42
What are the major points in risk monitoring?
1- Assess each identified risk regularly 2- Discuss key risks at management progress meetings
43
What are risk types and some potential indicators?
1- Technology: - Late delivery of hardware or support software - Many reported technology problems 2- People: - Poor staff morale - Poor relationships amongst team members - High staff turnover 3- Organizational: - Organizational gossip - Lack of action by senior management 4- Tools: - Reluctance by team members to use tools - Complaints about tools 5- Requirements: - Many requirements change request - Customer complaints 6- Estimation: - Failure to meet agreed schedule - Failure to clear reported defects
44
What are the major factors affecting people management?
- Consistency: Team members are treated with no discrimination - Respect: Different team members have different skills that are respected - Inclusion: Involve all team members and make sure that their views are considered - Honesty: Always be honest about what is going well and bad
45
What are the needs that are affected in SE?
1- Social: - Provide communal facilities - Allow social interactions 2- Esteem: - Recognition of achievements - Appropriate rewards 3- Self-realization: - People like to learn more - People like to know they can be counted on
46
What are the personality types when managing people?
1- Task oriented: The motivation for the work is the work itself 2- Self-oriented: The work is done for a sense of achievement of individual goals 3- Interaction-oriented: The principal motivation is the presence and actions of co-workers
47
What is a team and what makes a good team?
- A team is a group of people having the same goal - A good team is cohesive and has a team spirit
48
What are the advantages of a cohesive group?
- Group quality standards can be developed by the group members - Team members can learn from each other and get to know each other's work - Knowledge is shared - Refactoring and continual improvement is encouraged
49
On which factors does the effectiveness of a team depend on
1- People in the group: You need a mix of people in a group project 2- Group organization: Group should be organized 3- Technical and managerial communications: Good communication between group members is essential
50
What are the key points to assembling a team?
* Create a team with the right balance in terms of technicalities and personalities * A manager's job is to create a cohesive group
51
Why can a team composed of members who share the same motivation be problematic?
1- Task-oriented: everyone wants to do their thing 2- Self-oriented: Everyone wants to be the boss 3- Interaction-oriented: Not enough work
52
What are hierarchical groups?
- Consists of a singular group of power at the top with subsequent levels of power beneath them - Dominant in large organizations
53
What are informal groups?
- Group acts as a whole and comes to a consensus on decisions - Leader serves as the external interface of the group - Work is discussed by the group and tasks are allocated according to ability and experience
54
Which factors affect team communication?
- 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 - Team composition: Communication is better when there are different personality types - The physical work environment: Good workplace can encourage communication
55
What are team member roles?
- Encourager - Compromiser - Leader - Summarizer - Ideas person - Evaluator - Recorder
56
What are the responsibilities of a team encourager?
- Energizing the group when motivation is low through humor or enthusiasm - They don't like sitting around, they suggest ideas and clarify ideas of others
57
What are the roles of a team compromiser?
- Tries to maintain harmony among team members - They introduce people, draw them out, make them feel comfortable - They work well with different people - They are good judges of people - They are tolerant individuals and good listeners - They are able to recognize and resolve the differences of opinion and conflicts
58
What is the role of a team leader?
- Directs the work and keeps the group on track - They are good at controlling people and events - They recognize the skills of each individual and how they can be used - They bring competitive drive to the team
59
What is the role of the team summarizer?
- Summarizes the group discussions and highlights conclusions - They are calm and reflective individuals - They clarify group objectives and elaborate on the ideas of others - They are good mediators and seek consensus
60
What is the role of the ideas person?
- Suggests new ideas to solve group problems - Suggest new ways for the group to organize the task - They dislike orthodoxy and are not too concerned with practicalities - They are more concerned with the big picture - They may get bored after the initial motivation wears off
61
What is the role of the team evaluator?
- Helps the group to avoid coming to agreement too quickly - They tend to be slow in making decisions - They are logical, analytical, and objective people - They are capable of evaluating competing proposals
62
What is the role of the team recorder?
- Keeps the group focused and organized - They make sure everyone is helping with the project - They take notes to keep a record of ideas and decisions - They also act as time-keepers - They can act as spokesperson - They act as the memory of the group
63
What makes a team effective?
- It has clear goals that everyone understands and is committed to - It has a range of individuals who contribute in different ways - Team members should help each other achieve the work - There should be a balance between the task and the process - The team is comfortable with disagreement
64
What makes a team ineffective?
- There are no clear goals - There are arguments - Few members dominate the others - There is a lack of trust
65
What does project planning involve?
- Breaking down the work into parts - Assigning these to project team members - Anticipating problems that might arise - Preparing tentative solutions to those problems
66
When does project planning take place in the project's life cycle?
1- At the proposal stage when bidding for contract to develop or provide software system 2- During the project startup phase when planning: - Who will work - How will the project be broken down into increments - How resources will be allocated across company 3- Periodically throughout the project when modifying the plan in the light of experience gained and information from monitoring progress
67
What are the factors affecting software pricing?
1- Market opportunity: - Experience gained may help it develop new products - Accepting a low profit might give new opportunities 2- Cost estimate uncertainty: - If unsure about cost, the price might increase by a contingency over its normal profit 3- Contractual terms: A customer might give ownership to the developer and reuse it later 4- Requirements volatility: - If requirements are likely to change, organization might lower its price 5- Development company in financial crisis: - Developers in financial difficulty may lower their price to gain contract
68
What is plan driven development
- Approach to software engineering where the development process is planned in detail - A project plan is created that records the work to be done, who will do it, and the development schedule and the work products - Managers use the plan to support project decision making and a way of measuring progress
69
What are a project's plan main sections?
1- Introduction: - Briefly describing the project objectives, requirements, and company constraints 2- Project team organization: - Describe how the development team is organized 3- Requirements specification; - Starting from organizational and external non-functional requirements - To more detailed functional and non-functional requirements 4- Risk analysis: - Describes possible risks and risk mitigation/avoidance strategies 5- Development requirements: - Hardware and software support required to develop the project 6- Work breakdown: - Dividing the project into activities in order to define milestones and deliverables 7- Project schedule: - Dependencies between activities - Estimated time to reach - Allocation of people to activities 8- Monitoring and reporting mechanisms - Defined management reports that have to be produced
70
What are the major points in project monitoring?
- Measuring project activities - Monitoring project variables - Identify corrective actions to address issues and risks properly
71
What are project plan supplements?
1- Quality plan: - Describes the quality procedures and standards that will be used in a project 2- Validation plan: - Describes approach, resources, and schedule used for system validation 3- Maintenance plan: - Describes the maintenance requirements, costs, and effort 4- Staff development plan: - Describes how the skills and experience of the project team members will be developed
72
What are the main project scheduling activities?
- Split project into tasks - Estimate resources required to complete each task - Estimate time required to complete each task - Optimization: Organizing tasks concurrently to make optimal use of workforce. Minimize task dependencies to avoid delays caused by one task waiting for another to complete
73
What are the factors that affect relation between duration (days) and effort?
- Number of staff allocated to each task - Productivity of each staff member - Amount of time allocated by each staff member to task
74
What are some common agile approaches?
- Extreme programming - Scrum approach
75
What are the two stages in agile planning for XP and Scrum?
1- Release planning: - Looks ahead for several months and decides on the features that should be included in a release of a system 2- Iteration planning: - Shorter term outlook, focuses on planning the next increment of a system 3- Story based planning: - System specification is based on user stories that reflect the features that should be included in the system - Project team reads and discusses the stories and ranks them in order of the amount of time they think will take to implement story - Release planning involves selecting and refining the stories that will reflect the features to be implemented in the release of a system and the order in which the stories should be implemented - Stories to be implemented in each iteration are chosen, with the number of stories reflecting the time to deliver an iteration
76
What is the aim of agile methods
- Reduce overheads in the software process - Respond quickly to changing requirements without excessive work
77
What are the main principles of agile software development?
- Incremental delivery: Software is developed in increments - Customer involvement: Closely involved throuhout the development process - People not process: Reconginizing and exploiting skills of the development team - Embrace change: Expect system requirements to change - Maintain simplicity: Work to eliminate complexity from the system
78
Where are agile methodologies used?
- Small or medium sized software product development - Custom system development with an organization - Small and tightly-integrated teams
79
What are the problems of agile development?
- Customer involvement: Difficult to keep the interest of customers invloved - Team members may not be suited to the intense involvement in agile methods - Prioritizing changes: Can be difficult where there are multiple stakeholders - Maintaining simplicity: Requires extra work - Complying with rules and regulations when developing software - Contracts: Customer pays for time required for system development
80
What are the two key issues in software maintenance in agile methodologies?
- System developed using an agile methodologies are difficult to maintain since documentation is minimal - Prioritizing customer change rather than maintenance
81
What is extreme programming?
- Widely used agile method - Incremental development through small frequent releases - Maintaining simplicity through constant refactoring of code - All tests myst be run for every build - Full time customer engagement with the team - Development through pair programming
82
Explain how does in incremental planning happen in XP
- Customer is a part of the development team - User requirements are expressed as scenarios or user stories - Development team breaks them down into implementation tasks - Customer chooses the stories for inclusion in the next release
83
How does code refactoring occur?
- Programming team looks for possible software improvements - Changes become easier
84
What are XP testing features?
- Test first development before code - Incremental test development from scenarios - User involvement in test development and validation - Automated test tools
85
Explain the difference between agile and plan driven development
Agile: - Interleaved activities - Outputs are not mandatory Plan driven: - Identifies separate activities in the software development process - Outputs associated to each stage - Outputs of one activity are required to launch the following activity
86
What is scaling up and scaling out?
- Scaling up: Concerned with using agile methods for developing large software systems that can't be developed by small teams - Scaling out: Concerned with how agile methods can be introduced across a large organization with years of experience
87
What does scaling up to large systems include?
- It is not possible to focus only on code, we focus on system documentation and up-front design - Cross team communication mechanisms should be designed and used - Continuous integration
88
What does scaling out to large companies include?
- Project managers who lack experience of agile may be reluctant - There may be cultural resistance - Large organizations have quality procedure and standards that are not compatible with agile - Agile works best when we have high skill levels
89
What is a scrum approach?
hybrid agile method focusing on managing iterative development
90
What are the 3 main phases of scrum?
- Outline planning phase - Sprint cycles phase - Project closure
91
What is the role of the scrum master?
- Facilitate team work - Arrange daily meetings - Track project plan for work to be done - Records decisions - Communicates with other teams outside of management
92
What are the three types of meetings that can be organized?
- Sprint planning meeting: Organized at the beginning of a sprint cycle usually every 2 weeks Prepare the sprint backlog - Sprint daily meetings Developers come prepared with updates Meeting happens at same location and same time - Sprint end meetings Sprint review meeting Sprint retrospective
93
What are the main differences between scrum and xp?
- Scrum doesn't prescribe engineering practices while XP does - Scrum teams typically work in iterations that are 2-4 weeks - Scrum does not allow changes in sprint - XP works in strict priority order - Customer interacts with team during final stages of scrum iteration planning phase to jelp select features
94
What are the benefits of scrum?
- Inherits benefits of agile - Product is broken down to manageable and understandable chunks - Whole team has a visibility of everything - Allows teams to self-organize internally/externally
95