Study your flashcards anywhere!

Download the official Cram app for free >

  • Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off

How to study your flashcards.

Right/Left arrow keys: Navigate between flashcards.right arrow keyleft arrow key

Up/Down arrow keys: Flip the card between the front and back.down keyup key

H key: Show hint (3rd side).h key

A key: Read text to speech.a key


Play button


Play button




Click to flip

31 Cards in this Set

  • Front
  • Back
What is testing?
Testing is the process of executing the program in order to find errors.
A succesful test is one that finds an error.
What are some drawbacks of testing?
There are never sufficiently many test cases.
Testing does not find all the errors.
Testing is hard and takes a lot of time.
Testing is still a largely informal task.
What is black box testing? What is it also caleed?
Black box testing is not based on the structure of the program.

With black box testing, every possible input needs to be tested, this is impossible!

The goal: to maximize the number of errors found.

Also called data driven or input-output testing
White box testing
Is based on the internal structure of the program.
There are several alternative criterions for checking “enough” paths in the program.
Even checking all paths (highly impractical) does not guarantee finding all errors (e.g., missing paths!)
What are some good testing principles?
-A programmer should not test his/her own program.
-One should test not only that the program does what it is supposed to do, but that it does not do what it is not supposed to.
-The goal of testing is to find errors, not to show that the program is errorless.
-No amount of testing can guarantee error-free program.
-Parts of programs where a lot of errors have already been found are a good place to look for more errors.
-The goal is not to humiliate the programmer!
What is an inspection and walkthrough? How long does one take? How many errors might you find with it?
It is a manual testing method done by a team of people. It takes 90-120 minutes, and you might find 30%-70% of errors with it.
How does a code inspection work specifically? What are the positions?
Team of 3-5 people.
One is the moderator. He distributes materials and records the errors.
The programmer explains the program line by line.
Questions are raised.
The program is analyzed w.r.t. a checklist of errors.
How does a walkthrough work specifically? What are the positions?
Team of 3-5 people.
Moderator, as before.
Secretary, records errors.
Tester, play the role of a computer on some test suits on paper and board.
What are some good criteria for selecting test cases?
Cover all paths of the program.
Execute every statement at least once.
Each decision has a true or false value at least once.
Each condition is taking each truth value at least once.
Check all possible combinations of conditions in each decision.
What is a Equivilance Partition Test? How is it performed?
Find a small number of test cases.
Cover as much possibilities as you can.
Try to group together inputs for which the program would likely to behave the same.

Add a new test case until all valid equivalence classes have been covered. A test case can cover multiple such classes.
Add a new test case until all invalid equivalence class have been covered. Each test case can cover only one such class
What is the basic idea behind each unit test?
decide on functionality, write a test, then write code to pass the test.

Many developers don’t realize that unit testing does far more
for them than simply test code.
First, tests aren’t a tool to help you get some code right.Tests are an environment in which the only code that runs is code that is correct (or at least as correct as the tests are complete). The tests are a continuously available sanity check and
safety net.
In MVC, what does the controller do?
A controller is the means by which the user interacts with the application. A controller accepts input from the user and instructs the model and viewport to perform actions based on that input. In effect, the controller is responsible for mapping end-user action to application response. For example, if the user clicks the mouse button or chooses a menu item, the controller is responsible for determining how the application should respond.
In MVC,what does the model do?
A model is meant to serve as a computational approximation or abstraction of some real world process or system.

[The model is used] to manage information and notify observers when that information changes. [...] It contains only data and functionality that are related by a common purpose [...]. If you need to model two groups of unrelated data and functionality, you create two separate models.
In MVC, what does the view do?
The [view or viewport] is responsible for mapping graphics onto a device. A viewport typically has a one to one correspondence with a display surface and knows how to render to it. A viewport attaches to a model and renders its contents to the display surface. In addition, when the model changes, the viewport automatically redraws the affected part of the image to reflect those changes. [...] there can be multiple viewports onto the same model and each of these viewports can render the contents of the model to a different display surface.
What is Software Design?
A design must be a workable solution that meets all the
functional requirements

The quality of a design is determined by how well it
addresses the key non-functional requirements
 Extensibility, modifiability, usability, performance etc.
What should the design be based on? Other design concepts?
The design should be based on the requirements specification.
 The design should be documented (so that it supports
implementation, verification, and maintenance.)
 The design should use abstraction (to reduce complexity and to
hide unnecessary detail.)
 The design should be modular (to support abstraction,
verification, maintenance, and division of labor.)
 The design should be assessed for quality as it is being created,
not after the fact.
 Design should produce modules that exhibit independent
functional characteristics.
 Design should support verification and maintenance.
Name 4 Design asspects?
Architecture design: The division into subsytems and components

Class Design: The various features of classes

User Interface design

Algorithm design: the design of computational mechanisms

Protocol design: the design of communication protocols.
What are some design goals?
Increase profit by reducing cost and increasing revenue.
Ensuring that we actually conform with requirements
Minimize development effort and time
Increase qualities such as: usability, Efficiency, Reliability, Maintainability, Reusability
List some Principles of good design
Divide and conquer
Increase Cohesion (keep related stuff together)
Decrease Coupling (minimize dependencies between modules)
Increase the level of abstraction wherever possible (No need to know the details)
Design for reusability where possible.
Reuse Existing designs and code where possible
Design for flexibility (make future changes easier)
Anticipate obsolescence (plan for tech changes)
Design for portability
Design for testability
Design defensively (use design by contract)
What is coupling?
Coupling occurs when there are interdependencies between one
module and another
Techniques for making good design
Step 1: List and describe the alternatives for the design
Step 2: List the advantages and disadvantages of
alternative with respect to your objectives and priorities.
Step 3: Determine whether any of the alternatives prevents
you from meeting one or more of the objectives.
Step 4: Choose the alternative that helps you to best meet
Step 5: Adjust priorities for subsequent decision making.
What is software Architcture?
Software architecture is process of designing the global
organization of a software system, including:
 Dividing software into subsystems.
 Deciding how these will interact.
 Determining their interfaces.
 The architecture is the core of the design, so all software
engineers need to understand it.
 The architecture will often constrain the overall efficiency,
reusability and maintainability of the system.
What is the Multi-Layer Pattern?
In a layered system, each layer communicates only with the layer
immediately below it.

Each layer has a well-defined interface used by the layer
immediately above.
Identify four reasons why it is necessary to develop an architectural model.
To enable everyone to better understand the system
 To allow people to work on individual pieces of the
system in isolation
 To prepare for extension of the system
 To facilitate reuse and reusability
What are the contents of a good architectural model?
Design defensively:
Design for testability:
Design for portability:
Increase flexibility:
Reduce coupling:
Divide and conquer:
What are the difficulties that may arise from a system design that is too tightly coupled?
When interdependencies exist, changes in one place will require
changes somewhere else.
 A network of interdependencies makes it hard to see at a glance
how some component works.
What are the difficulties that may arise from a system design that has low cohesion?
kinda the opposite of the answer for high coupling
How does the multi-layered architecture pattern support the principles of good design?
 Divide and conquer: The layers can be independently
 Reduce coupling: Lower layers have no dependency on the
higher layers.
 Increase flexibility: you can add new facilities built on lowerlevel
services, or replace higher-level layers.
 Design for portability: All the dependent facilities can be
isolated in one of the lower layers.
 Design for testability: Layers can be tested independently.
 Design defensively: The APIs of layers are natural places to
build in rigorous assertion-checking.
How does the model-view-controller architecture pattern support the principles of good design?
 Divide and conquer: The three components can be somewhat independently
 Increase cohesion: The components have stronger layer cohesion than if the
view and controller were together in a single UI layer.
 Reduce coupling: The communication channels between the three
components are minimal.
 Increase reuse: The view and controller normally make extensive use of
reusable components for various kinds of UI controls.
 Design for flexibility: It is usually quite easy to change the UI by changing
the view, the controller, or both.
 Design for testability: You can test the application separately from the UI.
Why is Unit Testing Good?
 Identifies defects early in the development cycle. Identifies defects early in the development cycle.
 Many small bugs ultimately leads to chaotic Many small bugs ultimately leads to chaotic
system behavior system behavior
 Testing affects the design of your code. Testing affects the design of your code.
 Successful tests breed confidence. Successful tests breed confidence.
 Testing forces us to read our own code Testing forces us to read our own code – spend spend
more time reading than writing more time reading than writing
 Automated tests support maintainability and Automated tests support maintainability and
extendibility. extendibility.
Contrast Black box testing with/and without user involvment.
Without user involvment means an automatted suit test that the interface behaves as it should.

With user involment means you watch the user as they use your system, and that is your testing.