최근 에이 기사 에서 기능 교차점에 설명 된 것과 유사한 문제가 점점 더 많이 목격되었습니다 . 다른 제품이라는 용어는 실제로는 다른 제품으로 귀속되는 경향이 있지만 일반적으로 가능한 제품 구성의 형태로 이러한 문제가 발생합니다.
이 유형의 문제에 대한 기본 개념은 간단합니다. 제품에 기능을 추가하지만 다른 기존 기능의 조합으로 인해 문제가 복잡 해지는 경우가 있습니다. 결국 QA는 이전에 아무도 생각하지 못했던 간단한 기능과 단순한 버그 수정 기능이 중대한 설계 변경을 요구할 수있는 기능의 조합으로 인해 문제를 발견했습니다.
이 피처 교차 문제의 크기는 매우 복잡합니다. 현재 소프트웨어 버전에 N
기능이 있으며 새로운 기능 하나를 추가 한다고 가정 해 봅시다 . 또한 각 기능을 켜거나 끌 수 있다고 말하면 작업을 단순화하고 이미 2^(N+1)
고려할 수있는 기능 조합 이 있습니다. 더 나은 단어 / 검색어가 없기 때문에 이러한 조합이 특징 교차 문제 라고 언급합니다 . (확실한 용어에 대한 참조를 포함한 답변에 대한 보너스 포인트.)
이제 제가 고심해야 할 문제는 개발 프로세스의 각 수준에서 이러한 복잡성 문제를 해결하는 방법입니다. 명백한 비용상의 이유로, 각 조합을 개별적으로 다루기를 원하는 것은 유토피아적인 시점까지 비현실적입니다. 결국, 우리는 정당한 이유 때문에 지수 복잡성 알고리즘을 피하려고 노력하지만, 개발 과정 자체를 지수 크기의 괴물로 바꾸는 것은 완전히 실패로 이어질 수밖에 없습니다.
따라서 예산을 폭발시키지 않고 적절하고 유용하며 전문적으로 수용 가능한 방식으로 완성 된 체계적인 방식으로 최상의 결과를 얻는 방법은 무엇입니까?
사양 : 새로운 기능을 지정할 때-다른 모든 자식과 잘 작동하는지 어떻게 확인합니까?
새 기능과 함께 기존의 각 기능을 체계적으로 검사 할 수 있지만 다른 기능과는 별개입니다. 일부 기능의 복잡한 특성을 고려할 때이 분리 된 뷰는 이미 너무 복잡
2^(N-1)
하여 기꺼이 무시한 다른 기능으로 인한 요인 은 물론 구조적 접근 방식 자체가 필요합니다 .구현 : 기능을 구현할 때 코드가 모든 경우에 올바르게 상호 작용 / 교차하는 방법은 무엇입니까?
다시 한번, 나는 복잡한 복잡성에 대해 궁금합니다. 두 가지 교차 기능의 오류 가능성을 줄이는 다양한 기술을 알고 있지만 합리적인 방식으로 확장 할 수있는 기술은 없습니다. 그러나 사양 중 좋은 전략은 구현 중에 문제를 억제해야한다고 가정합니다.
확인 : 피쳐를 테스트 할 때이 피쳐 교차 영역의 일부만 테스트 할 수 있다는 사실을 어떻게 처리합니까?
단일 기능을 단독으로 테스트하면 오류가없는 코드 근처에서 아무 것도 보장 할 수 없다는 것을 알기는 어렵지만
2^-N
수백 가지의 테스트로 인해 모든 해양에서 한 방울의 물을 덮지 않는 것처럼 보입니다. . 더 나쁜 것은 가장 문제가 많은 오류는 기능의 교차로 인해 발생하는 오류로, 문제가 발생하지 않을 것으로 예상되지만 강한 교차가 예상되지 않으면 어떻게 테스트합니까?
다른 사람들이이 문제를 어떻게 다루고 있는지 듣고 싶지만, 주제를보다 깊이있게 분석하는 문헌이나 기사에 주로 관심이 있습니다. 따라서 개인적으로 특정 전략을 따르는 경우 답변에 해당 출처를 포함시키는 것이 좋습니다.