모두의 한국어 텍스트 분석 with 파이썬 - 기초부터 챗GPT까지, 누구나 쉽게 시작하는 자연어 처리 모두의 시리즈
박조은.송영숙 지음 / 길벗 / 2023년 5월
평점 :
장바구니담기


사용자의 수집데이터의 사이즈에 차이는 있지만, 서비스를 하는 입장에서는 데이터는 무조건 저장되고 누적됩니다.

로그인이 필수인 개인화된 페이지도 있고, 로그인이 없는 누구나 사용하는 서비스 페이지들도 있습니다.

데이터는 User들이 신규로 생성하는 데이터도 있지만, 통계성의 성격을 가지는 데이터들, 정형데이터/비정형데이터등 다양한 성격의 데이터는 어느 회사나 보유중입니다.

 

그러면 우리는 이것을 가지고 새로운 요구사항을 구현할수도 있고, 조금 더 나은 서비스를 위해서, 새로운 Value를 찾아보기 위해서 다양한 시도를 합니다. 여기서 중요한 부분은 대부분의 데이터가 한글이라는 부분입니다.

 

일반적인 데이터 분석책이 현재 많이 출간되어 있고, 대부분 파이썬을 이용해서 구현을 많이 합니다.

이 책의 제목은 "모두의 한국어 텍스트 분석" !! 이다.

 

저자분도 이책의 집필시에 아래와 같은, 누구나 궁금해 하는 사항에 대해서 고민하고 이 책을 구성하셨던 부분이 처음에 눈에 들어왔습니다.

 

저자는 집필의도를 통해서 우리가 이 책에서 얻을 수 있는 사항은 아래와 같습니다. 

  • 텍스트 분석을 하는 방법을 전반적으로 알아봅니다.
  • 한국어라는 언어에 대해서 무슨 차이가 있고, 한국어를 조금 더 잘 활용해 볼 수 있을 것이다.

 

■ 책이 실습구성은 풍성

· 의지만 있으면, 학습할수 있는 충분한 구성이 되어있습니다.

· 코랩으로 바로 실행 지원

https://github.com/pytextbook/pytextbook

  소스 코드를 바로 코랩의 실행하는 환경을 제공하는 것은 생각보다 장점이 많습니다. runtime으로 실습하는 것은 시간절약에 많은 도움이 되고 궁금한 것을 바로바로 실습해볼수 있어서 독자 입장에서 매우 만족합니다.

 

· 유투브 영상도 제공합니다.

저자분이 책의 내용을 전부 설명하는 것은 아니지만, 책과 중복되는 부분도 많고 충분히 시작하는데 도움되는 영상 목록입니다.

https://www.youtube.com/playlist?list=PLaTc2c6yEwmp35y9Z868VlV9NQpG-eBb6 

 

 

■ 환경구성과 파이썬 기본 문법

· 1장~3장까지 내용 구성이 됩니다.

· 코랩은 데이터 분석하는데 너무나 많은 편리성을 제공합니다. 한번만 경험하면 쉽게 사용할 수 있습니다.

· 파이썬의 내용이 좋았습니다.  파이썬의 모든 내용을 다루지 않습니다.(파이션책이 아니기 때문에)
 이 책은 텍스트 분석을 위한 "파이쎤 문자열"에 대해서 상세히 설명합니다. 이런 부분이 목적에 맞게 문자열을 더 자유롭게 다루는 방법이 있어서 책의 목적에 맞는 내용 구성이라고 생각합니다.

· 판다스(https://pandas.pydata.org/), 넘파이 (https://numpy.org/)는 데이터분석의 기본 사항입니다. 

데이터 분석하는 과정에서 데이터를 axix축을 어떻게 잡는지도 중요하고, 분석하려고 하는 다양한 데이터를 row,colume구성으로 data조회를 하는 과정도 필요합니다. pandas는 sql쿼리문으로 조회하는 부분에 많은 것을 커버할수 있습니다. group by의 역활도 일반 쿼리보다 쉽게 구성하여서, 조금 다른 관점으로 장점도 많이 있습니다.

 

핵심되는 요소만 설명하고, 너무 과하지 않게 설명을 합니다. loc, iloc, series등에 대해서 설명을 하고, 가장 많이 사용하는 개념 및 함수에 대한 설명을 통해서, 이정도만 알고 있으면 충분히 데이터 분석을 경험 할수 있습니다. 추가적인 내용 및 더 궁금한 부분을 연관해서 찾아보면 추가적인 함수들도 학습 할수 있는 베이스 라인을 만든다고 보시면 될 것 같습니다.

 

 

 

■ 4장 : 단어 가방 모형과 TF-IDF

· 단어가방 모형 : 단어순서를 고려하지 않고, 중복발생 빈도를 중요하게 취급하는 방법

여기서는 사이킷런(scikit-learn)을 활용한다. 해당 라이브러리는 머신러닝을 하는데 기본적으로 사용됩니다.

우선 문장을 분석하는 것을 시도해봅니다. 문장은 공백으로, 콤파등으로 구분되어 질수 있습니다. 이것을 단어로 형태소 분석해서 숫자를 올리면 특정 단어가 많이 나오는 것을 분석해볼수 있습니다. 이것은 단어가방모델이고 여기서 조금더 추가하여서 단어의 위치에 따라서 의미가 달라지는 것을 다양한 기법을 적용해서 결과물을 도출해봅니다.

n-gram(단어 어절을 구성하는 단위), min_df, max_df를 통한 빈도수 설정, max_features (학습 단어개수제한), stop_word(불용어 제거)등을 사이키런에서 제공해주는 옵션값을 사용해서 데이터 분석을 합니다.

· 사이킷런을 TfidVectorizer를 통해서 TF-IDF변환을 통해서, 단어빈도, 문서빈도, 역문서빈도등을 적용하면서 각 문장간의 연관성을 추출합니다. 보통 결과를 이렇게 수치로 표현해서 가중치를 파악합니다. 이런 실행결과는 데이터 분석에서 많이 보는 결과입니다.

이러한 내용들이 하나하나 설명되어지면서, 분석에 대한 상세 설명이 되어집니다.

 

■ 5장. 연합뉴스 타이틀 주제 분류

· 소개하는 예제가 매우 관심을 가지게 됩니다. 업무에서도 어떻게든 적용해볼수 있지 않을까? 생각해볼수 있습니다. 제목 즉 타이틀은 모든 게시글에 있기 때문이죠. 이러한 데이터를 어떻게 텍스트 분석을 하고 어떠한 기술/라이브러리를 사용해서 어떠한 방식으로 구현되어 있는지 살펴보겠습니다.

 

아래 목차를 보면, "분류과정", "전처리", "불러오기" 등이 있습니다. 데이터를 처리하는데, 우리가 보유하는 데이터를 그냥 바로 분석할수 없습니다. 전처리라는 역활은 매우 중요한 과정이며, 이러한 과정은 데이터를 바라보는 관점을 달리 할수 있는 중요한 부분이라고 생각합니다. 

주요하게 살펴볼 사항은 아래 2가지 입니다.
· 간단한 텍스트 분류를 통해 머신러닝 알고리즘이 학습할수 있도록 단어를 수치화 하는 방법

· 머신러닝 모델을 통해 학습 및 예측하는 방법

· 사용되는 데이터
L (DACON, 데이콘 AI경진대회 플랫폼)에서 KLUE:한국어 자연어 이해 벤치마크 데이터 데이터를 이용합니다.

https://klue-benchmark.com/tasks/66/overview/description

 

· 라이브러리 import

pandas, numpy등은 기본적으로 import를 하는 사항이라고 보면 되고, 
한글처리를 위해서 아래 사항을 추가한다.

koreanize-matplotlib : 매트플립 차트에서 한글이 깨지지 않고 표현가기 위해서 설치

konlpy : 한국어 형태소 분석을 위해 설치

· https://konlpy.org/en/latest/

 

한국어에 대해서, 동일한 문장이여도 형태소 분석의 차이로 인해서 구문에 대한 파싱은 조금씩 다르게 표현됩니다.
책에서는 Okt를 사용해서 예제를 진행합니다.

· 당연히 학습, 시험 데이터 세트 분리를 진행하고 
해당 예시에서는 학습과 예측하는 기법으로는 사이키런의 랜덤 포레스트를 사용해서 진행합니다.

 

▶ 6장에서도 5장과 비슷한 과정이 있습니다. 
6장에서는 "국민청원 데이터 시각화 분류"를 진행합니다. 코랩으로 데이터를 호출해서 처리할수 있지만

pandas를 통해서도 데이터를 호출해서 사용할수 있습니다.
KoNLPy와 soynlp를 통해서 특정 형태소를 추출/제거를 수행하며, 머신러닝으로 텍스트 데이터를 이진 분류하는 내용이 있습니다.

· 6장에서는 조금 더 다양하게 pandas를 사용합니다. 조건을 걸어서 분류를 제한하고 merge등 조금 더 다양한 데이터 구조화를 연습해볼수 있습니다.
머신러닝에 대해서 이론적인 사항도 필요한 부분에 대해서 과하지 않게 핵심이 잘 정리되어서 설명되어 집니다.

 

 

■ 7장 ‘120다산콜재단’ 토픽 모델링과 RNN, LSTM

· 120다산콜재단 데이터를 토픽별로 분석시각화를 진행해봅니다.

· RNN, LSTM을 통한 모델링을 진행해봅니다.

· pyLDAvis를 이용해서 시각화를 연습해보면서, 기존에 멧플립등과 비교해보는 연습을 합니다

 

 

분석과정에서 데이터를 토픽별로 분류를 하고 난 후에 딥러닝 방법중에 하나인 순환신경망(RNN)모델로 학습해서 분류과정을 거칩니다.

잠재 디리클레 할당 (LDA)를 통해서 주어진 문서에 대해 각 문서에 어떤 주체(토픽)들이 있는지 서술하는 확률적인 토픽 분류 기법을 이용합니다. 사이킷런을 이용해서 해당 분류를 실행합니다.

 

 

▶ 8장의 내용은 조금더 현실감 있는 데이터 샘플을 이용해서 실습을 합니다.

많이들 이용하시는 인프런의 댓글을 가지고 텍스트 분석을 하는 과정은 매우 공감이 됩니다.

여기서 사용하는 데이터의 댓글을 실제 주변에 작성하신 분들이 있을수 있기 때문입니다.

과정은 비슷합니다. 해당 데이터를 어떻게 분류하고 학습시킬것인지 고민해야 합니다. 머신러닝을 통한 분류를 할지 딥러닝 기법을 사용하지 정하고, 학습데이터와 실제 예측을 위한 테스트 데이터르 분류해 놓아야 합니다.

가시적인 검증을 위해서 차트 라이브러리를 사용합니다. 인프런 분석시에는 KMeans 군집화를 통해 머신러닝 비지도 학습을 적용해보았고, 클러스터링의 분류 모델을 통해서 지도학습을 통해서 예측도 진행합니다.

 

이 책의 특징은 일반적으로 외부에 오픈된 dataset을 이용하는 것 보다 조금 더 한국어가 기본인 데이터를 활용하는 것이 매우 좋았습니다.

사례로 드는 예제는 주변에서 실제 익숙한 데이터를 사용해서, 데이터 분류 및 예측의 결과 값이 한글로 되어 있어서 영어로 분석하는 예시와는 또 다른 경험을 제공합니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
AWS 기반 데이터 과학 - 엔드투엔드, AI/ML 파이프라인 구현하기 | 아마존 클라우드 컴퓨팅 분야 베스트셀러
크리스 프레글리.안티 바르트 지음, 서진호.최미영 옮김, 이용혁 감수 / 한빛미디어 / 2023년 4월
평점 :
장바구니담기


AWS에 수많은 서비스가 있습니다. 기본적으로 가장 많이 사용하는 EC2, S3, RDS등 웹서비스를 구성하기 위한 서비스 이외에 정말 많은 서비스가 제공됩니다. 이제 가지수를 하나하나 세워보는것은 의미가 없습니다. 서비스들이 계속 추가되고 그 속도가 매우 바쁩니다.

아래 왼쪽에는 대분류 카테고리 입니다. 이 항목이 "카테고리"입니다. 아래 "기계학습" 카테고리를 클릭했을때 오른쪽에 매우 다양한 AWS서비스 리스트를 확인할수 있습니다.

우리는 이렇게 다양한 모든 서비스를 다 사용할 수 없습니다. AWS에서 우리가 서비스하는 목적에 맞게 적절한 선택을 해야 합니다. 하지만 일반적으로 AWS를 다루는 책이 많이 있습니다. 일반적인 AWS의 필수기능 및 웹서비스를 하기 위한 항목, 가장 많이 사용하는 서비스에 대한 설명이 위주로 되어 있습니다. AWS를 사용하는 사용자 중에 "데이터 과학"에 대해서 사용하려면 어떠한 서비스를 이용해야 할지 막막한 부분인데, 그것에 대해서 좋은 자료를 찾는다면 해당 책이 그 답이 될 것 같습니다.

 

아래와 같은 주안점으로 책을 살펴보려고 합니다.

  • AWS 다양한 새로운 서비스에 대해서 잘 설명을 하고 있는지 궁금
  • 책의 가격이 저렴하지 않지만, 그 가격의 충분한 가치를 가지고 있을까?
  • 데이터과학에 대한 부분이 잘 설명되고 있는가?
  • AWS의 AI/ML분아 재직중이신 2분이 공동저자분에 내용구성에 기대감

 

 

 

처음 이 책을 보았을때, 좋았던 부분은 아래와 같습니다. 

우리가 데이터를 다루지 않는 분야가 있을까요? 아마 모두 어느 정도의 기능단위 개발 후에 누적된 데이터를 기반으로 다른 사업, 서비스의 고급화, 개인화, 추천등으로 이어지는 것은 매우 당연한 흐름입니다.

그러한 면에서 꼭 데이터과학에 대한 전문적인 직업 포지션을 가지고 있지 않은 분들도 이 책은 도움이 되는 부분이라고 생각이 들었습니다.

지금 당장은 사용하지 않지만, 추후에 온프레미스(On-premise) 환경에서 서비스를 구축하기 어려운 환경이면 결국 클라우드 시스템을 이용할수 밖에 없습니다. 이 책은 단순히 AWS에서  이러한, 저러한, 여러가지 서비스를 제공하고 있다는 소개 뿐만이 아니라, 데이터 과학을 즉 데이터를 잘 다루는 이론적인 부분도 충분히 설명이 되어 있기 때문에, 이러한 이론 및 구현하고 싶은 항목을 기준으로 AWS에 제품에 대한 전반적인 동작 방식 및 사용법을 알아갈수 있게 해줍니다. 또한 여려가지 AWS서비스의 구성 조합에 대한 적절한 조합 및 방향성을 알려주는 부분이 좋았습니다.

 

"이 책의 목표는 AWS에서 데이터 과학 프로젝트의 비용을 절감하고 성능을 향상하는 팁을 제공하는 것이다" (by. p.19)

 

 

■ 책이 구성

· 소개글이 매우 잘 되어 있고, 꼼꼼히 살펴보면 책의 구성과 언급되는 기술에 대해서 파악하기 용의합니다.

· 1장 : 아마존 AI.ML에 대해서 개략적 설명

· 2장 : 추천시스템, 자연어 이해 등등 아마존 Al과 ML스택을 적용

· 3장 : 세이지메이커 오토파일럿의 AutoML 사용

· 4~9장 : 데이터의 수집 및 분석, 피처 선택 및 엔지니어링, 모델훈련 및 튜닝, 아마존세이지메이커, 아마존 아테나, 아마존 레드시프트, 아마존 EMR, 텐서플로우, 파이토치, 서비리스 아피치 스파크를 활용한 모델배포, BERT기반 자연어 처리 NLP의 전체 모델 개발 라이프 사이클

· 10장 : 세이지메이커 파이프라인, 큐브플로우 파이프라인, 아파치 에어플로우, MLflow, TFX와 함께 MLOps를 사용해 모든 것을 반복하는 파이프라인으로 통합

· 11장 : 아마존 키네시스와 아파치 카프카를 사용한 실시간 데이터 스트림

· 12장 : AWS IAM, 인증, 권한부여, 네트워크 격리, 미사용 데이터 암호화, 전송중 양자 내성 네트워크 암호화, 거버넌스, 감사 가능성

 

각 항목마다 AWS의 서비스 제품들이 목적에 맞게 구성되어 있습니다. 책에서는 AWS의 제품명을 영어로 사용하지 않고 한글로 사용합니다. 4~9장에서 다루는 내용에서 "데이터의 수집 및 분석, 피처 선택 및 엔지니어링, 모델훈련 및 튜닝"에 대한 내용은 꼭 AWS와 무관한 부분으로 구성된 내용도 좋았습니다.

 

■ 책이 구성

· 이론적인 부분을 설명을 하면서, 자연스럽게 AWS에서 사용하게 될 일반적인 구성을 설명해주는것이 좋았습니다.

보통 서비스하는 항목들이 많아서, 어떤 서비스를 어떤 기능에 사용하게 될지 선택하기 어려운데, 이렇게 가이드를 주는내용은 곳곳에 언급됩니다. "그래서 AWS의 서비스를 전반적으로 파악하는데, 도움을 많이 받게 됩니다."

 

· 아주 좋은 AWS기술 스택 그림이다.
일반적으로 영어도 된 글자를 보다가, 어색할수 있습니다. 책에서는 가능한 대부분을 한글로 표기를 하였습니다.

혼돈을 막기 위해서 부록에서 영어서비스명과 한글로 번역한 사항이 정리되어 있습니다.

· 세이지메이커 오토파일럿은 투명한 AutoML의 표준이다.첵에서도 이것과 관련된 부분에 대해서 상세히 설명을 하고 있다.

 

· 데이터 분석을 위해서 서비스를 정했는데, 비용과 관련이 있는 부분은 항상 고민입니다. 그 이유는 각각의 인스턴스의 타입도 종류가 많습니다. 책에서는 이러한 부분도 설명되어 지고 있어서 실무에서 사용할때, 좋은 가이드를 세울수 있습니다.

 

■ 모범사례를 통해서 경험하는 간접체험

· 개인별 상품 추천 시스템 / 부적절한 동영상 감지 / 수요예측 / 가까 계정 식별 / 정보 유출 탐지 활성화 등등 2장에서 제시되는 사례목록은 아래와 같습니다.

CHAPTER 2 데이터 과학의 모범 사례

2.1 모든 산업에 걸친 혁신
2.2 개인별 상품 추천 시스템
2.3 아마존 레코그니션으로 부적절한 동영상 감지
2.4 수요 예측
2.5 아마존 프로드 디텍터를 사용한 가짜 계정 식별
2.6 아마존 메이시를 사용한 정보 유출 탐지 활성화
2.7 대화형 디바이스와 음성 어시스턴트
2.8 텍스트 분석 및 자연어 처리
2.9 인지 검색과 자연어 이해
2.10 지능형 고객 지원 센터
2.11 산업용 AI 서비스와 예측 정비
2.12 AWS IoT와 아마존 세이지메이커를 사용한 홈 자동화
2.13 의료 문서에서 의료 정보 추출
2.14 자체 최적화 및 지능형 클라우드 인프라
2.15 인지 및 예측의 비즈니스 인텔리전스
2.16 차세대 AI/ML 개발자를 위한 교육
2.17 양자 컴퓨팅을 통한 운영체제 프로그램
2.18 비용 절감 및 성능 향상
2.19 마치며

이러한 사항에 대해서 매우 흥미로운 사항들이 매우 많이 있습니다. 어느 도메인의 서비스에서도 모두 검토해서, 적용해볼만한 것들입니다.

이책은 AWS책이여서, 아래와 같이 AWS서비스를 활용한 구성도로 설명하는 부분이 매우 좋았습니다.

 

■ 데이터 수집하기

· 해당 분야는 정말 어느분들이나 관심있게 보실수 있는 분야입니다. 꼭 ML,AL을 다루지 않는다고 하여도 우리는 데이터를 collect하고 save하는 것은 서비스를 운영하는데, 필수요소입니다. 서버를 구매해서 환경구축을 하는것은 장점도 있지만, 단점도 분명히 존재합니다. 그래서 이러한 AWS의 서비스구성을 잘 알아두면 필요할 때, 파일럿 형태로 서비스를 구성해 볼수 있어서 장점이 더 많은것 같습니다.

· 데이터 레이크를 대규모의 다양한 데이터셋에 엑세스 할수 있도록 구성하는 것을 S3, 아테나, 글루 크롤러, 레드스피트 스펙트럼등을 통해서 코드베이스로 설명이 되어진다. 이론적인 부분만 설명하는 것이 아니라, 실제 구현샘플 코드를 기반으로 작성되어 있어서, 엔지니어 입장에서는 이해가 조금더 편하게 다가옵니다.

이런 비용절감 및 상세한 비교표는 이책에서만 있는 것이 아닐까 생각합니다.

 

■ 데이터 분석하기, 데이터셋 준비

· 본적적으로 세이지메이커, 레드시프트, 글루 데이터브루 를 활요하는 내용으로 구성됩니다.

· 일반적은 머신러닝, 딥러닝 책과는 조금 다른 느낌이 드는 책입니다. 이론적인 것보다 실제 서비스를 활용한 데이터 분석이라는 측면에서 조금더 가시적으고, 현업에서 사용하기에 무리가 없는 설명가이드 및 차트를 통한 가시화되는 부분이 책에 잘 녹아져 있습니다.

· 세이지메이커 프로세싱을 통한 피처 엔지니어링 부분에서 피처를 구성하고, 텐서플로우, 사이킷런, BERT를 사용하여 클러스터에 전체 데이터셋을 균형을 맞추고 분할/변환을 진행합니다.

· 세이지메이커 인프라를 활용하여서, 모델의 학습을 진행합니다.

 

 

■ 잘 만든것을 배포하기

· 프로덕션에 모델 배포하기위한 다양한 기법을 소개합니다. 모델을 업데이트 하고, 품질에 대한 검증을 AWS를 이용해서 구성하는것이 인상적이였습니다. 특히  AWS 람다 함수 및 아마존 API 게이트웨이의 부분은 일반적인 서비스에서도 참고할 만한 내용이며, 이러한 부분이 연결이 되어서 최종 파이프라인과 MLOps의 구성을 완성하게 됩니다.

· 마지막 장에 언급된 AWS 보안 부분은 일반적으로 알고 있는 IAM이외에 다른 고려사항도 언급되어 있어서, 관련된 부분을 AWS의 전반적으로 사용하는데 도움이 되는 내용으로 구성되어 있습니다.

12.1 AWS와 사용자 간의 공동 책임 모델
12.2 AWS IAM
12.3 컴퓨팅 및 네트워크 환경 격리
12.4 아마존 S3 데이터 액세스 보호
12.5 저장 시 암호화
12.6 전송 중 암호화
12.7 세이지메이커 노트북 인스턴스 보호
12.8 세이지메이커 스튜디오 보안
12.9 세이지메이커 작업과 모델 보안
12.10 AWS 레이크 포메이션 보호
12.11 AWS 시크릿 매니저를 통한 데이터베이스 자격 증명 보안
12.12 거버넌스
12.13 감사 가능성
12.14 비용 절감 및 성능 향상
12.15 마치며

책의 전반적인 수준이 높고, AWS를 사용하면서 일반적으로 알아야 되는 부분이 많아서 조금 놀랬습니다. 데이터 과학의 특화된 부분의 내용구성을 설명하면서, 자연스럽게 범용적으로 활용할수 있는 내용도 많았고, 비용절감적인 부분, 인스턴스의 비교표를 통해서 효율적으로 AWS를 사용할수 있는 노하우가 많이 설명되어지는 책이라고 생각합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
프런트엔드 개발자를 위한 테스트 가이드 - 셀레늄, 사이프러스, 퍼피티어, 플레이라이트 오픈소스 테스트 자동화 프레임워크 교과서, 2024 세종도서 학술부문
에란 킨스브루너 지음, 김완섭 옮김 / 제이펍 / 2023년 7월
평점 :
장바구니담기





책의 목차를 보는데, 처음보는 기술들이 많이 보였습니다. 기술이라고 표현한것은 처음보는 오픈소스 SW들에 대한 부분입니다.

이런 생각을 들었습니다. 블랙박스테스트를 하는데 이것이 프런트엔드 테스트라고 생각해도 될까?

사용자 화면에서 보이는 것을 뒤에 이루어지는 비지니스 로직을 검증하지 않았지만, 실제 화면에 입력되는 input value와 실제 화면에 보여지는 출력 value에 대해서 눈으로 확인하는것이니 100% 동일하지는 않지만, 비슷하다고 불수도 있지 않을까?

 

요즘은 자동화 AutomationTool들도 많이 나와 있습니다. 하지만, 해당 Tool을 실제 사용하기 위해서는 역시 따로 개발을 해야 합니다.

쉬운것이 없습니다. 책을 읽기전의 지식으로 "화면에 있는 것을 기준으로 동작테스트를 진행"하려고 한다면, 크롤링 기술 기반의 셀레니움 정도가 생각이 납니다. 하지만 요즘의 화면은 반응형 웹, 모두 동적 dom을 핸들링하고 있고, 기본적으로 Ajax등 비동기 동작을 하고 React, Vue등의 프런트프레임워크를 사용하기 때문에 실제 적용을 해보면 많은 시행착오가 발생할 것으로 생각이 됩니다.

 

 

  • 우선 책에서 어떠한 개념으로 프런트엔드 테스트를 바라보는지 살펴보고 싶습니다.
  • 활용가능한 다양한 SW를 살펴보고, 실제 업무에 적용가능한 것들이 어떠한 것이 있는지 체크해보고 싶습니다.
  • 테스트 개념에 대해서도 다시한번 remind하고 개념을 다시 살펴보고 싶습니다.

 

PART I 프런트엔드 웹 테스트 소개

PART II 웹 애플리케이션 개발자를 위한 지속적인 테스트 전략

PART III 프 런트엔드 자바스크립트 테스트 자동화 프레임워크 가이드

총 3개의 파트로 크게 구성되어 있습니다. 

 



 

■ 웹테스트 

https://npmtrends.com/cypress-vs-playwright-vs-puppeteer-vs-selenium-webdriver

 

1 기준으로 사용빈도를 조회해보면, cypress puppeteer 가장 많이 사용되는것을 볼수 있다.



 

- 프레임워크 4대장 소개 : p.37의 내용인데 위사항만 보면 처음으로 시도해볼만한 프레임워크는 cypress가 눈에 들어온다.



책에서는 위 4가지 모두 실습하는 방법이 소개됩니다.

 



 

■ cypress 시작해보자 (p.45)

# 설치

npm install cypress


# GUI실행

npx cypress open

- 참고 url

https://example.cypress.io/

https://docs.cypress.io/guides/end-to-end-testing/writing-your-first-end-to-end-test

 

https://docs.cypress.io/guides/references/cypress-studio (처음 접하는 분들을 위한 cypress tool)

 

https://chrome.google.com/webstore/detail/cypress-recorder/glcapdcacdfkokcmicllhcjigeodacab/related?hl=ko  (구글 플로그인) 

 

- 왼쪽 화면을 보면, 단위테스트 하는 것처럼 녹색 Pass다 된 화면이다.



 

 

■ 4가지 프레임워크중에 어떠한 것을 사용해야 할것인가?

대표적으로 많이 사용하는 것이 있지만, 회사마다 / 업무마다 모두 상이합니다.

그래서 우리는 선택을 해야 합니다. p.64/p65에 걸쳐서 각 기능별 비교표를 제공합니다.

이것을 기준으로 프레임워크를 선택하는데 바로미터를 제공합니다.



 

 

■ 프런트앤드 프레임워크 소개 및 기타 내용

요즘 많이 사용하고 있는 frontend framework를 소개합니다.

기본 설치 및 특징점, 테스트시 참고해야 하는 부분들이 설명되어집니다.

해당 부분은 frondend개발자 분이 보시면, 기초적인 내용일수도 있지만 실제 테스트를 하는 입장에서는 해당 기술요소를 모두다 알기가 쉽지 않습니다. 또한 frondend 개발자분도 아래의 모든 사항을 다 알수없습니다.

이러한 소개는 프런트앤트 테스트를 할때, 개념을 잡아주고 실습해볼수 있는 좋은 내용구성 같습니다.



 

 

 

6장에서는 테스트를 하기 위해서 필요한 테스트 기법, 전략등에 대해서 소개됩니다.

내용이 진부하지 않고, 웹을 테스트 하기 위한 소개 및 이론이여서 테스트 조직에서 기준을 잡을때 참고되는 부분이 있습니다.



 

PART3에서는 위에서 언급된 4가지 테스트 도구에 대해서 조금더 심화 과장을 설명하고, 차이점을 비교하는 구성으로 되어 있습니다.

프런트엔드 테스트를 위해서 좋은 책이 출간된것 같습니다. 보통 이렇게 4가지 기술을 처음부터 끝가지 비교해가면서 소개하는 구성이 쉽지 않은데 이 책을 통해서 현재 지금 자신에게 가장 맞는 테스트툴을 찾을수 있는 정보와 설명을 충분히 제공하는 책이라고 생각합니다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
처음부터 제대로 배우는 스프링 부트 - 자바와 코틀린으로 만나는 클라우드 네이티브 애플리케이션 구축
마크 헤클러 지음, 오시영.서정대 옮김 / 한빛미디어 / 2023년 5월
평점 :
장바구니담기


스프링 부트 책은 시중에 매우 많이 있습니다. 

이책의 장단점 및 대상 독자분들에 대해서 리뷰를 해보려고 합니다.

 

책의 표지를 우선 소개해드리고 싶었습니다.

표지에서 언급된 키워드가 이 책의 포인트이고, 저자의 책 구성 방향을 잘 설명하고 있습니다.

책 표지에서 언급된 키워드를 살펴보면, 책의 특징은 아래와 같습니다.

  • 처음부터 제대로 배우는 (Up & Running) : 중급자를 대상으로도 좋다는 의미 (추천사 참고)
  • 자바와 코틀린을 함께 경험할수 있다. 
  • 클라우드 네이티브를 경험할수 있다.
  • 저자분이 VMWare 개발자 분이시며, 자바개발자 및 코틀린 구글 개발자 전문가 입니다

 

■ 인트로는 쉽게..

 

■ 선택사항

 

■ 구체적으로 책 내용 살펴보기

springboot에 대해서 전반적인 부분을 언급합니다. 가장 기본이 되는 CRUD처리 및 API에 대해서 설명은 기본이고

설정, 레디스, 몽고DB등 다앙한 접속, MVC, 프로덕션, 리액터와 웹플럭스를 사용한 리액티브 프로그래밍, 배포, 보안등에 대해서 언급합니다.

보통 책이 모든 기능을 다 설명하면, 이것이 메뉴얼같은 느낌이 들기도 합니다.

하지만 그중에 가장 많이 사용하고 핵심이 되는 개념이 있고, 많은 Annotaion중에 기본적이라고 생각하는 중요하고 많이 사용하는 부분이 있습니다. 여기서 이책의 장점이 있는것 같습니다. 가장 중요한 개념을 빠르게 학습하고 이해한다면, 그것을 바탕으로 가지치기가 가능합니다.

 

처음 Spring이나 Springboot를 사용할때, 뭔가 주입식으로 알게 되는것이 @Annotation이다.

거의 반복하는 패턴으로 사용하기 때문이다.

 

p.53

 - @Controller : MVC의 여러부분을 연결하는데 사용됩니다. 데이터를 전송하는 부분과 데이터를 표현하는 부분(view)을 분리해서 생성하는데, 이것을 연결해주는 역활을 합니다.

@Controller는 @Component의 스테로오타입 별칭입니다. 

저희가 많이 사용하는 어노테이션인 @Component, @Controller, @Repository, @Service에 대해서 모두 해당 jar에 있습니다.

@Controller가 붙은 클래스는 Model객체를 받습니다. Model객체로 표현 계층에 모델기반 데이터를 제공합니다.

또 ViewResolver와 함께 자동해서 랜더링 뷰를 처리합니다.

 

해당 어노테이션의 소스를 보면, Controller, Repository, Service모두 @Component를 기본적으로 포함하고 있습니다.

 

 

@RestController의 구성요소 : Controller + ResponseBody

@RequestMapping 

 - @GetMapping, @PostMapping .....

- REST 구성시, API의 http 상태값에 대한 고민도 되어야 합니다.

 

 

■ DB Access

 - @Entity : JPA어노테이션입니다. (javax.persistence)

 - @Repostory : Spring Data에 정의

 - JPARepository , CrudRepository

- P.82 데이터 테스트를 위한 방법

1) CommandLineRunner, ApplicationRunner를 활용한 방법

2) 람다를 이용하는 방법

3) @Component클래스와 @PostConstruct 메소드를 이용하는 방법

 

■ 설정과 검사

- @Value : application.properties의 내용을 사용하는데 보통 환경변수처럼 ${}형태로 재사용이 가능하다

// 초기값을 설정할수 있다.
@Value("{test-key : initValue}")

 

- @ConfigurationProperties : @Value의 유연하지만, 단점을 보완함, 그 클래스의 속성을 앱 환경에 추가

@ConfigurationPropertiesScan을 이용해서 추가함

@ConfigurationProperties(prefix="greeting")

- 자동 설정 리포트

- 액추에이터 : 스프링부터에서 수행되는 다양한 정보를 취득가능하다.

https://incheol-jung.gitbook.io/docs/study/srping-in-action-5th/chap-16.

 

■ 다양한 데이터 환경 구성하기

"스프링데이터"를 사용해서 처리하는 다양한 방법

p. 125. 많이 사용하는 lombok에 대한 어노테이션 설명

p. Neo4j를 이용한 서비스 개발하기 내용이 있습니다.

 

 

■ 비동기로 처리

 

■ 추가적인 사항

- ApplicationContext에 대한 중요한 정리 (p.239)

 - Spring Security를 통한 인증 보안

 - jar를 통한 배포 방안,처리 방법등에 대한 내용으로 구성되어 있습니다.

 

전반적으로 SpringBoot를 사용하는데, 필요한 개념을 초급,중급 모두 도움이 되는 구성되어 있고, 여러가지 고민되는 요소에 대해서 

정의를 하는 방향이 흥미롭고 도움이 많이 됩니다. 사용법에 대한 설명도 있지만, 왜 사용해야 하는지에 대한 공감대 형성을 통해서 지금 기술의 발전이 어떤 방향이고, 해당 부분은 SpringBoot를 통한 해결방안이 잘 제시되어 있습니다.



댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
풀스택 테스트 - 10가지 테스트 기술의 기본 원칙과 전략
가야트리 모한 지음, 최경현 옮김 / 한빛미디어 / 2023년 5월
평점 :
장바구니담기


개발할때, 테스트의 중요성은 이제 어느 누가 강조하지 않아도 당연한 절차로 생각되어집니다.

하지만, 실제 테스트를 잘하기 위해서는 많은 난관이 존재합니다.

크게는 사용자가 실제 사용하는것처럼 동일한 케이스를 만들고 가상의 mock객체를 구성하는 것이

말로는 쉽지만, 실제 구성하기 위해서는 다양한 케이스가 존재하고, 이러한 것을 프로그램적으로 처리하는 것이 

쉽지많은 않습니다. 또한 너무 다양한 언어와 외부 라이브러리가 존재하기 때문에 이러한 것을 TestCase로 작성하는것은

어떨때는 기능개발보다 어렵습니다.

 

저자는 집필의도를 통해서 우리가 제품에서 테스트를 실패하는 원인은 아래와 같이 정의합니다.

  • 사용자 화면 기준의 End to End 테스트 집중하는 현상
  • 일부 기능테스트만 수행하고, 비기능적인 문제를 찾지 못하는 현상
  • 수동적인 테스트에만 의존하는 현상

정말 다 맞는 말입니다. 많은 분들이 느끼는 문제점이 오랜시간 흘러왔지만, 이러한 것을이 아직도 쉽게 해결되지 않는 문제점 이기도 합니다.

 

평소 풀스택이라는 단어가 좋게도 느껴지는데, 어떠한 부분에서는 조금 과장된 단어가 아닐까 생각이 들기는 합니다.

이책에서의 내용을 살펴보면서, 어떠한 의미로 풀스택테스트라는 제목인지 살펴보려고 합니다.

책에서 말하는 "풀스택"이라는 의미는 모든 기술을 의미하는 것이 아니고, <UI계정, 서비스 계청, 데이터베이스> 를 커버하는 애플리케이션의 전제 범주를 의미하는 것입니다.

 

 

 

■ 책이 구성

· 웹 및 모바일 어플리케이션을 대상으로 10가지의 테스트 기술을 상세히 설명합니다.

· 보통 많이 들어보셨을 포스트맨, Jnit 및 다양한 실제 다양한 테스트를 하기 위한 기법이 소개되어집니다.

· 눈에 들어온 분야는 "데이터테스트", "시작적 테스트", "보안테스트", "성능테스트" 등등 매우 다양하고 생소하지만 평소에 필요한 테스트 기법이 설명되어지고 있어서 매우 다양한 분야에 걸처서 테스트 기법이 소개되어 집니다.

· 조금 화두가 되고 있는 AI/ML,블록체인에 대해서 테스트 하는 기법 소개도 많이 흥미로운 내용입니다.

· 테스트 개념 뿐만이 아니라 간단한 실습도 진행을 하면서, 해당 기법을 통해서 독자분들이 개발환경에 맞는것을 조금더 학습해 갈수 있는 다양한 방법을 소개한다는 점이 매우 좋았습니다. 모든 개발 환경을 다 커버하는 책은 없습니다. 단순히 Spring환경에서 구현을 하여도 정말 다양한 방법으로 개발되어서 100% 각자의 환경이 일치하는 환경으로 테스트 샘플을 구할수는 없습니다. 그런점에서 다양한 기법이 소개되어지고, 그 원리를 이해하면 활용할수 있는 방향을 제시하는 부분도 매우 많은 도움이 되는 책이라고 생각합니다.

· 10가지 정의하고 있는 풀스택 테스트

 

 

■ 1. 수동 탐색적 테스트

· 수동테스트 vs 수동 탐색적 테스트는 분명 다른 개념이다.

· postman : 많이들 사용하는 tool, 로그인 후 테스트 url정보등이 서버에 저장되기 때문에 기업 보안정책 검토 필요

· https://any-api.com/ (공개된 api 사이트)

· wiremock : https://wiremock.org/start

다른 구성요소의 작동을 모방하는 스텁을 만들고 변경하기 위한 도구
wiremock에 대해서 실행해본 화면 "여기서는 stub을 잘 만드는것이 핵심으로 보입니다"

<UI탐색도구>
· 다양한 브라우저를 테스트 할수 있는 클라우드 테스트 플랫폼

보통 상황에 따라서 PC에 설치되지 않는 브라우저를 테스트 하는 경우가 종종 있습니다. 클라우드에서 비용을 지불해야 하지만 이런 사이트를 알고 있으면 좋은것 같습니다. (너무 비슷한 사이트들이 많아서 책에서 언급된 플랫폼 정보는 아래와 같습니다)
1) https://www.browserstack.com/

2) https://saucelabs.com/

· 버그마그넷
크롬, 파이어폭스에서 플러그인방식으로 사용
https://chrome.google.com/webstore/detail/bug-magnet/efhedldbjahpgjcneebmbolkalbhckfi

 

· 크롬 개발자 도구

가장 많이 사용하고, 다양한 기능을 제공한다 책에 소개된 내용중 평소에 알지 못한 기능을 기록한다.
1) 느린 네트워크 환경 테스트

 

2) 서비스 중단시 작동
특정 요청을 block처리를 해서, 서비스 중단 시나리오를 테스트 할수 있다.

 

 

 

■ 2. 자동화된 기능 테스트

마이크로 테스트, 매크로 테스트의 개념을 알아야 한다.

· 유닛 테스트의 백앤드 프레임워크

JUnit, TestNG, NUnit

· 유닛 테스트의 프런트앤드 프레임워크
Jest, Mocha, Jasmine

· 계약테스트 활용

Postman, pact (https://docs.pact.io/)

· 서비스 테스트 활용

postman, Rest Assured(https://rest-assured.io/), 가레테(https://github.com/karatelabs/karate)

· UI기능 테스트

셀레니움(https://www.selenium.dev/), Cypress (https://www.cypress.io/)

 

· 커버리지를 관리하기 위한 방법

TestRail(https://www.testrail.com/), Jira, 엑셀 등

· 참고) JetBrain에서 테스트를 위한 IDE가 있어서 소개합니다. (https://www.jetbrains.com/aqua/)

· 행동 주도 개발 (BDD)
 테스트 할때 많이 들어보았을 Given, When, Then 구조를 가진 사용자 스토리 작성하는 기능 제공 (https://cucumber.io/

· Cypress에서도 테스트 케이스를 생성해서, Junit처럼 테스트 결과를 확인할수 있습니다.

<서비스 테스트>

· Rest Assured에서는 restapi를 자동화 테스트를 수행한다. Junit, TestNG모두 사용할수 있다.

<유닛 테스트>

· java : JUnit, TestNG, .net : NUnit, javascript : Jest, Mocha, 루비 : RSpec

 

■ 3. 지속적 테스트

· 많이 사용하는 jenkins를 통해서 구성한다. 

· 여기에 다양한 플러그인을 통해서 ci/cd를 구성한다.

 

■ 4. 데이터 테스트

· jdbc를 통한 테스트 

· Deequ: 아마존에서 개발한 도구로 스파크 위에 구축된다. 대규모 배치 처리에 사용된다.

 

■ 5. 시작적 테스트

화면에서 시각적으로 몇px이 다르게 보여지는 경우에 대해서 테스트 하는 방법등 시작적인 부분에 대해서 테스트를 수행한다.

· Phantomjs(https://phantomjs.org/), BackstopJS(https://github.com/garris/BackstopJS)은 오픈소스이고, Applitools Eyes(https://applitools.com/platform/eyes/),Functionize(https://www.functionize.com/) 는 AI기반 유료 도구이다.

· 프런트쪽 유닛테스트는 Jest , react testing library등을 이용한다.

· 다시한번 오픈소스에 대해서 정리를 하면, CyPress, Galen(http://galenframework.com/), backstopjs등이 있고, 유료도구에는 applitools eyes, percy (https://percy.io/) 등이 있다.

 

 

■ 6. 보안 테스트

· 보안에 대해서는 범위도 넓고, 다양한 기법들이 있습니다.
1) SAST : 정적인 보안 테스트
2) SCA : 소프트웨어 구성 분석
3) 기능적 보안 테스트 자동화

4) 이미지 스캔
5) DAST : 동적인 보안 테스트

· OWASP Dependency-check는 수비게 설치를 해서 소스의 취약점을 검사해줍니다.

ex) mac에서는 brew을 통해서 쉽게 설치가 가능합니다.

· 스닉은 InlliJ에서도 쉽게 구성할수 있어서 SCA, SAST모두 지원해서 활용을 잘 해보면 좋을것 같습니다.

 

 

■ 7. 성능 테스트

<서버>

· JMeter를 통한 성능테스트

· 개틀링(https://gatling.io/) : 부하테스트, 스칼라 기반 script작성

· 아파치 벤치마크 : 보통 ab tool이라로 한다.

<프런트>

· WebpageTest (https://www.webpagetest.org/) : 무료 온라인 도구

· 라이트 하우스 : 크롬의 일부 기능 포함됨

 

■ 8. 접근성 테스트

· 접근성 테스트 전략

 

■ 10. 모바일 테스트

· Appium (https://appium.io/): "Appium은 웹드라이버를 사용하여 Android 또는 iOS에서 스크립트를 실행하고 네이티브 애플리케이션, 모바일 웹 애플리케이션 및 하이브리드 애플리케이션을 테스트하기 위한 오픈 소스 자동화 도구입니다" 크로스 플랫폼을 지원하는 자동화 도구로 애플에서 제공하는 iOS용 XCUITest와 구글에서 제공하는 안드로이드용 UiAutomator와 같은 OS별 번들링하여서 사용한다.

· 성능 테스트 도구에는 몽키(가오스 엔지니어링), 보안테스트 도구에는 MosSF, Qark가 있다.

 

 

책에서 언급하는 다양한 개념과 기법, 이것을 활용한 다양한 tool중에 평소에 알고 있었던 부분이 있지만, 새로운 tool 및 사용법을 소개받고 파악한 내용이 많아서, 앞으로도 필요한 테스트 환경 및 범위를 선정해서 활용을 잘하면 매우 큰 도움이 되는 책이라고 생각합니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo