문제

기본적으로 제한된 기간 동안 다른 사람의 도움을받지 않고 코드가 잘 테스트되도록하는 팁이 있는지 궁금합니다.

과거에는 항상 내 코드에서 테스트 할 다른 사람을 찾거나 전용 품질 보증 팀이 모든 것을 극복하고 모든 오류를 찾았습니다.

나는 보통 꽤 조심하지만 항상 내가 놓친 것들이 있고 테스트 할 때 나는 그들을 보지 못한다.

그러나 현재 직장에서 나는 매우 제한된 시간 내에 작성하기 위해 두 가지 PHP 웹 응용 프로그램을 받았으며, 이것이 좋은 생각이 아니라는 의견에도 불구하고 모든 테스트를 직접 수행해야한다고 들었습니다.

다른 사람이 전에이 문제가 있었는지 궁금하고 통찰력을 제공 할 수 있을까요?

각 영역을 코딩하기 전에 빠른 테스트 계획을 작성하고 테스트를 수행하기 전에 요구 사항을 두 번 확인하는 것이 좋을 것이라고 생각했습니다.

도움이 되었습니까?

해결책

테스트 우선 여부에 관계없이 단위 테스트는 첫 번째 방어선이어야하므로 각 응용 프로그램의 각 작품이 생각하는 방식으로 작동하도록합니다. 그러나 다른 눈을 얻는 데 도움이 될 수있는 테스트 유형은 수락 테스트 영역에 더 많이 있습니다. 적용을 전체 작업 방식으로 수행해야합니다. 다양한 이상한 시나리오 나 행동 등에 효과가 있습니까?

유용한 접근 방식 중 하나는 페르소나를 상상하는 것입니다. 먼저 응용 프로그램을 자신처럼 테스트 한 다음 85 세이고, 몹시 잘 볼 수 없으며, 마우스를 잘 사용하지 않는다고 상상하는 것을 다시 테스트하십시오. 당신이해야 할 일이 아니라고 가정 할 때 가장 밝거나 가장 큰 것을 클릭하는 경향이있을 수 있습니다. 이제 당신이 12 살이고 찢어짐을 상상해보십시오. 당신은 지시를 읽지 않을 것입니다. 여전히 작동합니까?

주어진 필드의 경우 사람이 입력 할 수있는 가장자리 사례는 무엇입니까? 공백 만 입력하면 어떻게됩니까? 텍스트 필드에 숫자 만? HTML을 입력하면 어떻게됩니까? 자바 스크립트? 비 서구 알파벳에 뭔가? 정말로 정말 긴 것을 입력하면 어떻게 되나요?

열쇠는 사용자가 마음에 드는 방식으로 응용 프로그램을 통과하는 "행복한 길"을 테스트하는 것이 아닙니다. 아무도 필요없는 방식으로 신청서를 살펴보십시오. 왜냐하면 ... 그들은 할 것입니다.

다른 중요한 작품은 결코 아무것도 무시하지 않는 것입니다. 이상한 화면이 와서 "아, 그건 그냥 우연 일뿐"이라고 스스로에게 말하는 것은 쉽습니다. 당신은 자신을 알아 차리고 그대로가 아닌 모든 것을 추적해야합니다.

다른 팁

얼마나 많은 테스트를 할 수 있는지에 대한 제약이 항상 있습니다. 제약 내에서는 분명히 테스트를 구성해야합니다. 분명히 가장 중요한 영역에 대한 테스트를 먼저 구축하려고합니다 (보안, 손상 가능성, 데이터 손실, 기능).

기능 사양 이외에도 테스트 할 내용을 결정하는 데 도움이되는 많은 수동 도움말을 얻지 못할 것입니다. 그러나 테스트 커버리지 도구 형태로 자동 도움말을받을 수 있습니다. 이 도구는 테스트 한 코드와 테스트하지 않은 코드를 알려줍니다. 테스트되지 않은 코드를 검사하면 코드가 다소 중요했는지 여부를 결정할 수 있으며, 따라서 릴리스 전에 테스트를 코딩 할 자격이 있습니다. 테스트 커버리지 도구는 또한 테스트 된 코드 대 전체 코드의 비율을 알려주고이 비율이 70% 이상인 업계 모범 사례를 알려줍니다. 이 데이터를 사용하여 간단한 인공물을 통해 상사와 더 많은 시간을 협상 할 수 있습니다. "우리는 15%의 테스트 범위 만 가지고 있습니다.

PHP와 함께 작동하는 테스트 커버리지 도구는 여기에서 찾을 수 있습니다.시맨틱 설계 PHP 테스트 커버리지 도구

TDD가 정확히 당신이 찾고있는 것 같아요. 먼저 테스트를 작성한 다음 테스트를 통과하는 코드를 작성하십시오. 당신은 당신과 다른 사람이 필요하지 않으며 (테스트에 대한 도움이 권장 될 것입니다), 코딩을 시작하기 전에도 도구가 무엇을 해야하는지에 대한 명확한 아이디어를 얻을 수 있습니다.

http://en.wikipedia.org/wiki/test-driven_development

고용주는 테스트가 중요하다고 생각하지 않습니다. 당신은 그만두고 적절한 직업을 찾아야합니다.

나는 그것을 말하는 것을 싫어하지만, 나는 당신의 경우 Alex Tingle이 옳다고 생각합니다. 불가능한 상황입니다.

Jacobm과 Santi는 단위 테스트, 수락 테스트 및 테스트 중심 개발을 언급 할 때 정확합니다. 해당 목록에 코드 적용 범위 및 정적 분석 도구를 추가했습니다.

그러나 TDD 또는 기본 단위 테스트는 일반적으로 테스트 시간 감소, 결함 률 감소 및 유지 보수 용이성으로 보상을받지 않지만 사망시에서 제 시간에 전달하는 데 도움이되지 않습니다. 자동 테스트를 작성하는 데 경험이없는 경우 특히 그렇습니다.

정중하게 표현 된 상사는 기술 부채를 부여하도록 요청하고 있습니다. 정확하게 말하면, 그는 당신에게 전문 윤리를 무시하도록 요구하고 있습니다.

미소, "예 선생님"이라고 말하십시오. 할당 된 시간에 최선을 다하고 이력서를 업데이트하십시오.

명심해야 할 한 가지는 개발자가 코드의 "최고의 경로"를 테스트하는 자연스러운 경향이 있다는 것입니다. 다시 말해, 당신은 그것을 썼으므로 특정 지점을 클릭하고 특정 것을 입력하고 테스트해야한다는 것을 알고 있습니다. 물론 이것은 중요합니다.

여기에는 몇 가지 좋은 제안이 있지만, 대부분 (전부는 아님)에 의해 놓친 것처럼 보이는 것은 부정적인 테스트입니다. 기본적으로 경계를 테스트해야하며 악의를 테스트해야합니다. 언급 한 바와 같이, 다음과 같은 필드에 스크립트 코드를 넣으십시오.

<script>alert('abc')</script>

경고를 받으면 올바르게 인코딩하지 못했다는 것이 분명해집니다! 또 다른 일은 다음과 같습니다.

abc' or 'a' = 'a'

이는 인증과 같은 것들에서 SQL 주입 문제를 잠재적으로 보여줄 것입니다. 다음과 같은 것들로 SQL 주입을 테스트 할 수도 있습니다.

abc'; drop table users; select * from dual where 'a' = '

테이블이 방금 사라지면 문제가 있습니다! 많은 예가 있지만 최소한 OWASP Top 10을 테스트하는 데 시간을 보내야합니다.

테스트하려는 다른 장소는 매우 많은 숫자와 같은 것들입니다. 특히 32 비트 플랫폼, 음수 값, 값이없는 정수 입력을 기대할 때 기본적으로 원하는 흐름이 작동하는 것을 테스트 한 다음 해당 할 수있는 모든 작업을 수행합니다. .

테스트 중심 개발 및 단위 테스트의 가치와 효과에 게시 된 이전 답변에 동의합니다. 올바르게 수행하면 생산/전달 가능한 코드를 작성하기 전에 단위 테스트를 작성하는 TDD 프로세스는 초점을 유지하고 설계 및 인터페이스를 검증하는 데 도움이됩니다. 또한 다른 개발자는 매우 간단한 방식으로 코드를 사용하고 소비하는 방법에 대한 명확하고 일관된 방법을 가질 수 있습니다. 단위 테스트는 동일하지 않으며 전체 통합 테스트를 대신 할 수 없습니다. 이 접근법에서는 여전히 전체 통합 테스트 계획을 작성해야 할 수도 있습니다.

나는 .NET에서 Primarliy를 일하며 Nunit과 함께 일하는 데 좋은 결과를 얻지 못했습니다.

나는 전에 PHP에서 일한 적이 없지만 내가 본 것에서 당신은 고려하고 싶을 것입니다. 단순합니다 또는 phpunit.

상사의 요구 사항을 감안할 때, 당신이 그를 위해 일하는 동안 존중 해야하는 것과 마음을 바꿀 수있을 때까지, 당신은 질문에 정답을주었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top