Life Cycles, Testing, DevOps Flashcards

1
Q

Software Development Life Cycle phases

A
  1. Analysis of existing system:
  2. System requirements are identified: Propose new features, address concerns
  3. Proposed System is defined: Overall design is developed, stack is chosen
  4. New system is developed: Actual coding/implementation
  5. Testing/Integration: Test your new features, compatability
  6. Maintenance/Monitoring: Report deficiency, Use info to start new cycle
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Software Testing Lifecycle -STLC

A

1 Planning/Analysis: What needs to be tested? Is it testable?
2 Design: How to setup tests? Automated? What frameworks?
3 Develop your test cases: Write code for your tests. Find edge cases. Cover all
4 Choose an environment for your tests: What software/hardware ru using to test
5 Test Execution: Run your tests
6 Conclusion/Wrap up: Generate a report of findings

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

Defect Life Cycle

A

New - bug/defect detected
Assigned - Assigned to a developer
Rejected - Defect is thrown out for various reasons. Not a real problem
Deferred - Defect is put off for various reasons. Is it really a problem?
Test/Fix - Test the cases and attempt to fix the defect
Reassign - Failed to fix. Might not have been assigned to right developer
Verified - Other developers will verify the bug is fixed. If not, it moves back to Fix
Closed - Bug is documented as fixed

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

Testing Vocabulary

A

Test Case: Set of inputs and conditions with expected results
Test Suite - A group of test cases related to each other (same functionality)

Testing Docs:

  • Test Strategy - Document that sets the standard for testing process
  • Test Plan - Document that tells us what to test how who will test
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Types of Testing

A

White Box Testing: Testing based on a knowledge of the internal code. Low level

Black Box Testing: Testing an application without knowing how it works.

Functional Testing: Test to see if software does what it is supposed to.

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

Functional Testing

A

Functional Testing: Tests to see if software does what it is supposed to.

  • Unit Testing - Testing of the individual atomic aspects
  • Component Testing - Testing components. Comprised of several methods(units)
  • Integration Testing - Done to expose deficiencies between code components
  • API Testing - Testing an entire process, probably involves several moving parts.
  • System Testing - Testing a complete software application
  • Acceptance testing - Ensure final complete piece of software as desired(Human)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Non-functional Testing

A

Testing for non-functional aspects of the application. (The application works but is it ) : Usable, performant, Reliable;

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

Usability Testing

A

Testing an application for user friendliness.

- Done by a human.
- functions, but hard to use for whatever reason

-UAT user acceptance testing: Whether a user would want to use an application.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Performance Testing

A

Testing responsiveness, stability and efficiency

  • Load Testing - Testing a system and evaluating its behaviors under heavy use
  • Stress Testing - Evaluates if the system behaves appropriately, under stress
  • Endurance Testing - Can the app run for prolonged periods under heavy use?
  • Spike Testing - Testing to see how the app deals with sudden usage surge.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Reliability Testing

A

Tests whether the software can perform failure free operations for a length of time.

  • feature testing- test that a features operations are all executed properly
  • Load Testing(variation) - test if the software is degrading over time
  • Regression Testing - Make sure new bugs havent been introduced with new code
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Regression Testing

A

Incremental testing of software to ensure that new additions to the software do not break existing functionality.

Type of reliability testing

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

Testing Automation

A

Using software to perform manual testing

- cuts down testing time
- tests are repeatable
- After hours of testing
- Increase code coverage
- Time/Cost to produce these tests can be significant
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Positive/Negative Testing

A

Positive Testing: Testing to see that a certain procedure succeeds
- user enters valid data

Negative Testing: Testing to see that a certain procedure fails

- User enters invalid data
- Negative tests don't fail, just the procedure they test fails
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Alpha Testing/ Beta Testing

A

Alpha Testing: Testing an application how an end user might use it.
- Conducted by internal employees

Beta Testing: Releasing the software to a limited number of expected users who have no connection to the development process

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

Smoke Testing/ Flaky tests

A

Smoke Testing: Running tests just to see if your application is even in a state to be tested

Flaky Tests: Tests that have different outcomes given the same base conditions

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

Defect /Bug

A

When the software doesn’t behave as intended, often in detrimental way

  • Severity - How much does the feature get compromised when it fails
  • Priority - How pressing is it that a defect be corrected?

High severity/High Priority
Low severity/High Priority
High severity/Low Priority
Low severity/Low Priority

17
Q

Testing pyramid

A

-

           - --
         - ------
     - -manual ui--
 - --Automated ui----   - -automated Integration--  - --Automated Unit Testing---
18
Q

DevOps

A

Methodology that combines development and operations(maintaining Infrastructure)

Goal is to more efficiently produce high quality code and seamlessly transition that code into a production state.

Centered around CI/CD/CD

19
Q

Continuous integration

A

Process of continually checking code into the central repository and checking if it integrates into the code base.

-Make frequent changes to the code, then push to a repository like github and then there is an automated build process.

Example technologies: Jenkins, Travis, Github Actions

20
Q

Continuous Delivery

A

The ability to have code ready for production in a way that is often automated

Release of the application to customer/production is often ready at the press of a a button

This means tests have passed and it is ready to go

21
Q

Continuous Deployment

A

This is similar to continuous delivery, except the code to constantly being deployed to the customer/production. If all tests pass, then the code gets deployed.

22
Q

DevOps Pipeline

A

is an automated set of processes that use tools to compile, build, test and deploy our application

-Amazon Web Service- AWS (Or any competing: Azure, google cloud) and other cloud computing

23
Q

Cloud Computing

A

Important part is that we are accessing infrastructure over the internet

Nothing is stored/managed locally, except perhaps interfaces to access some resources.

This is beneficial because you pay for exactly what you need and don’t have to maintain any of the needed infrastructure.

24
Q

Elastic Compute Cloud(EC2)

A

Virtual Server- A computer running somewhere else, owned by Amazon, accessible virtually.

This allows us to maintain an ongoing server(an application running on a server)
24/7 without using our own resources.

This computer can operate at its own speeds, not yours.

25
Q

Simple Storage Service(S3)

A

Highly scalable file storage
Only pay for what you use
High durability (11 9s -> 99.999999999%) and availability
Can also act like a Static Web Host(Original purpose)

26
Q

Jenkins

A

Continuous Integration Tool
Open source automation server
build automation tool
- support for automating the process of building and deploying applications
Helps to achieve CI and can assist with CD\CD
Can include additional plugins to integrate with other technologies
- github and slack

27
Q

Linux OS

A
  • Not very popular operating system for personal desktops
  • Lightweight
  • Greater level of control
  • Open Source, which means it can be adapted to specific means
  • Free!
28
Q

Build Automation/ Dependency Manager (for our Application)

A

Maven to help aid in the compile, build or package process

29
Q

Server

A

ie Tomcat

Web Container, environment that we are going to manage our Jenkins(can also be used to deploy our application)

30
Q

Sonar

A

Static code analysis tools

Code quality analysis tool which exposes “code smells”

  • Code smell: This is code that isn’t wrong per se, just bad practice.
  • commented out code, sysout() statements

SonarQube: Central server which processes full analyses, which build into pipeline

SonarCloud: Cloud-Based system where you can configure and view the applications code analysis on the cloud-> integrate into Github rep

SonarLint: In the IDE, portions of code will be underlined if there is an issue

31
Q

Accessing your AWS Ec2 and giving credentials by command line

A

In the command line access the folder where you have your key that you downloaded when setting up EC2 / Or enter the file path in the command line.

Then type: ssh -i (name of key file) (username) ec2-user@(Ipv4 address)

You should copy the public IP address from the instance information screen and then paste it after @

You can also do with putty: provide the key and user name in ui.

or just select the instance and hit connect from the AWS instance page

32
Q

linux grep & other commands

A
Global regular expressions print:  use it to search a file or multiple files with *
-i:  case insensitive
pwd- print working directory.
cd :  back to ~
man(ual)  :  tell you about command
clear puts cursor at top of terminal
cat: concatenate
touch  creates new file
mkdir : make new directory
chmod: change permissions
yum:  linux package manager
curl: transfers files