CLASS lcl_test DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS:
      func_meth
        IMPORTING
          i_param TYPE i
        RETURNING
          VALUE(r_res) TYPE char1.
ENDCLASS.

l_res = lcl_test=>func_meth( 1 ).

* you could also call it like this
l_res = lcl_test=>func_meth( i_param = 1 ).

* also this variant is possible
l_res = lcl_test=>func_meth( EXPORTING i_param = 1 ).

* the traditional CALL METHOD syntax would be like this
CALL METHOD lcl_test=>func_meth
  EXPORTING
    i_param = 1
  RECEIVING
    r_res = l_res.


'SW > ABAP' 카테고리의 다른 글

YSOURCEDOWN  (0) 2024.03.28
YFILESHARING  (0) 2024.03.27
SAP HANA Studio 설치, ADT 설치(ABAP Development tools) 설치  (0) 2023.06.23
picture 조회 안되는 현상 조치  (0) 2017.06.05

Coursera 에서 제공하는 Machine learning by Andrew ng 의 강의내용 정리입니다.


Week 1

- What is Machine Learning?

기계 학습의 두 가지 정의가 제공됩니다. Arthur Samuel은 이것을 "컴퓨터에 명시 적으로 프로그래밍하지 않고 배우는 능력을주는 연구 분야"라고 묘사했습니다. 이것은 오래되고 비공식적 인 정의입니다.

Tom Mitchell은보다 현대적인 정의를 제공합니다. "컴퓨터 프로그램은 P로 측정 한 T에서의 작업 성능이 경험 E로 향상되면 작업 T와 성능 측정 P와 관련하여 경험 E를 통해 배우는 것으로 알려져 있습니다. "

예 : 체커 연주.

E = 체커 게임을 많이 한 경험

T = 체커를하는 작업.

P = 프로그램이 다음 게임에서 이기게 될 확률.

일반적으로 모든 기계 학습 문제는 크게 두 가지 분류 중 하나로 분류 될 수 있습니다.

Supervised learning(지도 학습) 및 Unsupervised learning(비지도 학습).


- Supervised Learning

감독 학습에서 우리는 데이터 집합을 제공 받고 입력과 출력 사이에 관계가 있다는 아이디어를 가지고 올바른 출력이 어떻게 보이는지 알고 있습니다.

감독 학습 문제는 "회귀"및 "분류"문제로 분류됩니다. 회귀 문제에서 우리는 연속 출력 내에서 결과를 예측하려고합니다. 즉, 입력 변수를 일부 연속 함수에 매핑하려고합니다. 분류 문제에서 우리는 이산 출력에서 ​​결과를 예측하려고합니다. 즉 입력 변수를 이산 카테고리로 매핑하려고합니다.

예 1 : 부동산 시장 규모에 관한 자료가 있으면 가격 예측을 시도하십시오. 크기의 함수로서의 가격은 지속적인 산출물이므로 회귀 문제가됩니다.

우리는 주택이 "물가보다 더 많이 또는 적게 팔느냐"에 대한 결과를 대신 제시함으로써이 사례를 분류 문제로 바꿀 수 있습니다. 여기서 우리는 가격에 따라 주택을 두 개의 개별 카테고리로 분류합니다.

예 2 :

(a) 회귀 - 사람의 그림이 주어지면 주어진 그림을 기준으로 나이를 예측해야한다.

(b) 분류 - 종양이있는 환자에게 종양이 악성인지 양성인지를 예측해야합니다.

- Unsupervised learning

지도되지 않은 학습은 우리의 결과가 어떻게 보일지 거의 또는 전혀 모르는 상태로 문제에 접근 할 수있게 해줍니다. 우리는 변수의 효과를 반드시 알 필요가없는 데이터로부터 구조를 도출 할 수 있습니다.

우리는 데이터의 변수들 사이의 관계에 기반하여 데이터를 클러스터링함으로써이 구조를 도출 할 수 있습니다.

지도되지 않은 학습의 경우 예측 결과를 기반으로 한 피드백이 없습니다.

예:

클러스터링 (clustering) : 1,000,000 개의 서로 다른 유전자를 모으고 이들 유전자를 수명, 위치, 역할 등과 같은 다양한 변수에 의해 어떻게 유사하거나 관련이있는 그룹으로 자동 분류하는 방법을 찾는다.

비 클러스터링 : "Cocktail Party Algorithm"은 혼돈스러운 환경에서 구조를 찾을 수있게합니다. (즉, 칵테일 파티에서 소리의 메쉬로부터 개별 음성 및 음악을 식별).


- Model Representation

미래의 사용을위한 표기법을 만들기 위해 x (i)를 사용하여 입력 특성이라고도하는 "입력"변수 (이 예제에서는 거실)를 나타내고 "출력"또는 목표 변수를 나타내는 y (i)를 나타냅니다. 우리는 (가격)을 예측하려고 노력하고 있습니다. 쌍 (x (i), y (i))을 학습 예제라고 부르며 학습을 위해 사용할 데이터 집합, 즉 m 개의 학습 예제 목록 (x (i), y (i)); = 1, ..., m-은 훈련 세트 라 불린다. 표기법에서 위 첨자 "(i)"는 단순히 훈련 세트에 대한 지수이며 지수 계산과는 아무런 관련이 없다는 점에 유의하십시오. 또한 입력 값의 공간을 나타내는 X와 출력 값의 공간을 나타내는 Y를 사용합니다. 이 예에서 X = Y =.

감독 학습 문제를보다 공식적으로 설명하기 위해, 우리의 목표는 주어진 학습 집합에서 h : X → Y 함수를 학습하여 h (x)가 y의 해당 값에 대한 "좋은"예측 자라는 것입니다. 역사적인 이유로,이 함수 h는 가설이라고 불린다. 따라서 회화 적으로 볼 때이 과정은 다음과 같습니다.

 


우리가 예측하려고하는 목표 변수가 주택 예에서와 같이 연속적 일 때, 우리는 학습 문제를 회귀 문제라고 부릅니다. y가 소수의 이산 값만을 취할 수있는 경우 (예 : 거주 지역이 주어지면 주거가 주택인지 아파트인지 예측하기를 원할 경우),이를 분류 문제라고 부릅니다.


- Cost function

비용 함수를 사용하여 가설 함수의 정확성을 측정 할 수 있습니다. 이것은 x와 실제 출력 y의 입력 값을 가진 가설의 모든 결과의 평균 차이 (평균보다 더 좋은 버전)를 취합니다.

 

그것을 분해하기 위해서는 12 x ¯ 는 hθ (xi) -yi의 제곱 평균 또는 예측값과 실제 값의 차이입니다.

이 함수는 "제곱 오류 함수"또는 "평균 제곱 오류"라고합니다. 구형 함수의 미분 항이 12 항을 취소하므로, 평균은 구배 강하의 계산의 편의를 위해 반으로 나뉩니다 (12). 다음 이미지는 비용 함수가 수행하는 것을 요약합니다.

 

 


- Cost function Intuition 1

시각적으로 생각하면 우리의 훈련 데이터 세트는 x-y 평면에 흩어져 있습니다. 우리는이 흩어져있는 데이터 포인트를 통과하는 직선 (hθ (x)로 정의)을 만들려고합니다.

우리의 목표는 최상의 라인을 확보하는 것입니다. 가능한 최상의 선은 라인에서 산란 된 점의 평균 제곱 된 수직 거리가 가장 작을 것입니다. 이상적으로는 선이 교육 데이터 세트의 모든 점을 통과해야합니다. 이 경우 J (θ0, θ1)의 값은 0이됩니다. 다음 예제는 비용 함수가 0 인 이상적인 상황을 보여줍니다.

 

θ1 = 1 일 때, 모델의 모든 단일 데이터 포인트를 통과하는 1의 기울기를 얻습니다. 반대로, θ1 = 0.5 일 때 우리의 적합도에서 데이터 포인트까지의 수직 거리를 알 수 있습니다.

이것은 비용 함수를 0.58로 증가시킵니다. 다른 여러 점을 플롯하면 다음 그래프가 나타납니다.


- Cost function Intuition 2

등고선 플롯은 많은 등고선을 포함하는 그래프입니다. 두 변수 함수의 등고선은 같은 선의 모든 점에서 상수 값을가집니다. 그러한 그래프의 예가 바로 아래에 있습니다.

 

 

어떤 색을 취하고 '원'을 따라 가면 비용 함수와 동일한 가치를 기대할 수 있습니다. 예를 들어 위의 초록색 선에있는 세 개의 녹색 점은 J (θ0, θ1)에 대해 동일한 값을 가지므로 결과는 같은 선을 따라 나타납니다. 원으로 표시된 x는 θ0 = 800 및 θ1 = -0.15 일 때 왼쪽의 그래프에 대한 비용 함수의 값을 표시합니다. 또 다른 h (x)를 사용하고 등고선 그래프를 그려 보면 다음과 같은 그래프가 표시됩니다.

 

θ0 = 360이고 θ1 = 0 일 때 윤곽 플롯에서 J (θ0, θ1)의 값이 중심에 가까워 지므로 비용 함수 오차가 줄어 듭니다. 이제 우리의 가설 기능에 약간의 양의 기울기가 주어지면 데이터가 더 잘 들어 맞습니다.


- Gradient Descent

등고선 플롯은 많은 등고선을 포함하는 그래프입니다. 두 변수 함수의 등고선은 같은 선의 모든 점에서 상수 값을가집니다. 그러한 그래프의 예가 바로 아래에 있습니다.

 

어떤 색을 취하고 '원'을 따라 가면 비용 함수와 동일한 가치를 기대할 수 있습니다. 예를 들어 위의 초록색 선에있는 세 개의 녹색 점은 J (θ0, θ1)에 대해 동일한 값을 가지므로 결과는 같은 선을 따라 나타납니다. 원으로 표시된 x는 θ0 = 800 및 θ1 = -0.15 일 때 왼쪽의 그래프에 대한 비용 함수의 값을 표시합니다. 또 다른 h (x)를 사용하고 등고선 그래프를 그려 보면 다음과 같은 그래프가 표시됩니다.

 

θ0 = 360이고 θ1 = 0 일 때 윤곽 플롯에서 J (θ0, θ1)의 값이 중심에 가까워 지므로 비용 함수 오차가 줄어 듭니다. 이제 우리의 가설 기능에 약간의 양의 기울기가 주어지면 데이터가 더 잘 들어 맞습니다.

 

위의 그래프는 가능한 한 비용 함수를 최소화하므로 θ1과 θ0의 결과는 각각 약 0.12와 250이되는 경향이 있습니다. 우리의 그래프에서 그 값을 오른쪽으로 그려 보면 내부의 가장 큰 '원'의 중심에 우리의 포인트가 놓여있는 것 같습니다.


- Gradient Descent For Linear Regression

선형 회귀의 경우에 특별히 적용될 때, 새로운 형태의 그래디언트 강하 방정식이 도출 될 수있다. 우리는 실제 비용 함수와 실제 가설 함수를 대체하고 방정식을 다음과 같이 수정할 수 있습니다.

수렴 될 때까지 반복 :

 

여기서 m은 훈련 세트의 크기이고, θ0는 주어진 훈련 세트 (데이터)의 θ1 및 xi, yiare 값과 동시에 변할 수있는 상수이다.

우리는 θj에 대한 두 가지 경우를 θ0과 θ1에 대한 별도의 방정식으로 구분했다. 그리고 θ1에 대해서는 미분으로 인해 xi에 끝에 곱하는 것입니다. 다음은 단일 예제에 대한 ∂∂θjJ (θ)의 도출입니다.

 

이 모든 것의 요점은 우리 가설을 추측하고이 구배 하강 방정식을 반복적으로 적용하면 우리의 가설이 점점 더 정확해질 것이라는 것입니다.

 

따라서 원래 비용 함수 J에 대한 그래디언트 디센트입니다.이 방법은 모든 단계에서 전체 교육 세트의 모든 예를 살펴보고 일괄 그래디언트 디센트라고합니다. 그라디언트 디센트는 일반적으로 로컬 최소 점의 영향을 받기 쉽지만 선형 회귀에 대해 여기에서 제기 한 최적화 문제는 전역 적이며 다른 로컬 최적화가 하나도 없음을 유의하십시오. 따라서 그라디언트 디센트는 (학습 속도 α가 너무 크지 않다고 가정 할 때) 전역 최소값으로 항상 수렴합니다. 실제로 J는 볼록한 2 차 함수입니다. 다음은 2 차 함수를 최소화하기 위해 실행되는 그라디언트 디센트의 예입니다.

위에 표시된 타원은 2 차 함수의 윤곽입니다. 또한 그라데이션 하강에 의해 취해진 궤도가 (48,30)에서 초기화되었다. 그림에서 x는 (직선으로 연결되어있는) 기울기 강하가 최소로 수렴 할 때 통과 한 θ의 연속적인 값입니다.

 

----- Linear Algebra Review

 아래 내용은 선형대수 기초내용 리뷰로 선형대수를 알고 있는 경우 건너뛰어도 좋습니다.


- matrix & Vector

rows X columns

R 2X3 는 2X3 로 이뤄진 행렬을 의미함

A(i,j) 는 A 행렬의 i row 의 j 컬럼의 entry 를 의미한다.

Vector : an nX1 matrix => N demensional vector 라고 부름

R 4 는 4차원 벡터를 의미한다.

Y(i) 는 Y 벡터의 i 차원값의 entry 를 의미한다.

1-indexed vector 는 y1,y2,y3 로 시작 => 프로그래밍에서 많이 사용됨(더 직관적)

0-indexed ventor 는 y0,y1,y3 로 시작 => 머신러닝에서 많이 사용됨

matrix addition

A(i,j) + B(i,j) 같은 entry 끼리 더함

차원이 다른 행렬은 더할수 없다.

scalar multiplication

3 X A(i,j) 모든 entry 에 3을 곱함

combination of operands

일반 사칙연산 순서와 마찬가지로 곱셈, 나눗셈을 먼저하고 덧셈 뺄셈은 나중에 하며 순서대로 한다.

[ 1 3 ] [ 1 ]  = [ 1 X 1 + 3 X 5 ] 

 4  0     5          4 X 1 + 0 X 5

 2  1                 2 X 1 + 1 X 5

A(m,n) X Y(n) = Y(m) 

m x n 행렬과 n 벡터를 곱하면 m벡터를 구할 수 있다.

y = a + bx 일경우 으로 x를 앞에 1을 붙인 행렬로 만들어 계산한다.

[ 1 x1 ] [ a ] = [ y1 ]

  1 x2      b        y2

       1 x3            y3

즉, DataMatrix X parameters 로 행렬곱으로 표현가능하다.

주의할 점

스칼라곱은 교환법칙이 성립하나 행렬곱은 교환법칙이 성립하지 않는다.

스칼라곱: a x b = b x a,   행렬곱 : A X B <> B X A

스칼라곱과 마찬가지로 행렬곱도 결합법칙이 성립한다.

스칼라곱 : a x (b x c) = (a x b) x c, 행렬곱 :  A X (B X C) = (A X B) X C

identity matrix (항등행렬)

스칼라에서 1 은 곱셉의 항등값이다. 1 x z = z x 1

행렬에서 I 항등행렬이 있다. I X A = A X 1 : I(n,n) row, column 이 같은 entry 만 1 이고 나머지는 0 인 정사각형 행렬

- Inverse and Transpose (역행렬과 전치행렬)

곱셈에 대한 항등원 1을 같게 하는 것. 3 X (1/3) = 1

A의 역행렬 A^-1 : A(A^-1) = (A^-1)A = I

0의 역행렬은 없다. 스칼라도 마찬가지 (undefined)

A^T 는 A(i,j) A^T(j,i) 로 row column 을 맞바꾼것. 대각선 거울로 반사시킨 모양과 같음

3주간 출퇴근시간활용하여 반복해서 들었던 HIMYM 에피1을 받아쓰기했다.
좀 더 들을까 했지만 지겹기도 너무 지겨웠고 무엇보다 더 들어도 안들리는 문장은 영원히 안들릴것 같았다. 원래는 받아쓰기하고 영영사전을 찾아 스펠을 확인하는 것인데 너무 빠른부분은 단어 키워드만 들렸기 때문에 지문을 찾아 틀린부분을 빨간펜으로 적었다.

그 결과 ㅋㅋㅋ 노트의 페이지마다 절반이 붉게 물들었다. ㅋㅋㅋ 정신없이 받아적느라 이쁘게 적진 못하고 마구잡이로 노트를 썼는데 그래도 총 21분짜리 영상이 앞뒤로 9장이 나왔고 적는데 걸린 시간은 약 7분 받아적으면 한 시간이 흘렀다.
중간에 시계를 보면 '10분도 안했는데 벌써 한시간이나 흘렀어? 아 이거 이렇게 하는게 의미있나' 하며 끊임없이 의구심이 든다. 혹 이 방법을 시도하시는 분이 계시다면 2단계에선 분량을 정하고 중간에 시계를 보지 않는것을 권장한다. 정신건강에 좋지 않다.
일단 주욱 다 일회차 받아적는데 3시간 이상 소요되었고,
다시 지문보면서 한번 더 들으면서 수정하는데 또 한 2시간 이상 소요, 하루종일 이것만 하는것이 아니기 때문에 총 3일이 소요되었다.

끝내놓고 페이지를 다시 넘겨보면 대략 아래와 같은 분류이다.

1. 너무 빨라서 아예 문장을 통으로 놓치고 중간중간 키워드만 적음

2. 소리는 다 들은것같아서 단어를 적긴 적었으나 연음, 발음등으로 엉뚱한 단어를 적음

3. 완벽하게 들었다고 생각했으나 발음을 거의 하지 않고 지나가는 단어 누락


1번은 대부분 긴문장에 해당하는 부분이었고 2번은 내가 왜 이 단어를 적었지 싶어서 다시 들어보면 또 엉뚱한 소리로 들렸다. ㅋㅋㅋ 3번은 진짜 완벽하게 문장의 모든 단어를 들었다고 자신했으나 지문을 보고 어이가 없었다. 대상영상의 스토리 자체가 일상적인 이야기를 하는 것이어서 의외로 모르거나 어려운 단어는 나오지 않았다. 지금까지 영어공부 한 방법을 생각해보면 제일 먼저 단어장들고 일단 voca 부터 파고들었던것 같았는데 문제는 그것이 아니었다.

모르는 단어는 고사하고 내가 아는 단어조차 듣고 쓰질 못했다. 전체적으로 are, is, a, the, of, on 등과 같은 be동사, 전치사, 관사류를 정말 엄청나게 빼먹었다. 거의 다 빨간펜으로 문장중간에 넣었다. 좀 깨달아지는 바가 있는것이 저런 기초단어도 활자로 된 영단어를 내가 알고있는것이지 원어민이 소리로 된 영단어는 내가 모르는것이구나 싶었다. 영영사전을 빨리 사야하나 싶어서 조바심이 났는데 ㅋㅋㅋ 사실 몇 달은 필요없을 것 같다. 이제 완성된 지문을 입에 익숙해질때까지 반복해서 소리내어 읽기를 시작해봐야겠다.


'English' 카테고리의 다른 글

영절하 1단계 3주 경과  (0) 2017.06.04
영어공부 절대로 하지마라 (영절하) 방법 정리  (0) 2017.05.28

load_picture_from_url method 를 사용하여 screen 에 이미지를 출력한다
이미지가 화면에 나타나지 않는 경우가 있는데 아무리 구글링을 해봐도 로컬에 있는 이미지파일을 sap 에 업로드하고 create url function을 사용해 조회하라는 가이드밖에 찾지 못했다 내 상황은 이미지서버가 별도로 존재하여 그 많은 이미지파일을 다 업로드 할수가 없었다 비슷한 async 도 사용해보고 flush 도 다 해봤지만 별수가 없었다 결국 원인을 찾았는데 sapgui 730 버전에서 이미지조회가 불안정했고 740 버전에서 잘 나타났다 이런 버그패치는 잘 알려졌으면 좋겠는데... 몇일을 고생한것보다 원인을 찾았음에 더 기쁘다 패치 배포해보면 확실히 밝혀질듯

SAPGUI 730 -> SAPGUI 740 패치후 이미지 파일이 나오지 않는 문제가 해결되었다.

역시 패치문제였던 것이다. 추가영향성분석이 끝나는대로 배포할 계획 ㅎ

이외 유용한 참고
http://abap-explorer.blogspot.kr/2008/08/html-through-abap.html?m=1


'SW > ABAP' 카테고리의 다른 글

YSOURCEDOWN  (0) 2024.03.28
YFILESHARING  (0) 2024.03.27
SAP HANA Studio 설치, ADT 설치(ABAP Development tools) 설치  (0) 2023.06.23
ABAP OOP method 호출방법  (0) 2017.08.08

영절하 1단계 3주가 지났다.

출퇴근시간을 활용하여 하고있는데 한시간짜리를 죽 듣진 못했지만 나에게 맞는 HIMYM 에피1을 반복해서 듣고있다.

2주째가 되었을때 같은 에피소드를 수차례 반복해서 들으니 너무 지겨웠다. 어서 이걸 그만두고 다음 2단계로 넘어가고 싶은 생각이 간절했다. 그래서 영어잘하는 후배에게 진단을 받았는데 느리게 들릴때까지 더 해보라고 해서 1주 더했다.

사실 크게 달라진것 같진 않다. 같은 내용을 3주째 들으니 이제 대충 이 대화를 들으면 다음에 무슨 대화가 나오는지 예상은 된다.

물론 100% 다 이해하진 못한다. 하지만 소리는 다 듣는것 같다. 무슨 단어인지 모르는 부분이 있긴하나 그 부분을 수차례 다시들어도 마찬가지이다. 횟수를 더 늘린다고 해서 들릴것 같진 않았다. 이전에 쫓아갔던 문장들(무슨 의미인지 이해하고 모든 단어가 들리는 문장)이 이제는 좀 여유롭게 들린다. 이게 느리게 들린다는 의미인가? 잘 모르겠다.

어쨌든 한시간짜리 분량도 아닌 고작 20여분짜리 분량을 3주나 들었고 이정도면 충분히 반복해서 들은것 같다. 영절하의 1단계 학습법인 귀에 소리를 익숙하게 한다 라는 목적은 달성한것 같다. 내일 월요일 출근하면서 마지막으로 한번 더 듣고 2단계 받아쓰기로 넘어가봐야겠다. 2단계는 출퇴근하면서 할 수가 없기 때문에 더 큰 의지가 필요하지만 지금까지 귀에 소리를 익숙하게 해놓은게 아까워서라도 꼭 2단계를 끝내고 싶다.

2단계 받아쓰기 완료함과 동시에 다음 에피소드 1단계 시작해야겠다. 다음 에피소드는 3주까지 안걸렸으면 좋겠다. 내일 어떻게 될까? 약간 긴장된다.  

'English' 카테고리의 다른 글

영절하 2단계 진입  (0) 2017.06.08
영어공부 절대로 하지마라 (영절하) 방법 정리  (0) 2017.05.28

프로그램을 잘 설계 개발하는것도 중요하지만 완성된 프로그램이 목적대로 잘 수행하는지 테스트해보는 것도 중요하다.

대부분의 사고는 충분한 테스트가 되지 않은 상태에서 릴리즈되고 숨어있던 사고가 터진다.

하지만 당장 개발하기도 빠듯한데 테스트에 시간을 투자하기가 매우 부담스러운것은 사실이다. 제한된 시간에 효과적으로 테스트하기 위해 고민을 많이 하신 분들의 테스트 기법중 몇가지를 나열한다.


명세기반 기법(Specification based)

강한 동등 분할 : 입력가능한 경우의 수에 대한 모든 조합을 테스트. input 변수가 5개이고 각각 3,5,4,2,10 가지의 입력변수를 가질경우 3 X 5 X 4 X 2 X 10 = 1200가지 경우의 수를 테스트 해보는 방법. 모든 경우의 수에 대한 테스트가 가능하지만 경우의 수가 엄청나게 많아질 수가 있다. 


약한 동등 분할 : 입력가능한 경우의 수 중 가장 많은것 기준으로 조합 테스트. input 변수가 5개 이고 각각 3,5,4,2,10 가지의 입력변수를 가질경우 가장 많은 10개 기준으로 테스트해보는 방법. 10개보다 적은 3,5,4,2 가지의 변수는 10개 이내에서 반복하여 input표를 채운다. 적은 횟수의 테스트가 가능하지만 테스트 누락되는 경우의 수가 존재함


조합테스팅(Pair wise Testing) : 강한 동등 분할과 약한 동등 분할의 중간 방법으로 테스트를 하는데 필요한 값들이 다른 파라미터의 값과 최소한 한번씩은 조합을 이룬다. 조합은 약한 동등 분할과 흡사하게 시작하지만 다른 입력파라미터와의 짝이 겹치지 않게 바꿔주는데 다른 파라미터의 값과 최소한번씩 조합이 없을경우 횟수를 늘려서 약한 동등 분할보다는 테스트횟수가 늘어난다. 하지만 모든 경우의 수를 전부 테스트하지는 않기 때문에 강한 동등 분할보다는 적은 횟수를 테스트한다. 테스트 파라미터 조합을 만드는 것이 어렵기 때문에 종종 tool을 활용한다.


경계값 분석 : 범위값을 테스트하는데 범위중간의 값보다 경계의 값을 위주로 테스트한다. 즉 이상, 초과, 이하, 미만과 같이 >, >=, <, <= 처럼 의미가 모호할 수 있는 부분을 테스트한다. 입력 파라미터에 경계에 해당하는 값을 넣어 테스트해 본다. 사람들의 대화에서 흔히 전달오류가 발생하는 부분을 확인하는 기법이다.


결정테이블(decision table) : 테스트수행에 필요한 입력의 조합을 구하기 위해 사용한다. 결정 명세를 분석하여 원인과 효과를 활용하여 하나의 테이블에 작성한다. input 파라미터가 3개이고 각각 boolean 타입을 가지고 있을 경우 2^3 = 8가지 조합이 나오는데 이에 따른 원인(cause)에 의미가 없는 효과(effect)는 테스트해 볼 필요가 없기 때문에 8가지 조합에서 필요없는 테스트를 제외하면 더 적은 수의 테스트만 할 수 있다.  


상태전이 기법(state transition testing) : 이벤트, 액활동상태상태전이 사이의 관계를 검증하는 테스팅 기법이다시스템의 소프트웨어에서 상태기반 행위가 설계 내용과 일치하는지 검증하는 것이다단순 상태전이도(State transition Diagram)를 도식화하고 스위치레벨(Switch Level)이 얼마나 되는지 확인한다. 주로 임베디드에서 많이 사용하는 기법이나 일반 비즈니스 시스템에서도 화면끼리의 영향을 주는데 파악이 용이하여 활용되고 있다.


구조기반 기법(Structure based)

제어흐름 테스트(Control flow test) : 프로세스 흐름을 도식화한 flow chart 에 따라 모든 flow 경로에 대한 프로그램이 수행하도록 하여 프로그램이 설계된 대로 동작하는지 확인하는 방법이다.


데이터 흐름 테스트(Data flow test) : 제어흐름 뿐 아니라 데이터의 사용도 에러를 유발할 수 있다는 가능성에서 나타난다. 데이터는 정의되거나 사용되거나 삭제된다. 또한 서브루틴에 들어가거나 빠져나온다. 이런 데이터의 흐름조합에 따라 오류가 발생할 수 있는 패턴을 점검한다.


최소비교 테스트(Elementary comparison test)


경험기반 기법(Experience based)

에러추정 기법(Error guessing) : 경험 많은 테스터가 프로그램의 어느 부분에 에러가 많이 나는지 예측하고 테스트 케이스를 도출한다.


매운 고갈비

재료

고등어 1마리, 청양고추 약간, 홍고추 약간, 통깨 약간, 식용유 2큰술

고등어 밑간 : 맛술 2큰술, 생강즙 1큰술, 후추 약간

고갈비 양념 : 고추장 1큰술, 간장 1큰술, 매실청 2큰술, 고춧가루 약간, 다진 마늘 1큰술, 맛술 1큰술, 참기름 1큰술


레시피

1. 고추장, 간장, 매실청, 고춧가루, 다진마늘, 맛술, 참기름을 넣고 양념장을 만든다.

2. 고등어는 손질 후 반으로 갈라 맛술, 생강즙, 후추로 밑간한다.

3. 팬에 식용유를 두르고 수분을 제거한 고등어를 앞뒤로 노릇하게 굽는다.

4. 고등어 안쪽 살에 양념을 골고루 발라준다.

5. 180도 오븐에서 10분간 구워준다.

6. 얇게 썬 고추와 통깨를 뿌려 완성한다.


- 고등어에 식초를 살짝 뿌려두면 살이 단단해진다.

- 고등어를 구울 때 밀가루를 묻혀 구우면 쉽게 으스러지지 않는다.

- 양념을 바른 뒤 오븐에 굽지 않고 바로 먹어도 된다.


새우애호박전

재료

애호박 1개, 새우 70g, 다진 마늘 약간, 다진 파 약간, 다진 청양고추 약간, 다진 양파 약간, 부추 약간, 소금 약간, 후추 약간, 맛술 1큰술, 부침가루 또는 튀김가루 2큰술(농도 조절), 계란 2개, 식용유


레시피

1. 애호박 0.8~1cm 두께로 썬다.

2. 숟가락으로 애호박 속을 반쯤 판다.

3. 애호박에 소금을 뿌려 10분간 절인다.

4. 새우, 마늘, 파, 청양고추, 양파, 부추를 잘게 다진다.

5. 다진 새우, 마늘, 파, 청양고추, 양파, 부추에 소금, 후추, 맛술, 부침가루(또는 튀김가루)를 넣고 소를 만든다.

6. 애호박에 밀가루를 살짝 묻히고 새우소를 채운다.

7. 애호박에 밀가루, 계란을 묻힌다.

8. 기름을 넉넉하게 두른 팬에 노릇하게 굽는다.


계란국

재료

계란 2개, 대파 1뿌리, 새우살 약간, 청주 2큰술, 국간장 0.5큰술, 소금 약간, 후추 약간, 육수 600g


레시피

1. 육수에 재료를 넣고 끓인다.

2. 계란물을 풀어 원을 그리며 붓는다.


대망의 요리강좌 마지막날이다 3월부터 시작했는데 금새 지났다. 사실 재료나 레시피는 인터넷에 찾아봐도 알 수 있지만 요리는 직접 해보는것이 최고인듯 하다. 그 동안 칼질도 조금더 능숙해졌고 어떤 요리를 하더라도 두려움이 약간 사라졌다. 강좌를 듣기전에는 내가 그런걸 어떻게 하냐는 생각부터 들었는데, 지금은 해보지 않은 요리라도 레시피와 재료만 찾아보면 어느정도 그럴듯하게 할 수 있을것같은 근자감? 이 좀 생겼다. 아무튼 가볍게 요리배워보고 싶다면 주변에서 이런것도 배워두면 좋을것 같다. 

앞으로도 해보고 싶은 요리가 있으면 하나씩 해보고 싶다. 짧은 강좌였지만 요리배우길 잘했다.



고추잡채

재료

돼지고기 200g, 홍피망 50g, 노란 파프리카 50g, 양파 50g, 새송이버섯 50g, 식용유 2큰술, 꽃빵

돼지고기 밑간 : 맛술 1큰술, 다진 마늘 1큰술, 생강 약간, 후추 약간

양념 : 고추기름 1큰술, 굴소스 1큰술, 고춧가루 1/2큰술, 설탕 1/2큰술, 간장 1큰술, 참기름 1큰술


레시피

1. 얇게 채 썬 돼지고기는 맛술, 다진 마늘, 다진 생강, 후추로 밑간한다.

2. 파프리카와 양파, 새송이버섯은 굵게 채썬다.

3. 팬에 식용유를 두르고 양파, 파프리카, 새송이버섯 순으로 넣어 볶는다.

4. 채소를 볶은 팬에 고추기름을 두르고 밑간한 돼지고기를 넣고 볶는다.

5. 고기가 거의 다 익을 때쯤 볶아둔 채소를 넣고 굴소스, 고춧가루, 간장으로 간을 해서 잘 볶아 둔다.

6. 마지막에 참기름을 한 큰술 두른다. 


- 돼지고기 대신 소고기 사용 가능


파프리카 오징어말이

재료

오징어, 홍피망, 노란 파프리카, 미나리 또는 파(또는 부추), 맛술 2큰술, 후추 약간

초고추장 : 고추장 2큰술, 고춧가루 1큰술, 다진 마늘 1큰술, 매실청 2~3큰술, 식초 2~3큰술, 통깨 약간


레시피

1. 오징어는 내장을 제거한다. (취향에 따라 껍질 제거)

2. 파프리카는 1x3~4cm길이로 썬다.

3. 끓는 물에 미나리를 살짝 데친다.

4. 데친 오징어를 식힌 뒤 먹기 좋은 크기로 썬다.

5. 초고추장을 만든다.

6. 오징어와 파프리카를 미나리로 묶는다.


- 오징어 대신 낙지, 쭈꾸미 가능

- 오징어 껍질을 벗길 때에는 소금 또는 키친타월로 벗기면 수월하다.


중국집에서 시켜먹어야만 되는 줄 알았던 고추잡채를 배워서 신기했다. 심지어 맛도 괜찮다. 꽃빵만 마트에서 사서 찐다음 해먹으면 근사한 중식요리가 따로 없다. 오징어는 삶아질때 말리는 방향이 있기 때문에 몸통을 세로로 길게 썰면 동그랗게 말리고 가로로 길게 썰면 빨대처럼 말린다. 파채칼로 벌집모양의 칼집을 내면 삶았을때 모양도 예쁘고 간도 잘밴다. 이런것까지 배우니 꽤나 전문적이 된듯한 기분이다.


소고기무국

재료(1인분)

한우 국거리 200g, 무 250g, 대파 1뿌리, 청양고추 1개, 다진 마늘 1큰술, 후추 약간, 맛술 2큰술, 국간장 1~2큰술, 소금 약간, 설탕 약간, 참기름 1큰술, 물 4~5컵, (표고버섯 가루, 다시마 약간)


레시피

1. 핏물을 제거한 소고기에 다진마늘, 국간장, 후추, 맛술을 넣고 밑간을 한다.

2. 무를 나박나박하게 썬다.

3. 청양고추와 대파도 잘게 썬다.

4. 냄비에 참기름을 두르고 밑간한 고기를 넣고 달달 볶는다.

5. 고기의 색이 변하기 시작하면 무도 넣고 함께 볶는다.

6. 무가 투명해지기 시작하면 물을 넣고 중불에 15분 이상 끓인다.

7. 무가 부드럽게 익고 고기가 연해지면 거품을 걷고 대파와 청양고추를 넣은 다음 간을 맞춘다.


- 고기는 국거리로 고른다. (지방이 없는 양지, 사태, 앞다리, 뒷다리 등)

- 양지나 사태를 푹 삶아 우려낸 육수에 잘게 찢은 양지와 무를 넣고 끓이면 더 맛있다.

- 콩나물과 고춧가루를 넣고 얼큰하게 끓이면 경상도식 소고기무국

- 무가 단 맛이 적을 때에는 설탕을 소량 넣어 감칠맛을 낸다.

- 국간장을 너무 많이 넣으면 색깔이 탁해지기 때문에 소금으로 나머지 간을 한다.


영양부추를 넣은 토마토김치

재료 

토마토, 영양부추 한줌, 양파 약간, 당근 약간, 굵은 소금 1작은술

양념 : 다진 마늘 1큰술, 고춧가루 2큰술, 설탕 1/2큰술, 매실청 약간, 까나리액젓 1.5큰술, 깨소금 1/2큰술, 참기름 또는 들기름 2큰술, 통깨 약간


레시피

1. 토마토는 꼭지 부분을 살짝 쳐내고 심을 제거한다.

2. 토마토에 별무늬로 칼집을 넣는다. (밑 부분을 1cm 남기고 칼집 3번)

3. 토마토에 굵은 소금으로 밑간을 한다.

4. 영양부추는 4cm 길이로 썰고 양파와 당근은 같은 길이로 얇게 채 썬다.

5. 영양부추와 양파, 당근을 볼에 넣고 양념 재료를 모두 넣어 잘 버무린다.

6. 토마토 사이에 영양부추 무침을 채운다.(속박이)

7. 통깨를 뿔니다.


- 토마토는 색이 빨갛고 완숙이 된 것으로 만든다.

- 토마토를 8등분으로 썬 다음 부추무침에 함께 버무려 먹으면 더 간단하게 만들 수 있다.

- 부추무침은 먹기 직전에 바로 버무린다.

 

토마토가 이렇게 김치와 어울리는 줄 몰랐다. 토마토 김치 대박강추다.



콩나물 불고기

재료(1인분 기준)

대패 삼겹살 400g, 콩나물 300g, 양파, 대파, 양배추, 당근, 깻잎, 청양고추

양념 : 고추장 3큰술, 고춧가루 3큰술, 설탕 3큰술, 간장 3큰술, 맛술 3큰술, 다진 마늘 2큰술, 생강 약간(돼지고기와 궁합이 좋다), 후추 약간, 마지막에 올리고당, 참기름 1큰술, 통깨


레시피

1. 대패 삼겹살은 핏물을 제거한 뒤 후추와 맛술로 밑간한다.

2. 양파, 양배추, 당근, 깻잎은 채 썰고 대파와 고추는 어슷하게 썬다.

3. 냄비에 콩나물을 담고 그 위에 대패 삼겹살, 채소, 양념을 올린다.

4. 중불에서 콩나물이 타지 않게 잘 섞으며 볶아준다.

5. 마지막에 참기름과 통깨를 뿌려 마무리 한다.


- 대패 삼겹살 대신 차돌박이, 소고기 불고기감(목심, 등심, 채끝, 안심, 우둔 등) 사용 가능

- 두툼한 삼겹살로 만들 경우 고기를 먼저 볶다가 채소를 나중에 볶아둔다.

- 콩나물을 미리 데친 뒤 넣으면 아삭한 식감이 살아있다.


아삭이고추 된장무침

재료

아삭이고추 10개, 견과류 약간

양념 : 된장 3큰술, 고춧가루 1/2큰술, 매실청 2큰술, 다진 마늘 0.5큰술, 참기름 0.5큰술, 통깨 약간


레시피

1. 견과류를 잘게 다진다.

2. 아삭이고추를 깨끗하게 씻어 물기를 제거한다.

3. 버무린다.


콩나물 불고기, 콩불 말이 필요없다. 집에서 해먹기도 좋고 해먹자. 2번 해먹자. 


+ Recent posts