소프트웨어 테스팅이 정말로 필요한가요?


33

저는 BE (CS)에서 일하는 학생이며 질문은 다음과 같습니다.

  1. 소프트웨어 분야의 테스트가 필요합니까?
  2. 주의해서 소프트웨어를 만들면 왜 테스트해야합니까?
  3. 테스트 후 우리는 될 수 있는지 우리는 우리가 일 때문에이 목적 (의도 한대로 제품 / 소프트웨어 작품) 달성 한 것을 테스트 그것을 위해를? 가능합니까?

내 질문 : 소프트웨어 테스트가 필요 합니까?


34
If we create a software with care in during its development period then why should we go for Test?-가장 숙련 된 프로그래머조차도 실수를 저지르기 때문입니다.
sukhbir

6
@anto 인디언 스쿨에서 온 것 같습니까? 나는 그것을 나쁘게 의미하지는 않습니다. 여기 BE가있는 당신의 배경에 대한 아이디어가있을 것입니다 ....
gideon

7
소프트웨어 테스트는 공식적인 정확성 증명을 제공하지 못한 경우에만 필요합니다. :-)
rsp

13
@jwenting : 미래에는 구어와 프로그래밍 기술이 서로 관련이 없다는 것을 배우게됩니다. 영어가 모국어가 아닌 사람이 영어를 할 수 없다고해서 프로그래밍 할 수 없다는 의미는 아닙니다. 나는 당신이지도를 찾고있는 사람을 찌르기를 기꺼이 받아들이는 것이 지역 사회에 불명예스러운 것을 안다.
Chris

10
당연히 아니지. 기도도 마찬가지로 좋습니다.
gruszczy 2019

답변:


79

예. 아무리 훌륭해도 모든 것을 생각할 수는 없습니다.

  • 또한 의도하지 않은 작업을 소프트웨어에서 수행하도록 요청 받게됩니다.
  • 또한 것이다 결코 확실 코드가 침입하지 않습니다 수 있도록 모든 가능성을 생각 할 수 있도록 명확 요구 사항이 없습니다.
  • 또한 의도 한대로 작동하지는 않지만 다른 사람의 소프트웨어 및 API를 사용하여 작업 할 수 있지만 "완벽한"경우에 결함이있는 것으로 가정합니다.

+1 당신은 매우 좋은 실제 세계 포인트를 만듭니다! 두 번 투표 할 수 있으면 좋겠다!
기드온

8
+1 : "코드가 깨지지 않도록 모든 가능성을 생각할 수있는 명확한 요구 사항은 없습니다." 저의 직장은 대부분의 것보다 기능 장애가 훨씬 적으며, 제품 관리 팀은 상당히 좋은 요구 사항을 작성합니다. 나는 여전히 소수의 "이 사건은 어떻습니까?" 기능을 완성하기 전에 질문하십시오. 그리고 QA와 때때로 최종 사용자 는 아무도 고려하지 않은 경우 에도 여전히 버그를 발견합니다.
메이슨 휠러

1
포인트 # 3의 경우 +1 컴파일러, OS 라이브러리, 타사 구성 요소-금속에 직접 쓰지 않는 한 제어 할 수없는 코드에 따라 항상 작동합니다.
TMN

78

요리사가 요리하는 동안 음식을 맛보는 것과 같은 이유로.


7
마스터조차도 자신의 작업이 교정이 필요하지 않다고 가정해서는 안됩니다.
gablin

26
얇은 요리사가 요리 한 요리를 먹지 마십시오
JBRWilkinson

5
@JBRWilkinson : 음식을 항상 맛보아야하는 '뚱뚱한'요리사보다 요리를 더 자주 먹고 음식을 맛보지 않으면 얇은 요리사가 더 나은 요리사가 될 수 있습니다. : P
chiurox

8
@gablin-당신은 마스터가 자신의 작업이 항상 수정이 필요하다는 것을 알고 있다고 말할 수 있습니다.
Dan Ray

18

나는 이런 생각을하는 사람과 함께 일한다. 그는 선임 프로그래머이기 때문에 더 이상 코드를 테스트 할 필요가 없다고 생각한다. 회사는 이러한 태도가 얼마나 위험한지 이해하지 못하고 그를 해고하는 대신 버그 백 로그를 해결하기 위해 더 많은 프로그래머를 고용했습니다. 이 백 로그의 출처를 알지 못하면 프로그래밍이 무엇인지에 대한 부분이라고 생각합니다. 기본적으로 우리는이 모드에서 작동하는 3 명의 프로그래머와 20 명의 팀이이 세 가지 버그를 테스트하고 수정하는 것 외에는 아무것도하지 않습니다.

결석 올바른 TESTING .

그러므로 당신이 신이 아니거나 모든 것을 알고있는 완벽한 버전 (지금은 내가보고 싶은 것)이 아니거나 적극적으로 매우 빨리 해고하고 싶지 않다면 테스트를 시작하는 것이 좋습니다.


Therac-25는 테스트에서 노출하기가 끔찍하기 때문에 실제로 좋은 예는 아닙니다.
Loren Pechtel

4
"하나님"조차도 일부 테스터를 사용했을 수도 있습니다 (하지만 그가 의도적으로 모든 버그를 "설계"로 해결한다고 생각합니다) : P
Tester101

1
@Newtoplan, 상사에게 이야기하는 것을 고려 했습니까?

2
@Thorbjorn : 나는 그에게 말했지만 그들은 (일반적으로 경영진) 실제 상황을 깨닫지 못합니다. 실제로 그들은 그를 프로그래밍의 신으로 인식하고 그들이했던 것처럼 버그를 찾고 수정하지 않았다고 팀의 다른 팀을 비난합니다. 변경 사항은 2 년 이상 걸릴 수 있으며 다시 경영진은 750k loc 코드베이스가 정상이라고 생각합니다 (실제로 1.5m로 측정하지만 절반은 주석입니다) (죄송합니다. )
Newtopian

1
Ariane-5와 London Ambulance Service Computer Aided Dispatch에 대해서는 언급 할 필요가 없습니다 : lond.ambulance.freeuk.com/cad.html
StuperUser

9

사람들이 소프트웨어를 작성합니다.

사람들은 불완전하며 실수를합니다.

사업의 복잡성이 증가함에 따라 실수, 감독 또는 잊혀진 것들의 잠재적 인 수 (및 영향)는 일반적으로 기하 급수적으로 증가합니다.

네, 테스트가 필요합니다. 균형과 관점을 가져옵니다.


6

당신은 당신이 당신의 노트북에 사용하는 OS를 실행하고 좋아하는 색상으로 당신에게 죽음의 화면을 제공 비행을 타고 있습니까? 생각 해봐

완벽한 코더는 없습니다. 멀리, 멀리, 멀리 떨어져 있습니다. 테스트가 필요하며 테스터는 종종 개발자가 누락 한 관점 (사용 사례라고도 함)을 가져옵니다.

내가 의미하는 바를 알기 위해 Google에서 가장 유명한 소프트웨어 버그를 검색하십시오.

또한 대학 수준에서 테스트 중심 개발, 단위 테스트 및 민첩한 사례를 읽고 현재 상황을 파악하십시오.


감사. 언급 한대로 학습 단위 테스트, 민첩한 실습을위한 몇 가지 리소스를 말씀해 주시겠습니까?
Ant 's

1
나는 확실히 내가 C의 매우 reasonnable 지식 ++와 비밀의 규칙의 번호를 가지고은 "완벽하지"에 가입 ... 아직 나는 부울 조건을 반전하여 regurlarly 엉망이 : / 테스트는 필요한 뭔가 패스 테스트는 않기 때문에, 생각 작동하지 않는다는 의미는 아닙니다.)
Matthieu M.

4

테스트는 실제로 사용되는 사소한 (크기 또는 기능) 응용 프로그램에 반드시 필요합니다. (이 사이트를 방문한 것으로 입증 된) 자신의 기술에 관심이 있고 테스트가 필요하지 않다고 말하는 단일 개발자 를 찾지 못할 것입니다.

이미 게시 된 내용 외에도 특정 응용 프로그램에서 전체 자동화 된 단위 테스트를 수행하면 향후 코드 변경에 대한 자신감이 높아집니다. 이러한 높은 신뢰도 (단위 테스트에서 BIG 안전망을 제공함에 따라) 역 추적 / 이중 확인이 적기 때문에 기존 애플리케이션에 대한 코드 변경이 더 빨라집니다.


4

오류가있는 Humanum est

버그가없는 소프트웨어는 없습니다.

가장 숙련 된 개발자는 버그가있는 코드를 작성합니다. 완벽한 개발자가 존재하더라도 다음과 같은 불일치로 인해 여전히 버그가 있습니다.

  • 사용자 요구 및 사양 문서
  • 사양 및 디자인
  • 예상 및 실제 하드웨어 및 소프트웨어 환경
  • 어제와 오늘의 진실 : 위에 나열된 모든 내용은 모든 개발 프로세스 단계에서 완벽하게보고되지 않은 변경 사항에 따라 달라질 수 있습니다.

완벽한 개발자는 모든 것의 일부일뿐입니다. 완벽한 개발자는 존재하지 않습니다.


소프트웨어 실패 방법에 대한 좋은 지식을 보여줍니다. 그러나 소프트웨어가 실패하는 궁극적 인 이유는 사람이 잘못했기 때문이 아닙니다. 오류없는 소프트웨어 시스템을 만드는 입증 된 방법이 없기 때문입니다. 나는 이것에 대해 나중에 쓸 것이다.
CuongHuyTo 11

@CuongHuyTo-공식적인 방법이 있습니까?
mouviciel

3

실제 프로그램의 대부분 :

a) 수많은 파일에 흩어져있는 수백 줄 이상의 코드를 포함합니다.
b) 둘 이상의 프로그래머가 개발 한 것;
c) 개발자 환경과 다른 환경에서 사용

따라서 실제 상황에서 프로그램이 작동하는 방식을 확인하지 않으면 전혀 작동하지 않을 확률은 100 %에 가깝습니다.


3

다른 모든 훌륭한 답변 외에도 완벽하고 버그가 없음을 알고 있더라도 앞으로 코드를 처리 해야하는 다른 프로그래머에 대해 생각하십시오. 그들은 당신처럼 그것을 알지 못하고 그들이 변경 한 후에도 아무것도 깨지지 않도록 테스트에 의존하기를 원할 것입니다. 이것은 물론 1 년 안에 코드를 보지 못한 후에도 자신에게 적용됩니다!


3

예.

아직 다루지 않은 약간 더 미묘한 관점이 있습니다.

"독립적 검증"의 필요성을 과소 평가하지 마십시오 . 출판을 위해 큰 글을 제출하기 전에 독립적 인 편집인 몇 명이 작업을 감독하는 것이 좋은 이유도 마찬가지입니다. 아무리 당신이 글을 쓰는 사람이 있더라도 가끔 뇌파를 치고 "it"대신에 "in"같은 것을 쓰십시오. 당신이 그것을 스스로, 심지어 아주 신중하게 다시 읽는다면, 당신의 두뇌는 자동적으로 사고 과정 흐름을 올바른 것으로 받아들이고 오류에 대한 광택을 갖기 때문에 여전히 그것을 놓칠 것입니다. 신선한 눈에는 이런 종류의 실수가 보통 눈부신 것입니다.

프로그래밍에서도 똑같은 결과를 얻을 수 있습니다. 코드 또는 자체 코드의 기본 "개발 테스트"중 하나를 테스트하는 과정은 매우 쉽습니다. 코드를 테스트하고 특정 방식으로 사용하기 때문에 정확 해 보입니다. 그러나 다른 한 쌍의 손이 와서 약간 다른 방식이나 순서로 물건을 클릭하면 모든 것이 무너집니다.

물론 이론적으로는 코드의 모든 단일 가능성과 논리 분기를 공식적으로 확인하는 경로를 내려갈 있지만 사소한 소프트웨어의 경우 다른 사람이 다른 사람을 공격하는 것보다 훨씬 비싸고 시간이 많이 걸립니다. 당신을위한 코드. 그리고 당신은 아마 당신이 생각하지 않은 것들을 그리워 할 것입니다.


2

아직 다루지 않은 사항 : 코드가 완벽하더라도 안전하지 않습니다. 컴파일러에는 컴파일 후 완벽한 코드조차 제대로 작동하지 않을 수있는 버그가 있습니다. 운영 체제에는 실행시 완벽한 바이너리가 제대로 작동하지 않을 수있는 버그가 있습니다. 하드웨어에는 문제를 일으킬 수있는 버그가 있습니다.

그렇기 때문에 한 기계에서 테스트하는 것이 상용 제품으로는 충분하지 않은 이유이기도합니다. 가능한 한 많은 하드웨어 및 소프트웨어 조합에서 테스트 할 필요가 있습니다.


2

우주 왕복선 용 소프트웨어를 작성하는 팀의 리더는 소프트웨어가 셔틀에 해를 끼치 지 않을 것이라고 서명하기 위해 모든 발사 전에 날아 갔다.

당신은 그에게 무엇을 할 것이라고 확신 했습니까?


1

코드를 컴파일하고 사용하여 지속적으로 코드를 테스트하고 있습니다. 일부 IDE에서는 입력 할 때 상태 점검을 받고 있습니다. 실제로 코드를 실행하지 않는 한 테스트 중입니다.

얼마나 많은 양의 테스트가 실제로 이런 종류의 질문의 근본이며 이에 대한 대답은 위험에 이르게됩니다. 위험 관리 관점에서 테스트하는 것이 합리적입니다. 모든 것을 테스트하거나 아무것도 불가능합니다. 아무것도 옆에 테스트는 일반적으로 나쁜 움직임입니다. 그 사이의 모든 것은 위험 수준과 결과물의 노출에 따라 공정한 게임입니다.


1

숙제 질문 같은 냄새가납니다.

소프트웨어 분야의 테스트가 필요합니까?

예. 전혀. 모든 수준에서. 몇몇 특수한 도메인을 제외하고는 아직 특정 버그에 대해 코드가 정확 하다는 것을 수학적으로 증명할 수있는 단계에 있지 않습니다. 그것이 부서지는 곳.

주의해서 소프트웨어를 만들면 왜 테스트해야합니까?

테스트는 코딩 오류를 찾는 것이 아닙니다. 또한 모든 요구 사항을 충족하고 전체 시스템이 예상대로 작동하는지 확인해야합니다. 실패한 트랜잭션이 특정 오류 코드를 반환해야한다는 요구 사항이있는 경우 기능 이 존재 하고 올바르게 작동하는지 테스트하기 위해 테스트를 작성해야 합니다.

그리고 사양과 디자인이 완벽하고 정확하며 내부적으로 일관성이 있다고 가정하는 경우가 종종 있습니다. 문자에 대한 사양을 충족하고 마지막 점과 세미콜론까지 디자인을 따르더라도 사양이나 디자인이 나쁜 경우 통합시 문제가 발생합니다. 종종 시스템 또는 통합 테스트는 사양 자체가 버그가 있고 수정해야 함을 알게 될 때입니다 (아래의 전쟁 사례 참조).

테스트 후 테스트를 수행하여이 목표 (제품 / 소프트웨어가 의도 한대로 작동 함)를 달성했는지 확인할 수 있습니까? 가능합니까?

아니요, 100 %가 아닙니다. 우리는 가장 간단한 코드를 사용하여 가능한 모든 입력 또는 실행 경로 조합을 테스트 할 수 없습니다. 모든 환경 요인을 설명 할 수는 없습니다. 가능한 모든 실패 모드를 상상할 수는 없습니다.

우리는 합리적으로 테스트 할 수 있습니다 어떤 큰 문제가되지 않습니다 확인합니다. 다시, 이것이 우리가 모든 수준에서 테스트해야하는 이유입니다. 코드가 에지 조건 (잘못된 입력, 예기치 않은 결과, 예외 등)을 올바르게 처리하는지 테스트 세트를 작성하십시오. 코드가 요구 사항을 충족하는지 확인하기위한 단위 테스트. 엔드-투-엔드 처리를 검증하기위한 시스템 테스트. 모든 구성 요소가 서로 올바르게 통신하는지 확인하기위한 통합 테스트 유용성 테스트를 수행하여 고객이 당신을 쏘고 싶지 않은 방식으로 모든 것이 작동하는지 확인하십시오.

실제 시나리오-때때로 화면의 테이블에 표시하기 위해 GUI 서비스로 업데이트를 보내는 백엔드 시스템에서 작업하고있었습니다. 프로젝트 동안, 디스플레이에 필터링을 추가하기위한 요구 사항이 추가되었습니다 (예를 들어, 오퍼레이터는 테이블에서 엔트리의 서브 세트를 디스플레이하도록 선택할 수 있음). 디자인 실수 # 1-필터링 GUI 서비스 (디스플레이 관리 기능이 디스플레이 관리 소프트웨어의 책임이어야한다는이 고풍스럽고 골동품적인 개념을 가지고 있음)에 의해 수행되어야하지만 정치와 문제가 발생하기 전에 문제를 인식 할 수 없기 때문에 문제 는 백엔드 서비스에 적용되었습니다. 글쎄요, 문제 없습니다, 그렇게 할 수 있습니다. 상태 변경을 필터링하고 메시지를받은 다음에 대해 작성 또는 삭제 메시지를 보냅니다.인터페이스가 작동하는 방식이기 때문에 테이블의 각 행 (디자인 실수 # 2-단일 메시지에서 여러 행으로 업데이트를 보낼 수있는 방법이 없습니다. 하나의 "clear"또는 "delete"메시지를 보내서 지울 수도 없습니다. 전체 테이블).

글쎄, 개발하는 동안 모든 것이 잘 작동합니다. 단위, 시스템 및 통합 테스트에 따르면 올바른 정보를 전송하고 필터 변경 사항을 올바르게 처리합니다. 그런 다음 유용성 테스트를 수행하면 데이터 양이 압도적 이었기 때문에 모든 것이 어려워 집니다 . 백엔드 서비스와 GUI 간의 네트워크 대기 시간은 .15 ~ .25 초입니다. 열 개 정도의 업데이트 만 보내야한다면 나쁘지 않습니다. 수백 년 동안 업데이트를 보내야 할 때 치명적 입니다. 필터 상태를 변경 한 후 GUI가 정지되었다는 버그 보고서를 받기 시작했습니다. 글쎄, 아니, 무슨 일이 있었는지 몇 분 정도 걸리고 있었다 뼈를 향하고 갱신 한 행씩 메시지 프로토콜은 실제 시나리오를 처리 할 수 있기 때문에 디스플레이를 업데이트합니다.

그 모두가 가질 수 것을주의 해야 우리가 사전에 심지어 가장 기본적인 분석을 귀찮게했다면 모든 방법을 조금 오래된 저 아래로 계약자에서 모든 사람이 예상되고있다. 제가 제공 할 수있는 유일한 방어책은 6 개월간 2 개월 째 프로젝트가 마감 된 직후 배달이 끝나고 막혔다는 것입니다. 우리는 그 뒤를보기 위해 필사적이었습니다.

테스트해야 할 최종 이유 인 CYA가 있습니다. 실제 프로젝트는 여러 가지 이유로 실패합니다. 그 중 다수는 정치적입니다. 일이 잘못 될 때 모든 사람이 선의로 행동하는 것은 아닙니다. 손가락 비난했다 얻을, 뾰족한 수, 하루의 끝에서 당신은 적어도 보여주는 기록에 지점 수 있어야합니다 당신 이로했는데으로 물건을했다.


0

테스트는 항상 수행되며 버그는 항상 발견됩니다. 테스트는 팀에 의해 내부적으로 수행되거나 최종 사용자가 테스터가됩니다. 최종 사용자가 발견 한 버그 비용은 테스트 중에 발견 한 것보다 훨씬 높습니다.


0

좋은 내결함성 컴퓨팅 과정을 수강하는 것이 좋습니다. 소프트웨어의 신중한 디자인은 소프트웨어 제품의 견고성을 달성하는 데 필요한 기둥 중 하나 일뿐입니다. 다른 두 기둥은 충분한 테스트와 중복 설계입니다. 기본적인 의도는 기하 급수적 인 수의 알려지지 않은 실패 조건을 수용하고 알려진 문제점 중 일부를 우선적으로 처리하는 것입니다.

1.) 설계 및 적절한 구현을 통해 가능한 많은 실패를 제거합니다. 2.) 다양한 형태의 테스트 (단위, 통합, 임의)를 통해 설계 단계에서 예상치 못한 실패를 제거하고 잘못된 구현을 수행합니다. 3.) 이중화 ( 일시적 => 재 계산, 재시도 또는 공간 => 사본, 패리티 유지)

테스트 단계를 제거하면 장애 해결을위한 설계 및 중복 단계 만 남게됩니다.

또한 제품의 관점에서 이해 관계자 (예 : 경영진, 사용자, 투자자)는 제품이 특정 품질 및 안전 사양, 기준 등을 충족한다는 일종의 보증을 원할 것입니다.이 외에도, 소프트웨어를 테스트하지 않은 경우 당신은 단지 '위생 확인'을 갖도록 구성 했습니까? 이러한 모든 이유 때문에 소프트웨어 테스트가 더욱 강력 해집니다.


0

모든 프로그램에는 최소한 버그가 있습니다.

5 줄의 테스트되지 않은 코드 당 약 1 개의 버그에 대한 연구가있었습니다.

역사 수업 :

1960 년대에 IBM은 실제로 프로그램을 실행하지 않고 JCL에서 일부 기능을 실행할 수 있도록 "NOP"프로그램이 필요했습니다. 개발자들은 전체 코드가 "IEFBR14"라는 이름에 포함 된 한 줄 어셈블러 프로그램을 만들었습니다. 실제 코드는 다음과 같습니다.

       BR 14 * brach to return address in register 14

오랜 기간 동안이 한 줄 프로그램은 2 개의 버그 보고서와 5 개의 수정안이 적용되었습니다.


-1

단위 테스트를 수행하면 코드 리팩토링이 훨씬 빠릅니다. 단위 테스트는 또한 구체적인 기능의 간단한 사용을 보여 주므로 프로그래머가 전체 코드를 정확히 알지 못하는 큰 프로젝트에 실제로 유용한 작은 "하우투"가 있습니다.

TDD (테스트 중심 개발)로 개발할 때는 불필요한 게터 / 세터 등이 없습니다. 필요한 것을 만들면됩니다.


-1

질문 # 3 에 답하려면 :

프로그래머와 소프트웨어 테스터 였으므로 테스트하는 동안 소프트웨어의 요구 사항을 충족하는지 확인할 수 있습니다.

{QA 모자 착용}

방법? 테스트 코드에서 승인 기준, 승인 기준, 기능 및 기능, 요구 사항에 이르기까지 테스트를 추적하여이를 수행 할 수 있습니다. 설계 체인에서 모든 단일 테스트를 추적하고 하나 이상의 요구 사항에 매핑하는 경우 코드가 요구 사항을 충족하는지 확인하기 위해 테스트를 사용하고 있는지 확인할 수 있습니다. 다른 주제). 디자인 체인에서 테스트를 추적 할 수없는 경우 필요하지 않은 항목을 테스트 할 가능성이 있으며 이는 시간 낭비입니다. 수락 기준에는 원하지 않는 동작 확인도 포함될 수 있습니다. 이러한 기능도 테스트하여 품질 릴리스에 한 걸음 더 다가 갈 수 있습니다.

{QA 모자 오프}

개발 과정에서 품질을 평가하는 데 더 많은 노력을 기울이면 시간이 지남에 따라 코드가 버그없이 처리되지 않습니다.


-1

저는 3 년 동안 소프트웨어 테스터였습니다. 처음에는 개발 부서와 프로젝트 관리 부서가 업무를 수행하면 소프트웨어에 실수가 발생하지 않는다고 생각했기 때문에 테스트 필요성에 대해 회의적이었습니다.

그러나 이것은 사실이 아닙니다. ++++++++

실수는 종종 발생하며, 그 중 일부는 프로젝트 운영에 중요합니다. 또한 브라우저 간 테스트 (SAFARI, FIREFOX, CHROME 및 Internet Explorer와 같은 다른 기존 브라우저에서 테스트하는 것을 의미 함)가 있으며 모든 브라우저에서만 작동하지 않는 설문 조사 창에서 YES 및 NO와 같은 간단한 인터페이스 버튼이있는 프로젝트에서 작업했습니다. 그들 중 일부.

나는 인터넷 페이지 테스트에서 일했고 간단한 텍스트 변경을 테스트하고 있었고 지구상 에서이 간단한 작업에 결함이있을 수는 없다고 생각했지만 아무 일도 일어나지 않았습니다.

또한 새로운 개발자가 팀에 합류하고 외부 페이지에 대한 많은 연결 / 호출과 함께 기존의 복잡한 인터넷 응용 프로그램 양식에 대한 업데이트 작업이 제공되는 것을 보았습니다. 오래된 개발자와 새로운 개발자 간의 의사 소통 부족으로 인해 실수가 발생했습니다. 다양한 이유로 (교육 할 시간이없고, 교육 할 의지가없는 등).


-3

소프트웨어가 논리 함수 AND (b1, b2)이고 b1과 b2가 비트 일 뿐이라고 상상해보십시오. 이를 통해 주변 환경이 지정된 것을 정확하게 제공하는 경우 소프트웨어에 오류가 없는지 확인하기 위해 4 가지 테스트 사례가 필요합니다.

이제 여러분의 시스템은 가장 간단한 기능이 논리 기능보다 훨씬 복잡한 많은 기능으로 구성됩니다. 오류가 없는지 어떻게 확인 하시겠습니까?

(계속)


AND 및 사양의 다른 부분의 구현에 따라 환경에 대한 스트레스 테스트 (온도, 방사선 ...), 성능 테스트 (예 : 최대 주파수 b1 및 b2) 등 4 가지 이상의 테스트 사례가 필요할 수 있습니다. 논리 영역에서도 b1 및 b2의 순서에 관계없이 함수가 항상 올바른 결과를 제공함을 증명할 수 있습니다 (예 : b1의 특정 순서가 AND에서 XOR로 변경되는 백도어 상상)
mouviciel

이것은 이전의 21 가지 답변보다 실질적인 것을 제공하지 않는 것 같습니다
gnat

@ moviciel : 다시 한 번 좋은 지적을하지만 소프트웨어 시스템이 실행되는 하드웨어가 지정된 것을 정확하게 전달하면이 작은 AND () 함수에 대해 스트레스 테스트를 수행 할 필요가 없습니다. 나중에 성능 테스트 의견으로 돌아갑니다.
CuongHuyTo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.