전체 글
[TDD] 테스트 코드 작성 순서
테스트 코드 작성 순서 쉬운 경우에서 어려운 경우로 진행 예외적인 경우에서 정상인 경우로 진행 초반에 복잡한 테스트부터 시작하면 안되는 이유 초반부터 다양한 조합을 검사하는 복잡한 상황을 테스트로 추가하면 해당 테스트를 통과시키기 위해 한 번에 구현해야 할 코드가 많아진다. 구현하기 쉬운 테스트부터 시작하기 가장 구현하기 쉬운 경우부터 시작하면 빠르게 테스트를 통과시킬 수 있다. 보통 수 분에서 십여분 이내에 구현을 완료해서 테스트를 통과시킬 수 있을 만큼 쉬운 것을 선택한다. 예외상황을 먼저 테스트해야 하는 이유 예외상황을 전혀 고려하지 않은 코드에 예외 상황을 반영하려면 코드의 구조를 뒤집거나 코드 중간에 예외 상황을 처리하기 위해 조건문을 중복해서 추가하는 일이 벌어진다. 완급조절 정해진 값을 리턴..
[TDD] 시작하기
TDD, 즉 테스트 주도 개발(Test-driven Development) 테스트부터 시작한다. 구현을 먼저하고 나중에 테스트하는 것이 아니라 먼저 테스트를 하고 그 다음에 구현한다. TDD 예: 암호 검사기 검사할 규칙 길이가 8글자 이상 0부터 9사이의 숫자를 포함 대문자 포함 등급 3개의 규칙을 충족하면 암호는 강함 2개의 규칙을 충족하면 암호는 보통 1개의 규칙을 충족하면 암호는 약함 assertEquals(기댓값,결과값); 테스트 코드 작성 첫 번째 테스트 - 모든 규칙을 충족하는 경우 public enum PasswordStrength { INVALID,NORMAL,STRONG } @Test void meetsAllCriteria_Then_Strong(){ PasswordStrengthMete..
프로젝트 회고 [명식이 - 명지대의 식사를 책임지다! ver1.0 ]
개발기간 2022.10 ~ ING 플랫폼 Android, IOS 참여인원 서버 1명, AOS 1명, IOS 1명, 디자이너 2명 (총 5명) 담당역할 PM, 기획, Back-end, DevOps 명식이는 "명지대학교의 식사를 책임지다!"를 슬로건을 가지고 출발한 앱이다. 첫 시작은 인문 캠퍼스 공사를 거치며 학생식당이 신규로 들어오며 기존의 학식메뉴를 제공해주는 에브리타임에서는 제공하지 않고 학생들은 직접 학생식당에 가서 사진을 찍고 이를 에브리타임 커뮤니티에서 공유하여 많은 학생들이 불편함을 느끼는 것을 들었다. 안드로이드 친구와 학생식당 메뉴를 알려주는 앱을 만들자는 의견에서 시작했다. 시작을 하기로 마음을 먹고 1주일 만에 개발을 마치고 배포를 진행했다. 배포를 진행하고 커뮤니티와 오프라인 홍보물을..
[gRPC] gRPC 사용후기
이번 22-2 클라이언트 서버 프로그래밍 수업에서 gRPC 기술을 적용하여 수강신청 시스템을 구축하였다. 해당 포스터에서는 gRPC를 사용하면서 느낀 사용후기와 깃을 포스팅하겠다. 사용후기 우선, 수업에서는 RMI(자바 원격 함수 호출)로 메서드를 호출하는 기술인데 같은 호출 기술인 gRPC로 진행하였다. 내가 진행한 프로젝트는 수강신청 시스템 구축으로 아래와 같은 프로세스간 통신을 한다. 내가 느낀 장점 통신 프로세스간 통신은 현재 기술 발전의 핵심인 분산에서 관심있는 분야이다. 서비스를 좀 더 안정적으로 배포하기 위해서 서비스를 나누는데 필요한 것이 통신이다. gRPC는 통신을 매우 효율적으로 할 수 있게 해준다. proto3버전을 사용하면 넓은 언어 호환성과 xml, json에 비해 빠른 속도와 가..
[gRPC] gRPC 특징, 장단점
gRPC 소개 gRPC는 protocol buffer와 RPC를 사용한다. 2022.12 당시, IDL로는 proto3를 사용하며 호환하는 언어로는 Java, C++, Python, Java Lite, Ruby, JavaScript, Objective-C, C#을 호환한다. gRPC의 핵심은 분산으로 클라이언트 응용 프로그램을 서버에서 함수를 원격 호출할 수 있어 MSA(Micro Service Architecture)를 구현하기 수월하다. gRPC 서버에서는 Stub을 통한 호출을 처리할 수 있다. gRPC 특징 1. Protocol Buffere gRPC는 IDL을 Protocol Buffere(.proto)를 사용한다. 2. Service definition service EducationServi..