IoT 개발자를 위한 Embedded C에서 TDD를 해보자Taeyeop KimEmbedded C에서 TDD를 실천하기 위해 시도했던 경험과 방법을 기록해 보았습니다.
HW로부터 생기는 버그인지 SW로부터 생기는 버그인지 짐작조차 되지 않는 상황이 자주 발생한다면, TDD를 시작해보세요.
이 자료에서는 호스트 시스템(PC)에서 TDD를 실천하는 방법과 타깃 시스템(nRF51-DK)에서 TDD를 실천하는 방법을 기록하였습니다.
또한, nRF51-DK가 아닌 다른 보드를 가지고 있더라도 실천 가능합니다.
ktim610@gmail.com
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)SangIn Choung2014년 사내 세미나에서 발표했던 애자일 테스트 사례 발표
기존의 테스트(인력)가 애자일에서 어떤 형태로 일하는지를 소개
테스트 자동화 외에 다른 관점을 가진 다른 역할자간의 협업이 핵심 메시지 입니다
Ui test 자동화하기 - Selenium + JenkinsChang Hak Yeon저는 핀테크 서비스 개발 프로젝트에 참여하여 CI 구축과 QA 자동화 부분 개발을 담당하였습니다.
프로젝트가 시작하면 수 많은 개발자들과 기획자 그리고 QA 들이 다투는 것은 빈번한 일상입니다..
바쁜 개발 과정에서 기본적인 로그인 함수의 구현을 계속해서 체크해야 하는 것은 매우 불편하고 번거롭죠.
Selenium과 Jenkins를 통해 다음과 같은 상황을 자동화하여 개발자들과 QA/기획자들간의 갈등을 줄이고자 합니다.
스크린샷 중 가린부분들은 현재 회사 프로젝트 유출 방지를 위한 것이니 너그러이 용서해주시길..
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SangIn ChoungSDET은 개발관점을 포함한 테스트 역할자로, 주로 애자일 기반 프로젝트에서 역할을 수행한다. SDET의 다양한 프랙티스 중 특정 프로젝트/제품 대상, 양성인력 2명을 대상으로 지원한 사례를 정리한 내용이다.
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)SangIn Choung2014년 사내 세미나에서 발표했던 애자일 테스트 사례 발표
기존의 테스트(인력)가 애자일에서 어떤 형태로 일하는지를 소개
테스트 자동화 외에 다른 관점을 가진 다른 역할자간의 협업이 핵심 메시지 입니다
Ui test 자동화하기 - Selenium + JenkinsChang Hak Yeon저는 핀테크 서비스 개발 프로젝트에 참여하여 CI 구축과 QA 자동화 부분 개발을 담당하였습니다.
프로젝트가 시작하면 수 많은 개발자들과 기획자 그리고 QA 들이 다투는 것은 빈번한 일상입니다..
바쁜 개발 과정에서 기본적인 로그인 함수의 구현을 계속해서 체크해야 하는 것은 매우 불편하고 번거롭죠.
Selenium과 Jenkins를 통해 다음과 같은 상황을 자동화하여 개발자들과 QA/기획자들간의 갈등을 줄이고자 합니다.
스크린샷 중 가린부분들은 현재 회사 프로젝트 유출 방지를 위한 것이니 너그러이 용서해주시길..
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SangIn ChoungSDET은 개발관점을 포함한 테스트 역할자로, 주로 애자일 기반 프로젝트에서 역할을 수행한다. SDET의 다양한 프랙티스 중 특정 프로젝트/제품 대상, 양성인력 2명을 대상으로 지원한 사례를 정리한 내용이다.
Tdd 왜 배우기 어려운가Jaehoon OhThe document discusses the complexities of learning Test-Driven Development (TDD) and its relationship to software design. While TDD rules are simple, understanding and applying them effectively requires knowledge of design concepts and terminology. It emphasizes that programming is a design activity and that testing and debugging are also crucial design processes.
빠른 프로토타이핑을 위한 웹앱 자동화 툴 - YEOMAN정호 전쉽고 빠른 웹앱 프로토타이핑을 진행할 수 있게 도와주는 툴입니다.
node.js 기반으로 주요 기능으로는 아래와 같습니다.
* 스케폴딩으로 인한 빠른 프로젝트 템플릿 구성
* LiveReload를 이용한 라이브 코딩
* 이미지 optimization
* Compass, CoffeeScript 자동 컴파일링
* JS 라이브러리의 의존성 체크 및 업데이트 관리
* 정적검사 및 유닛 테스트
* JS/CSS merge 및 minimize 그리고 dist 배포
엔지니어의 학습, 그리고 테스트 코드Mijeong ParkWomen Techmakers Korea 2018 에서 발표했던 자료를 공유합니다. 첫 번째, 끊임없이 공부해야하는 엔지니어의 공부 이유 및 방법에 대해 고민했던 내용을 공유합니다. 두 번째, 테스트 코드에 대한 개인적인 의견과 사례를 공유합니다.
TDD - Test Driven DevelopmentChangHyeon BaeTDD 테스트 주도 개발이며, 하나의 개발 방법론 입니다.
- TDD는 반복 테스트을 이용한 소프트웨어 개발법이다. 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 소프트웨어를 구현한다.
- TDD의 목표는 작동하는 깔끔한 코드 “Clean code that works”
- TDD는 아래 단계의 반복으로 진행된다.
빨강 : 실패하는 작은 테스트 케이스를 작성한다. 처음에는 컴파일조차 안될 수 있다.
초록 : 테스트를 통과하는 코드를 작성한다.
리펙터링 : 테스트를 통과하기 위해 만든 코드의 모든 중복을 제거하고, 불명확한 것을 명확히 한다.
이러한 단계로 인해 TDD는 “업무 코드 작성 전에 테스트 코드를 먼저 만드는 것”으로 정의되기도 한다
개발이 테스트를 만났을 때(Shift left testing)SangIn Choung약 6개 프로젝트 대상으로 초기부터 테스트 전담자가 테스트 전략 수립, 교육, 설계, 자동화 테스트, 짝 테스트 등으로 협업을 한 사례.
이를 통해 향후 테스트 전담자의 역할을 확대해 보고, 테스트 안에서 다양한 역할자를 정의해 보려고 함
웹 개발을 위해 꼭 알아야하는 보안 공격선협 이The document summarizes various web security attacks that are important for web developers to understand, including SQL injection, XSS, CSRF, file upload attacks, and others. It provides examples of how each attack works, potential impacts, and methods for prevention, with a focus on understanding common attacks and basic defenses. The goal is to help web developers gain a foundational knowledge of security risks and mitigate vulnerabilities.
MongoDB 이해하기선협 이This document discusses MongoDB modeling patterns for distributed systems. It begins by explaining what NoSQL databases are and the differences between relational and non-relational databases. It then covers MongoDB specifically, including its use of documents, BASE semantics, and ACID transactions. The document focuses on various modeling patterns for MongoDB including how to model tree structures, relationships, and attributes within collections. Specific patterns discussed include embedding, linking, attributes, extended references, subsets, computed fields, buckets, and schema versioning.
Deep dive into Vue.js선협 이The document discusses Vue.js design and its inspiration from the MVVM pattern. It references various components such as data functions, methods, props, and computed properties. Additionally, it mentions the observer mechanism for reactive properties in Vue.js.
오픈소스를 여행하는 히치하이커를 위한 안내서 - 자막선협 이This document discusses open source software and contributions to open source projects on GitHub. It explains what open source means, how to contribute via pull requests and issues, and tools for viewing contributions. It encourages contributing to projects with small fixes or improvements, engaging on forums like Reddit and Slack, and growing an open source community.
Metal 기반 특별한 UI/UX 제공하기 - Let'Swift 2017선협 이This document discusses trends in mobile design such as complexion reduction and provides links to resources about Metal, a graphics and compute framework for Apple platforms. It contains emoji and code snippets related to Metal and its shading language specification.
Vue.js와 Reactive Programming 자막 :: Vuetiful Korea 2nd선협 이The document discusses reactive programming, specifically in the context of modern spreadsheet applications and frameworks like RxJS and Vue-Rx. It includes several hyperlinks and references to JSFiddle examples demonstrating reactive programming patterns, including observable and subscription-based UI updates. Additionally, it touches on concepts like promises and async/await within reactive programming.
Reactive Programming With Swift선협 이A modern spreadsheet program is an example of reactive programming. Reactive programming involves reactive objects that update automatically in response to external events or data streams. The document provides an example of how a spreadsheet reacts to user input events by updating cells, and how observables in reactive programming notify subscribers of emitted events.
42. 단위 테스트 + 인수 테스트
품질 높고 테스트한 항목에 대해서
버그 없는 제품 완성
43. 단위 테스트 + 인수 테스트
품질 높고 테스트한 항목에 대해서
버그 없는 제품 완성
테스트한 항목은
개발자들에게 좋은 문서가됨
44. 단위 테스트 + 인수 테스트
품질 높고 테스트한 항목에 대해서
버그 없는 제품 완성
테스트한 항목은
개발자들에게 좋은 문서가됨
테스트 코드를 성공하면
자신감이 상승한다
45. TDD의 단점
코드를 변경할 때마다 유닛 테스트를 변경해줘야한다.
데이터가 많고, 크고, 다양하면 테스트를 작성하기 힘들다.
유닛 테스트가 실패했는데도 동작할 경우가 있다.
하나의 유닛을 수정하면 다른 메소드에 문제가 생길 수 있다.
테스트 코드가 추가 되기 때문에 관리해야 하는 코드가 많아진다.
46. TDD의 단점
코드를 변경할 때마다 유닛 테스트를 변경해줘야한다.
데이터가 많고, 크고, 다양하면 테스트를 작성하기 힘들다.
유닛 테스트가 실패했는데도 동작할 경우가 있다.
하나의 유닛을 수정하면 다른 메소드에 문제가 생길 수 있다.
결국 귀찮고 시간이 오래걸린다...
47. TDD의 단점
코드를 변경할 때마다 유닛 테스트를 변경해줘야한다.
데이터가 많고, 크고, 다양하면 테스트를 작성하기 힘들다.
유닛 테스트가 실패했는데도 동작할 경우가 있다.
하나의 유닛을 수정하면 다른 메소드에 문제가 생길 수 있다.
결국 귀찮고 시간이 오래걸린다...
즉 비용이 많이듬!!!!
48. TDD의 단점
코드를 변경할 때마다 유닛 테스트를 변경해줘야한다.
데이터가 많고, 크고, 다양하면 테스트를 작성하기 힘들다.
유닛 테스트가 실패했는데도 동작할 경우가 있다.
하나의 유닛을 수정하면 다른 메소드에 문제가 생길 수 있다.
결국 귀찮고 시간이 오래걸린다...
즉 비용이 많이듬!!!!
하지만 이것은 일반적인 단점이고
단점이 느껴지지 않는 개발자가 있을 수도 있다
결국 자신에게 맞는 개발 방법이 최고다