2014-05-01 1 views
1

내 응용 프로그램은 다른 응용 프로그램에서 원격 xml 피드에 의해 노출 된 정보를 읽기 위해 일부 크롤러를 사용합니다 (우리는이 응용 프로그램에 대한 책임이 없습니다). 크롤링 된 데이터는 나중에 사용자에게 표시됩니다. xml에 간단한 데이터와 링크가 포함될 수 있습니다. 추가 데이터가 필요한 경우 따라야합니다.수용 테스트의 경계

우리 시스템의 테스트는 단위 테스트이며, xml 문서를 올바르게 구문 분석하는지 테스트하고, 우리가 우리가 표시 한 것을 테스트하기위한 수락 테스트입니다.

나는 수용 테스트에 대해 추리하고 있었는데, 그게이 질문에 관한 것입니다. 지금 당장, 각각의 수용 테스트를 위해 우리는 특정 테스트 데이터를 제공하는 임베디드 http 서버를 가져옵니다. 그런 다음 응용 프로그램을 시작하고 테스트 데이터를 크롤링하고 테스트 기준을 확인합니다. 이 접근법은 전체 시스템을 끝에서 끝까지 테스트하는 장점이 있지만 새로운 수용 테스트를 추가 할 때마다 빌드 시간을 상당히 늘리는 부작용이 있습니다.

수용 테스트에 적합한 방법입니까? 피드를 제공하는 시스템이 외부 피드이기 때문에 데이터가 이미 크롤링되었다고 가정 할 때 네트워크 통신 계층과 크롤러를 단위 수준에서 테스트하고 수락 테스트를 실행하는 것이 더 좋지 않을까요?

다른 누군가의 의견을 듣고 싶습니다. :-)

고마워요!

답변

3

수용 테스트는 천천히 실행되는 경향이 있으며, 더 많은 설정이 필요하며 단위 테스트 또는 통합 테스트보다 훨씬 더 취약합니다. 웹에서 "test pyramid"를 검색하면 이에 대한 많은 정보를 얻을 수 있습니다. 일반적인 합의는 단위, 통합 및 수용 수준에서 테스트를 받아야한다는 것입니다. 대부분의 테스트는 단위 테스트이며, 몇 가지 수용 테스트는 엔드 투 엔드 작업을 수행합니다. 종종 개발 팀은 단위 테스트 테스트 실행의 성능에 영향을 미치지 않도록 야간 빌드 프로세스 중에 장기 실행 허용 테스트 만 실행하도록 ci 서버를 설정합니다.

0

나는 무엇을 Andrew이 썼는지에 동의하지만 대답에 다른 각도를 더하고 싶었습니다. 그런 논의에서 꽤 자주 빠져 있다고 생각합니다.

귀하의 팀은 제품을 만들고 있으며 귀사는이 노력을 통해 최상의 가치를 창출하고자합니다.

처음에는 테스트로 인해 속도가 느려질 것이라고 생각할 수 있습니다. 시스템은 간단하고 누구나 이해하므로 모든 시간을 낭비합니다. 시험을 치는 데 드는 돈의 가치가 거의없는 것처럼 느껴질 수도 있습니다. 그러나 제품 개발에 대한 장기적인 관점을 채택한다면 이는 분명히 잘못된 것입니다. 그러나 내가 개종자에게 설교 할 때 나는 여기서 멈출 것이다.

그러나 질문에 대답 할 때 동일한 사고 방식을 채택하면 실제로 상황에 따라 대답이 달라질 수 있습니다.

P(bug | test)bug의 확률을 표시하자 당신이 test를 실행 제공, C(test) 테스트를 실행의 비용을 표시하자 C(bug)는을 표시하자 : 내 생각을 설명하기 위해 단순화 된 수학 모델을 사용하는거야 버그 비용.특정 버그 *에 초점을 맞출 경우

, 다음 최소화하려면 :

P(bug | test_1)*C(bug) + C(test_1) ... P(bug | test_n)*C(bug) + C(test_n) 

스위트 룸은 n 테스트로 구성 곳.

테스트 비용을 무시한다면 테스트가 많을수록 좋습니다. 그러나 테스트는 유지되고 실행되어야하기 때문에 비용이 0이 아닙니다. 이것은 당신이 장단점을 가지고 있음을 의미하며 여기서 U 커브 최적화를 수행하고 있습니다 (picture과 같은 비트로 릴리스 및 유지 비용 간의 최적 절충점을 찾으려고합니다).

실제 비용은 특정 도메인, 제품 영역 및 테스트 유형에 따라 크게 달라집니다.

당신이 뱅킹에 들어가는 경우, 버그 비용이 엄청날 수 있으므로 테스트 비용이 줄어 듭니다. 그러나 음악에 대한 추천 엔진을 작성하는 경우 몇 시간 동안 꺼져있는 제안은 문제가되지 않습니다. 사실, 후자의 경우에는 다른 알고리즘을 사용하여 자유롭게 실험하고 반복적으로 반복 할 수있는 능력이 필요하기 때문에 테스트 비용이 버그 비용을 과도하게 부담 할 수 있습니다.

특정 제품에 대해 작업하게됩니다. 그것조차도 균질하지 않습니다. 다른 제품보다 더 중요한 제품 영역이 있습니다. 트위터를 예로 들어 보겠습니다. 사람들이 트위터에 짹짹이거나로드 할 수 없다면 큰 문제가 될 것입니다. 다른 한편, "제안을 따르는 사용자"가 비어 있으면 제품에 미치는 영향은 훨씬 적습니다.

마지막으로 테스트 비용이 일정하지 않습니다. 그러나 이전에 말했듯이, 그것은 무시할 수 없으므로주의 깊게 고려할 필요가 있습니다. 테스트 변경 범위가 좁아서 생산 변경에 대한 자신감이 부족하고 테스트 실행 시간이 너무 길어 사람들이 끊임없이 구축하고 거의 작업하지 않는다고 불평하는 곳에서 일하면서 두 곳 모두에서 일했습니다.

마지막으로 한 가지. 실패에 대한 탄력성으로 구축하는 것이 좋으며 - 버그를 저해 할 수 있습니다.