Deep Dive Engineering Flashcards
key drivers for conceptualizing collaboration and communication
- Greater knowledge sharing and innovation:
- Provides each team member a 360-degree view
- Reduces duplication of effort
- Supports coordination activities and workflow
- Supports Quality Assurance
key mechanisms for collaboration
- Screen Sharing
- Screen Casts (recorded videos)
- Screen Shots
- Mockups (text files, paper, Microsoft excel)
key mechanisms for Communication
- Video Conversation
- Audio Conversation
- Instant Messaging
YAGNI
You Aren’t Gonna Need It
Usually used in combination with refactoring and Test Driven Development.
SOLID
Single Responsibility Principle, maximize cohesion
Open/Closed Principle:
“software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification”;
Liskov Substitution Principle
“Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.”
Interface Segregation Principle:
“clients should not depend on the interface that they don’t use”
Dependency Inversion Principle:
If a class has dependencies on other classes, it should rely on the dependencies’ interfaces rather than their concrete types.
Refactoring
a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior
- Remove duplication and unused code
- Increase abstraction
- Change to code structure to make it modular and simpler
- Increase reuse or implementing design patterns
- Increase cohesion, reduce coupling
- Change poor design or code
- Implement coding standards
Techniques used for defining system architecture
- Expert Judgment
- Whiteboard, AIP diagram
- Existing Enterprise Guidelines & Constraints
design techniques used for JIT
- Expert Judgment
- Whiteboard
three key aspects of adoption of DevOps
- people,
- process
- technology
Component Tests
verify portions of a system such as database, file systems, or network end points
System Tests
These tests exercise a complete software system including external interfaces
Functional Tests:
These tests are executed to test the functionality of the application or product from the client perspective
explore the behavior of specific business functions and highlight flaws
Performance Testing
Ensures software applications will perform well under their expected workload.
Security Testing
Automated Security testing can be applied to tests that are done to check for known vulnerabilities.
Service Virtualization
These tools help in designing and executing automated unit, functions, regression, load and performance tests for distributed application architectures which leverage, SOA, BPM architectures
Theme
very large requirement and may, sometimes, encompass entire product vision.
User Story
is a feature small enough to be delivered in iteration and represents unique business value
regression testing
check the overall essence of a feature is still intact after changes in the software in the same feature or other features
What is NOT applicable from testing perspective during the Sprint Planning event?
Test experts preparing the Test cases and automation scripts
Definition of Done’ determines if
Acceptance criteria is defined for the User Story
Strategies for testing in Agile Projects
- Identify what types of testing can be conducted during the Sprint and release
- Define when should the automated tests should be developed
- Analyze what tools can be used for automated testing, interface testing, performance testing, etc
Agile recommends functional test suites to be used for regression testing to achieve faster turnaround.
False