Class 8 - DevOps, Metrics, and Testing Tools Flashcards
What are the development team’s primary goals?
- Usability (debugging and UX)
- Test suite effectiveness
- Cycle time (sprint time/velocity)
- …
What are the operations team’s primary goals
- Uptime (availability)
- Response time (speed)
- Data integrity (backups)
- …
Before DevOps was used, how did the development team work with the operations team on a project?
Developers did not care about Operation’s goals and Operations did not care about Developer’s goal. Essentially, the development team and operations team disregarded goals that were not their own
DevOps
A set of software-development practices that combines a software development mentality with other functions in the organization (e.g. operations)
True or False: DevOps is about the tools used in the codebase
False. DevOps is not about tools, but about how teams work together. It focuses on people first, then process, and finally tools (only after people and process have been addressed)
What are the 4 pillars of DevOps?
Recall CAMS:
- Culture
- Automation
- Metrics
- Sharing
Culture (DevOps)
The norms by which your team operates by. Includes communication patterns and team structures.
True or False: Most problems are people problems, not technology problems
True
Automation (DevOps)
Freeing human capital from mundane tasks that can be done by a computer
Metrics (DevOps)
The way you tell whether or not something is working. Simple absence of errors is not sufficient
Goodhart’s Law
When a measure becomes a target, it ceases to be a good measure
Given an example of Goodhart’s Law in software engineering
Using lines of code as a metric for software quality. Result: Codebase become bloated with unnecessary lines of code
What are the qualities of a good metric?
- Simple and computable
- Intuitively persuasive
- Objective (not subjective)
- Consistent in the use of units and dimensions
- Programming language-independent
- Improves software quality
Give an example of a good metric
Number of defects per week:
- It is simple to calculate
- Intuitively persuasive (defects are clearly negative)
- Not based on someone’s opinion
- Consistent across units and programming languages
- Effective mechanism for improvement
Availability (Software Quality Attribute)
The extent to which the system’s services are available when and where they are needed
Installability (Software Quality Attribute)
How easy it is to correctly install, uninstall, and reinstall the application
Integrity (Software Quality Attribute)
The extent to which the system protects against data inaccuracy and loss
Interoperability (Software Quality Attribute)
How easily the system can interconnect and exchange data with other systems or components
Performance (Software Quality Attribute)
How quickly and predictably the system responds to user inputs or other events
Reliability (Software Quality Attribute)
How long the system runs before experiencing a failure
Robustness (Software Quality Attribute)
How well the system responds to unexpected operating conditions
Safety (Software Quality Attribute)
How well the system protects against injury or damage
Security (Software Quality Attribute)
How well the system protects against unauthorized access to the application and its data
Usability (Software Quality Attribute)
How easy it is for people to learn, remember, and use the system
Efficiency (Software Quality Attribute)
How efficiently the system uses computer resources
Modifiability (Software Quality Attribute)
How easy it is to maintain, change, enhance, and restructure the system
Portability (Software Quality Attribute)
How easily the system can be made to work in other operating environments
Reusability (Software Quality Attribute)
To what extent components can be used in other systems
Scalability (Software Quality Attribute)
How easily the system can grow to handle more users, transactions, servers, or other extensions
Verifiability (Software Quality Attribute)
How readily developers and testers can confirm that the software was implemented correctly
User Research
The process of understanding the needs, behaviours, and attitudes of users to inform the design and development of products
Give examples of qualitative user research
- User’s emotional journey
- List of emojis (emotional states as the user performs a task)
- Plutchik’s wheel of emotions
- Notes
- Quotes
- Sketchnotes
Give examples of quantitative user research
- Likert scales
- Time to completion of different tasks
- Error count
- Conversion numbers
- Cost-benefit analysis
- Web analytics (e.g. Google Analytics)
Likert Scale
A rating scale that qualitatively assesses opinions, attitudes, or behaviours. A common example is the following scale:
- strongly agree
- agree
- neutral
- disagree
- strongly disagree
Sketchnoting
The creative and graphic process through which an individual can record their thoughts using illustrations, symbols, structures, and texts (typography)
What cues can be used to recognize a user’s emotions?
- Tone of voice
- Words used to describe their emotions
- Sighs
- Laughter
What are some nonverbal cues that signal user dissatisfaction?
- Suddenly typing louder after making an error
- User rolling their eyes
- Making circular motions with the cursor on the screen, as if they don’t know where their cursor is
- Nervous tics
- Redness in the face or in the neck
- Change of position on the chair
- Sighing, grunting, or other noises
- Scrunching of the nose or eyes
Pipelines
Automated processes to help develop software. They test, build, and deploy your software automatically