의사 코드에서 테스트까지
내 프로세스 분석
저에게 새로운 앱을 구축하는 과정은 순서도와 구성 요소 매핑을 사용하여 세부적으로 작업을 계획하는 것부터 시작됩니다. 필요한 구성 요소, 포함할 데이터, 상호 작용 방식 등을 결정합니다. 이것은 시간이 많이 걸리지만 개발 중에 재작업(및 좌절) 수준을 크게 줄여준다는 것을 배웠습니다. 다음은 최근 프로젝트의 예입니다.
여기에는 이와 유사한 사용자 스토리 생성도 포함됩니다. 이 세 가지 이야기는 또한 잠시 후에 예제로 사용할 것입니다.
로
페인 포인트(필요)
설명(어떻게?)
사용자
새로운 사용자로 등록
장치 등록
사용자
내 계정에 로그인
인증 장치
사용자
내 과거 주문 보기
프로필에서/users/:user_id/orders 경로로 이동
프로젝트를 매핑한 후에는 기본적으로 '페이지에서 무언가를 얻기' 위해 계획을 의사 코드로 변환합니다. 그런 다음 각 의사 함수를 통해 작업하여 실제 코드로 빌드합니다. 그러나 Jest 또는 Rspec과 같은 단위 테스트 언어를 보면 유사 코드와 비슷합니다. 그래서 내가 한 것은 유사 코드 단계를 발전시켜 단위 테스트를 작성하는 것입니다. 그들이 완성되었을 때만 나는 그들이 통과하도록 앱 기능을 구축하기 시작합니다. 익숙해지는 데 시간이 좀 걸리지만(아직 작업 중입니다) 결국에는 그만한 가치가 있을 것이라고 확신합니다.
전체 사이트 계획 워크플로
아래에서 이전과 이후를 볼 수 있습니다. 코드에는 Ruby(Rails)를 사용하고 테스트에는 Minitest를 사용하고 있습니다.
의사 코드(빨간색 상자)
# receive POST '/users/register' request with user_params: name, email, password
def register
# user = create new User instance
# check validations
# if user passes validations
# save user to database
# return user details
# else
# do not save user to database
# return failure message
# end
end
# receive POST '/users/signin' request with user_params: email, password
def login
# user = find User in database by params[:email]
# check params[:password] matches user.password
# if authenticated
# set current_user = user
# return user details
# else
# return failure message
# end
end
# receive GET '/orders' request
def past_orders
# current_user.orders.all
# return order details as JSON array
end
테스트(녹색 상자)
test 'can register valid user' do
user = User.new(name: "Fake Guy", email: "[email protected]", password: "password")
assert user.valid?, "user not valid"
end
test "user can log in with credentials" do
users = [User.new(email: "[email protected]", password: "password")]
user = users.find{|u| u.email == "[email protected]"}
assert_equal user.password, "password"
end
test "user can see past orders" do
user = User.new(name: "Fake Guy", email: "[email protected]", password: "password")
one = Order.new(user_id: 1, Num_Items: 2, Total_Price: 400)
two = Order.new(user_id: 1, Num_Items: 1, Total_Price: 200)
three = Order.new(user_id: 2, Num_Items: 4, Total_Price: 800)
assert_equal 2, user.orders.size
end
봐, 나쁘지 않아. 테스트는 의사 코드보다 약간 더 생각해야 하지만 실제 코드를 작성하는 동안 훨씬 더 유용하고 변경해야 할 때 훨씬 더 유용합니다. 이것이 저와 같이 "다른 모든 일이 진행되는 가운데 테스트에 몰두할 시간을 어떻게 찾을 수 있습니까?"
Reference
이 문제에 관하여(의사 코드에서 테스트까지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dhintz89/from-pseudocode-to-tests-3443텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)