How can Git help software development? ** Answ** Git is a Version Control System
(VCS). A VCS allows for the following to help software development:
-Multiple programmers can work on the same codebase at the same time
-Changes made by multiple programmers can be combined so other team members
can access the new code
-There is a way to undo changes that introduce bugs into the codebase
Context: What is Software Testing?
A Fault is a mistake? True or False ** Answ** False
When using Continuous Integration, every commit to master should be built and tested?
True or False ** Answ** True
What is the difference between a centralized vs decentralized VCS? ** Answ**
Centralized systems store all the files in a central repo. As developers make changes,
they are immediately sent to the centralized repo and made available to the whole team.
Decentralized systems also have a central repo with all the files, but changes made by
individual developers are not immediately sent to the main repo. Each developer has a
mini VCS on his or her local machine where changes can be committed without being
made available to the team. This allows for developers to work on features individually
and only push the changes to the central repo when ready.
Describe pros and cons of manual testing ** Answ** Pros
- It's is intuitive
- No upfront cost
Cons
- Time consuming
- Possible to miss mistakes
- Not easily repeatable
Describe pros and cons of automated testing ** Answ** Pros
- East to repeat
- Fewer Mistakes
- Very efficient (more simulated tasks)
Cons
- High upfront cost
- Can't test for everything like UI
- Requires maintenance
Identify scenarios where to apply either manual or automated.
Scenarios 1: You are interested in learning how user friendly your software is.
, Scenarios 2: You want to make sure your new changes didn't break your existing
features.
Scenarios 3: You want to test for game breaking bugs in a massively online multiplayer
game.
Scenarios 4: You want to verify your system can handle a large range of possible
inputs. ** Answ** 1 - Manual - This type of task really requires a human to interact
with the software.
2 - Automated - Using pre-written tests that were known to pass, you can quickly verify
that your changes didn't cause any of them to fail. This is called Regression Testing.
3 - Manual While automated tests could be used to test components of the game,
testing the combined product really requires humans actively trying to break the game
while it is running.
4 - Automated - Instead of having a human try to input thousands of possible inputs,
automated tests can randomly generate inputs in a fraction of the time. This is called
Random Testing.
What is software verification? ** Answ** The primary focus of this phase is to ensure
that the actual implementation meets the requirements set forth at the beginning. This
phase is most often associated with finding mistakes that were introduced while turning
the design into code. During verification, it may be discovered that the implementation
successfully realizes the design, but not the requirements. This would indicate that the
design is flawed in some way.
What is unit testing? ** Answ** a software testing method by which individual units
of source code—sets of one or more computer program modules together with
associated control data, usage procedures, and operating procedures—are tested to
determine whether they are fit for use
What is the difference between a failure, fault, and error? ** Answ** Error - a
mistake that introduces a fault (e.g. typo and conceptual misunderstanding)
Fault: - an instance of incorrect code that can lead to a failure
A fault is introduced to the program when a programmer makes a mistake: an error.
Failure - a deviation from the expected behavior
These failures occur because there exists a "bug" in the code: a fault.
What is the difference between functional and non-functional testing? ** Answ**
Functional Testing - These types of tests are used to verify that the software meets the
requirement specifications when it comes to functionality; does the software do the
things it is expected to do?
Non-functional Testing - These types of tests are used to verify that the software
performs at the required levels. This can literally mean performance, but also usability,
reliability, and robustness.
Describe when black box testing is to be used ** Answ** -Unlike traditional white
box testing, black box testing is beneficial for testing software usability.