VSTS와 함께하는 소프트웨어 품질 보장 및 테스팅 기법

Download Report

Transcript VSTS와 함께하는 소프트웨어 품질 보장 및 테스팅 기법

VSTS와 함께하는 소프트웨어 품질 보장
및 테스팅 기법
Kim Sung
[email protected]
http://blog.naver.com/skim21c
Samsung Electronics
Agenda
SW Quality
Software Development Life Cycle
Test Design
Test Process
Unit Test
Load Test
Visual Studio Team System
Testing with VSTS
Testing Demo
4/9/2015
Devpia A&D EVA
2
SW Quality?
Economy
Reliability
What’s the
SW Quality?
Satisfaction
Functionality
Ease of Use
Safety
???
4/9/2015
Devpia A&D EVA
3
SW Quality?
- 설치 후 기능이 정상적으로 동작하지 않는다.
- 기능 추가를 하려고 했더니 많은 곳에서 에러가 난다.
- 사용자 정보가 해킹 당했다.
- 서버가 바이러스에 감염되었다.
- 설치가 너무 어렵다.
- 사용하기가 너무 어렵다.
- 시스템을 사용하는데 너무 느리다.
4/9/2015
Devpia A&D EVA
4
Factors for Customer Satisfaction
Requirements are met
Customer
On Time Delivery
Engineer
With in Budget
Technical Support
Installer
High Quality Product
4/9/2015
Devpia A&D EVA
5
SW Development Factors
프로세스
기술
인적자원
품질 향상
Product
4/9/2015
생산성 향상
Service
Devpia A&D EVA
System
6
Requirements
poor staffing,
6%
Requirements : 37%
poor technical
skills, 7%
changing
requirement,
12%
other, 50%
incomplete
requirement,
12%
poor user input,
13%
성공적이지 못한 소프트웨어 프로젝트 요
인
4/9/2015
Devpia A&D EVA
7
Requirements
SW Requirements
Traceability
Test Case
Design
Code
4/9/2015
Devpia A&D EVA
8
Requirements
발견된 시기
추가된 시기
요구사항
아키텍쳐
구현
테스트
출시
요구사항
1
3
5-10
10
10-100
아키텍쳐
-
1
10
15
25-100
구현
-
-
1
10
10-25
결함 추가 및 발견 시기에 따른 평균 해결 비
용
4/9/2015
Devpia A&D EVA
9
Requirements
“ 요구사항은 테스트 가능해야 한다.”
Requirement 1
Test Case A
Requirement 2
Requirement 3
Test Case B
Tested
Requirement 4
Requirement 5
Untested
Requirement Verification
4/9/2015
Devpia A&D EVA
10
Architecture
GUI
GUI Layer
Application
Application Layer
Domain Layer
Infrastructure Layer
Object
Factory
Config
Manager
DAO
Sender
Protocol
Generator
Logger
Security
Receiver
Protocol
Parser
Comm
Manager
Thread
Manager
Component & Layer Architecture
4/9/2015
Devpia A&D EVA
11
Architecture
Application
IReceiver
ISender
IProtocolParser
IProtocolGenerator
ILogger
Domain Layer, Infrastructure Layer
Interface Design
4/9/2015
Devpia A&D EVA
12
Architecture
GUI
GUI Layer
Application
Application Layer
Domain Layer
Infrastructure Layer
Object
Factory
Config
Manager
DAO
Sender
Protocol
Generator
Logger
Security
Receiver
Protocol
Parser
Comm
Manager
Thread
Manager
Configurable Architecture
4/9/2015
Devpia A&D EVA
13
Implements
Code Inspection, Unit Test
error
debugging
program
fault
failure
Execution
(testing)
error, fault, failure?
4/9/2015
Devpia A&D EVA
14
Test Design
Component 2
Component 1
Function1
Function1
Function2
4/9/2015
Function2
Devpia A&D EVA
15
Test Design
Component
Network
Function1
Function2
4/9/2015
DB
Devpia A&D EVA
16
Test Design
Component
Network
Function1
Function2
4/9/2015
DB
Devpia A&D EVA
17
Test Design
Mock Object
(Network)
Component
Factory
I
Framework
Configuration
<Running Status = 0 or 1>
4/9/2015
Devpia A&D EVA
18
Test Design
Unit Test
Test Class1
Control Class1
Network
ISender
MockSender
Factory
Sender
Integration Test
Control Class2
Test Class2
Unit Test
4/9/2015
Devpia A&D EVA
19
Test Design
public interface ISender
{
byte[] sendData(byte[] data);
}
public class Sender : ISender
public class MockSender : ISender
{
{
public byte[] sendData(byte[] data)
public byte[] sendData(byte[] data)
{
{
byte[] receiveData = null;
byte[] MockData = null;
// Send Data
// Make MockData
// receive Data
return MockData;
return receiveData;
}
}
}
}
4/9/2015
Devpia A&D EVA
20
Test Design
public class SenderFactory
{
public ISender getInstance(int i)
{
ISender net;
if (i == 0)
{
net = new MockSender();
}
else
{
net = new Sender();
}
return net;
}
}
4/9/2015
Devpia A&D EVA
21
Test Design
class ControlDevice
{
int controlDoor(byte[] key)
{
SenderFactory factory = new SenderFactory();
ISender sender;
sender = factory.getInstance(config.Status);
byte[] result = sender.sendData(key);
return 1;
}
}
4/9/2015
Devpia A&D EVA
22
Refactoring Test Design
Legacy System
Legacy
Code1
Legacy
Code2
Refactoring
UI
Refactoring
Code3
Refactoring
Code1
Refactoring
Code2
Refactoring
Code4
Refactoring
Code5
4/9/2015
Devpia A&D EVA
Process
Test
Plan
Test
Case
Analysis & Design
Unit Test
Integration
Test
System
Test
Coding
Acceptance
Test
Installation
Test
Performance
Test
Stress
Test
Testing
4/9/2015
Devpia A&D EVA
24
Test Process
Specification
Or Software
Application
Modeling
Test
Models
Selection
Criteria
Test Case
Design
Test Cases
Test Design
4/9/2015
Devpia A&D EVA
25
Test Process
Test Cases
Test
Execution
Software
Under Test
Test
Results
Test
Evaluation
Test
Oracle
Test Execution and Evaluation
4/9/2015
Devpia A&D EVA
26
Test Process
Test Planning
Test Case Generation
Test environment development
Test module Development
Execution
Test results evaluation
Problem reporting / Test log
Defect tracking
4/9/2015
Devpia A&D EVA
27
What Makes Testing So Difficult?
- Inherent Complexity of software
- ill defined test base
- Constructing an operational environment for testing purpose
- Intractable nature of testing
- No royal road for testing
- Idiosyncrasy of software
- Software continuously evolves
- Testing under pressure
- Lake of test mind
4/9/2015
Devpia A&D EVA
28
Testing
Specification
11%
Design
11%
Coding
13%
Testing &
Maintenance
65%
소프트웨어 개발 비용
4/9/2015
Devpia A&D EVA
29
Unit Test
Unit Test 란?
소프트웨어 개발 시 하나의 소프트웨어 모듈이
정상적으로 기능을 수행하는지 여부를 최소 수준의
소스코드를 대상으로 시험하고 추가나 변경이
기존 소스의 영향을 찾아 개발, 추가, 변경 시 조기에
소프트웨어 버그를 찾아 수정한다.
4/9/2015
Devpia A&D EVA
30
Regression Test
Unit Test
Unit Test
Regression Test
Unit Test
Unit Test
Integration Test
Unit Test
Regression Test
Integration Test
Unit Test
4/9/2015
Devpia A&D EVA
31
Black Box & White Box Test
Black Box Testing
Selected
inputs
Resultant
outputs
Desired
output
Resultant
outputs
Desired
output
Internal
behavior
Software
design
White Box Testing
Selected
inputs
4/9/2015
Devpia A&D EVA
32
Black Box & White Box Test
Program
Specification
Test Case
Specification, Program and Test Cases
4/9/2015
Devpia A&D EVA
33
Unit Test
Specification Base Test (Black Box Test)
- Partition Testing
- Boundary Value Testing
- Random Testing
Code Base Test (White Box Test)
- Statement Testing
- Branch Testing
4/9/2015
Devpia A&D EVA
34
Partition Testing
selection
domain
4/9/2015
Devpia A&D EVA
35
Boundary Value Testing
invalid
valid
invalid
a
min-
4/9/2015
min
b
min+
nom
Devpia A&D EVA
max+
max max+
36
Random Testing
selection
selection
4/9/2015
Devpia A&D EVA
37
Statement Testing
4/9/2015
Devpia A&D EVA
38
Branch Testing
a
b
c
d
4/9/2015
Devpia A&D EVA
39
Load Test
목적
- Application의 병목 구간을 찾아 튜닝 (단위 성능 시험)
- 목표성능에 부합 여부 판단 (통합 성능 시험)
- 임계 성능 측정을 통한 서버 용량 산정 및 확장 계
획 (임계 성능 시험)
4/9/2015
Devpia A&D EVA
40
Concept for Load Test
- Named User, Concurrent User
- Load : Peak Load, Heavy Load, Average Load
- Response Time : Round Trip Time, Processing
Time, Queuing Time
- Think Time
- Request Interval
- Throughput : TPS, TPM
4/9/2015
Devpia A&D EVA
41
User and Request Interval
Named User
비접속자
Request
Response Time
Concurrent User
대기자
사용자
Response
Think Time
Request Interval
4/9/2015
Devpia A&D EVA
42
Throughput
Throughput (TPS)
임계점
고부하 구간
경합 구간
저부하 구간
임계 사용자 수
User Count (Think Time = 0)
4/9/2015
Devpia A&D EVA
43
Throughput (TPS)
Response Time and TPS
최대 허용 동시 사용자
Concurrent User
4/9/2015
Devpia A&D EVA
44
Kind of Performance Testing
목적
- 단위 성능 시험 : 개개 업무의 최대 성능을 산출
- 통합 성능 시험 : 업무 가중치와 부하 시나리오를 이용한 시험
- 임계 성능 시험 : 시스템이 발휘할 수 있는 최대 성능 측정
임계 성능 비율 = 호출빈도(Log 분석)/임계 TPS (단위성능시험)
단위 APP별 TPS = 전체 TPS × 단위 App별 업무 가중치
단위 APP별 TPS = 전체 TPS (가중치 100%)
4/9/2015
Devpia A&D EVA
45
Kind of Performance Testing
방법
- Loop Back 시험 : Loop Back Code를 추가하여 시험
- Tier 시험 : Tier간의 통신을 재현하여 측정
- Spike 시험 : 동시 사용자가 동시에 Transaction을 발생.
- Extensibility 시험 : 시스템 증설에 대한 성능 향상 비율 측정.
- Availability 시험 : Long run
성능확장 계수 (시스템 확장과 성능과의 관계)
= 성능 확장 비율 / 시스템 확장 비율
4/9/2015
Devpia A&D EVA
46
Visual Studio Team System
4/9/2015
Devpia A&D EVA
47
Static Analysis
4/9/2015
Devpia A&D EVA
48
Static Analysis
4/9/2015
Devpia A&D EVA
49
Code Coverage
4/9/2015
Devpia A&D EVA
50
Test Types
VSTS에서 제공되는 테스트
- Unit Test
- Manual Test
- Generic Test
- Web Test
- Load Test
- Ordered Test
4/9/2015
Devpia A&D EVA
51
Unit Test Method
4/9/2015
Devpia A&D EVA
52
Unit Test Results
4/9/2015
Devpia A&D EVA
53
Unit Testing With VSTS
Unit Testing Demo
4/9/2015
Devpia A&D EVA
54
Generic Test Method
4/9/2015
Devpia A&D EVA
55
Generic Testing With VSTS
Generic Testing Demo
4/9/2015
Devpia A&D EVA
56
Web Test Method
4/9/2015
Devpia A&D EVA
57
Web Test Verify Rules
유효성 검사 규칙
-
텍스트 검색 :
응답이 특정 텍스트를 포함하고 있는지를 (또는 포함하지 않는
지를)검사, 정규식 및 대소문자 구분을 지원
-
최대 요청 시간 :
지정된 시간 이내에 응답을 받았는지를 검증
-
필요한 특성 값 :
태그의 특성이 특정 값인지 검증, 대소문자 구분을 지원
-
필요한 태그 :
특정 태그가 존재하는지 검증 ; 최소 발생 값도 지원
4/9/2015
Devpia A&D EVA
58
Web Test Verify
4/9/2015
Devpia A&D EVA
59
Web Test Verify
4/9/2015
Devpia A&D EVA
60
Web Testing With VSTS
Web Testing Demo
4/9/2015
Devpia A&D EVA
61
Load Test Method
4/9/2015
Devpia A&D EVA
62
Load Test Method
4/9/2015
Devpia A&D EVA
63
Load Testing With VSTS
Load Testing Demo
4/9/2015
Devpia A&D EVA
64
Reference
- Microsoft, CODE COMPLETE Second Edition, 2004
- WILEY, PATTERN-ORIENTED SOFTWARE ARCHITECTURE Vol1, 1996
- http://www.microsoft.com/korea/eseminar/default.aspx?CateID=7
- http://msdn2.microsoft.com/en-us/teamsystem/default.aspx
- Microsoft, VISUAL STUDIO 2005 TEAM SYSTEM, 2005
4/9/2015
Devpia A&D EVA
65
감사합니다.
4/9/2015
Devpia A&D EVA
66