페이지 객체: UI 테스트의 취약성 줄이기

2025-09-15
페이지 객체: UI 테스트의 취약성 줄이기

웹 페이지 테스트에는 요소와 상호 작용해야 하지만, HTML을 직접 조작하면 테스트가 취약해집니다. 페이지 객체는 페이지 또는 조각을 애플리케이션 특정 API로 캡슐화하여 이 문제를 해결합니다. 이를 통해 HTML에 직접 액세스하지 않고 요소와 상호 작용할 수 있습니다. 목표는 사용자 동작을 모방하고 기본 위젯을 숨기는 깔끔한 인터페이스를 제공하는 것입니다. 텍스트 필드는 문자열 접근자를, 체크박스는 부울 값을, 버튼은 동작 지향 메서드를 사용합니다. 우수한 페이지 객체는 UI의 내부 구조가 아니라 사용자의 관점에 따라 모델링되며, 기본 데이터 유형 또는 다른 페이지 객체를 반환합니다. 페이지 객체에 어서션을 포함할지 여부에 대한 논의가 있습니다. 저자는 부풀어 오른 페이지 객체를 피하기 위해 어서션을 테스트 스크립트에 유지하고, 어서션 라이브러리를 사용하여 중복을 줄이는 것을 권장합니다. 이 패턴은 다양한 UI 기술에서 작동하며, 테스트뿐만 아니라 애플리케이션의 스크립팅 인터페이스로도 유용합니다.

더 보기

LLM: 기회와 과제

2025-08-29
LLM: 기회와 과제

짧은 휴가 전에 저자는 대규모 언어 모델(LLM)과 AI의 현재 상태에 대한 몇 가지 생각을 공유합니다. 소프트웨어 개발에 대한 LLM의 영향에 대한 현재 조사에는 결함이 있으며, LLM 사용의 다양한 워크플로우를 고려하지 않고 있다고 지적합니다. 저자는 LLM의 미래는 예측할 수 없으며, 실험과 경험 공유를 장려합니다. 또한 AI 버블의 불가피성과 LLM의 "환각" 특성에 대해 논의하고, 검증을 위해 여러 번 질문하는 것이 중요함을 강조합니다. 마지막으로 저자는 LLM이 초래하는 보안 위험, 특히 브라우저에서 작동하는 에이전트가 직면할 수 있는 공격에 대해 경고합니다.

더 보기
AI

나만의 CLI 코딩 에이전트 만들기: Pydantic-AI와 MCP를 활용한 실전 가이드

2025-08-29
나만의 CLI 코딩 에이전트 만들기: Pydantic-AI와 MCP를 활용한 실전 가이드

이 글에서는 저자가 Pydantic-AI 프레임워크와 Model Context Protocol (MCP)을 사용하여 명령줄 코딩 에이전트를 어떻게 구축했는지 자세히 설명합니다. Claude 모델, 테스트 실행기, 코드 실행 샌드박스, 문서 검색, AWS 도구를 통합하여 코드 테스트, 디버깅, 문서 조회, 코드 수정 기능을 제공하며 개발 효율성을 크게 높입니다. 저자는 에이전트 기능 확장에서 MCP의 중요성과 특정 프로젝트 요구사항에 맞는 맞춤형 에이전트 구축의 이점을 강조합니다. 최종적으로 이 에이전트는 지능적인 프로그래밍 파트너 역할을 하며, 개발자와 협력하여 코드 작성, 디버깅, 테스트를 수행합니다.

더 보기
개발

생성형 AI: 프로그래밍 패러다임의 변화

2025-06-28
생성형 AI: 프로그래밍 패러다임의 변화

대규모 언어 모델(LLM)은 소프트웨어 개발에 혁명을 일으키고 있으며, 그 영향은 어셈블리어에서 고급 프로그래밍 언어로의 전환에 필적합니다. 저자는 LLM이 추상화 수준을 높일 뿐만 아니라 비결정성을 도입하여 프로그래밍의 본질을 근본적으로 변화시키고 있다고 주장합니다. Fortran에서 Ruby로의 진화는 효율성을 향상시켰지만 프로그래밍의 본질은 변하지 않았습니다. LLM에 의해 도입된 비결정성으로 인해 프로그래머는 적응해야 하며, 과제와 기회 모두가 생겨납니다.

더 보기
개발

에이전트 코딩 어시스턴트: 놀라운 발전과 지속되는 과제

2025-03-26
에이전트 코딩 어시스턴트: 놀라운 발전과 지속되는 과제

생성형 AI, 특히 대규모 언어 모델(LLM)은 소프트웨어 개발에 혁명을 일으키고 있습니다. 이 메모는 저자가 몇 달 동안 AI 코딩 어시스턴트를 사용한 경험을 자세히 설명하며, 효율성의 상당한 향상과 함께 여전히 해결해야 할 과제가 있음을 보여줍니다. AI는 문제를 잘못 진단하거나, 무차별적인 수정을 하거나, 코드 재사용성이 부족하거나, 중복 코드를 생성하는 등의 문제를 일으켜 팀의 워크플로우와 장기적인 유지 관리에 영향을 미칩니다. 저자는 이러한 문제를 커밋까지의 시간, 팀 워크플로우, 장기적인 유지 관리라는 세 가지 영향 범위로 분류하고, 코드를 신중하게 검토하고, 정기적으로 반추하며, 코드 품질 모니터링 메커니즘을 구축하는 등의 완화 전략을 제시합니다. 중요한 메시지는 AI의 빠른 발전에도 불구하고 개발자의 경험과 기술은 여전히 필수적이라는 것입니다.

더 보기
개발

컨웨이 법칙: 소프트웨어 아키텍처는 조직 구조를 반영한다

2025-02-05
컨웨이 법칙: 소프트웨어 아키텍처는 조직 구조를 반영한다

소프트웨어 아키텍트들 사이에서는 컨웨이 법칙의 중요성에 대한 공감대가 형성되어 있습니다. 컨웨이 법칙이란 시스템을 설계하는 조직은 그 조직의 의사소통 구조를 복사한 구조의 설계를 만들어낸다는 법칙입니다. 즉, 소프트웨어 아키텍처는 종종 개발팀의 조직 구조를 반영합니다. 이를 무시하면 시스템 아키텍처와 조직 구조 사이에 모순이 생겨 개발의 복잡성이 증가합니다. 이 글에서는 컨웨이 법칙에 대처하는 세 가지 전략, 즉 무시, 수용, 그리고 역 컨웨이 기동(소프트웨어 아키텍처를 유도하기 위해 조직 구조를 변경하는 것)을 탐구합니다. 저자는 소프트웨어 개발 전반에 걸쳐 시스템 아키텍처와 조직 구조의 진화를 동기화해야 할 필요성을 강조하고, 도메인 주도 설계와 같은 방법론을 사용할 것을 제안합니다.

더 보기

컴퓨터 과학에서 가장 어려운 두 가지

2025-01-20
컴퓨터 과학에서 가장 어려운 두 가지

프로그래머들 사이에서 유명한 농담이 있습니다. "컴퓨터 과학에는 단 두 가지 어려운 일이 있다. 캐시 무효화와 명명이다." 이 글에서는 이 재치 있는 문구의 기원과 진화를 추적하며, 그 유머와 더 깊은 의미를 탐구합니다. 간결한 초기 형태부터 '범위를 벗어난 오류'를 포함한 여러 변형까지, 이 농담은 프로그래머들이 매일 마주하는 많은 어려움을 반영하며, 프로그래밍에 내재된 복잡성과 즐거움을 보여줍니다.

더 보기
개발

Codemod를 사용한 API 변경 자동화: 리팩토링 혁명

2025-01-11
Codemod를 사용한 API 변경 자동화: 리팩토링 혁명

이 글에서는 특히 호환되지 않는 API 변경을 처리할 때 Codemod가 어떻게 대규모 코드 변경을 자동화하는지 살펴봅니다. 추상 구문 트리(AST)를 활용하여 Codemod는 코드 변환을 정확하게 자동화하여 수동 리팩토링의 부담을 크게 줄입니다. 이 글에서는 오래된 기능 토글 제거 및 복잡한 React 구성 요소 리팩토링과 같은 예시를 사용하여 jscodeshift를 사용한 프로세스를 자세히 설명하고 Codemod를 확장할 때 발생할 수 있는 잠재적인 문제점과 해결책을 논의합니다. 또한 Codemod가 코드 품질과 유지 관리를 향상시키는 역할을 강조하고 Avatar 구성 요소 리팩토링에 대한 실제 사례 연구를 소개합니다.

더 보기
개발 API 변경

디자인 토큰: 확장 가능하고 일관성 있는 UI 아키텍처의 핵심

2024-12-18
디자인 토큰: 확장 가능하고 일관성 있는 UI 아키텍처의 핵심

이 글에서는 현대 UI 아키텍처에서 디자인 토큰의 역할을 살펴봅니다. 디자인 결정을 데이터로 표현함으로써 디자인 토큰은 단일 진실 소스 역할을 하며, 여러 플랫폼에서 자동 코드 생성을 가능하게 하여 더 빠른 업데이트와 향상된 디자인 일관성을 제공합니다. 디자인 토큰의 계층 구조(옵션 토큰, 결정 토큰, 구성 요소 토큰), 자동 배포 프로세스, 적절한 계층 수와 토큰 범위 선택 방법에 대해 자세히 설명합니다. 마지막으로 디자인 토큰의 적절한 사용 시나리오와 한계에 대해 논의하여 독자가 자신의 프로젝트에 적합한지 판단하는 데 도움이 되는 정보를 제공합니다.

더 보기