Test
Software Development
Questions
Adam Lass
1.1
Framework best practices analysis
Code styling analysis
Security linting
Error detection
UML Diagram creation
Duplicate Code Detection
Complexity Analysis
Secret detection
Comment styling analysis
Unused code detection
Tools
Linting
Code Style
Security
ESLint
Javascript & Typescript
sonarlint
Java, Javascript, PHP, Python & more
StyleCop
C# (.NET)
Checkstyle
Java
Pylint
Python
PEP8
Python
Bandit
Python
FindBugs (SpotBugs)
Java
(sonarcloud)
PMD
Python
(Bad practices)
Example
npx eslint --init
ESLint
npx eslint .
1.2
Unit Testing
Integration Testing
System Testing
Acceptance Testing
Types of testing
1.3
In the context of SCRUM
Example
npx eslint --init
ESLint
npx eslint .
1.4
Unit Testing
Integration Testing
System Testing
Acceptance Testing
Types of testing
1.5
Testable code
Single-responsibility principle
Open–closed principle
Liskov substitution principle
Interface segregation principle
Dependency injection principle
SOLID
Test design principles
test[ExpectedBehavior][StateUnderTest]
Naming
testGetAccountOnCPRInvalidCPRLength
testTransferAmountIsNegative
testTransferNotExists
Examples
Dependency injection
1.6
Temporal Coupling
Component A
Component B
Component C
Cyclomatic code complexity
if-then-else
do-until
while
for
M = E – N + 2P
Testable code
Single-responsibility principle
Open–closed principle
Liskov substitution principle
Interface segregation principle
Dependency injection principle
SOLID
Test design principles
1.7
Matchers
assert_that(x, equal_to(y))
assert_that(x, is_not(equal_to(y)))
Example
Unit test lifecycle
Example
1.8
Testable code
Single-responsibility principle
Open–closed principle
Liskov substitution principle
Interface segregation principle
Dependency injection principle
SOLID
Test design principles
1.9
1.10
Testable code
Single-responsibility principle
Open–closed principle
Liskov substitution principle
Interface segregation principle
Dependency injection principle
SOLID
Test design principles
test[ExpectedBehavior][StateUnderTest]
Naming
testGetAccountOnCPRInvalidCPRLength
testTransferAmountIsNegative
testTransferNotExists
Examples
Contract Testing
Dependency injection
1.11
1.12
1.13
Decision Table