2008-11-07 4 views
6

우리는 현재 실시 할 무역 연구에 대한 평가 기준을 설정하고 있습니다.소프트웨어의 안정성을 어떻게 평가합니까?

우리가 선택한 기준 중 하나는 안정성 (및/또는 견고성 - 동일합니까?)입니다.

소프트웨어를 평가하는 데 많은 시간을 허비하지 않아도 소프트웨어의 안정성을 어떻게 평가합니까?

편집 : KenG이 제공 한 응답 라인을 따라 질문의 초점을 좁히십시오. 기존 소프트웨어 솔루션 50 개 중에서 선택할 수 있습니다. 테스트 할 수 없으면 (적어도 초기에는) 얼마나 신뢰할 수 있는지 평가해야합니다. 무엇 유형 통계 또는 다른 당신은 그 신뢰성을 평가하는 데 사용할 수 있습니까? 안정성을 생각하면 ... 다른 대답으로 이어질 수

답변

4

신뢰성과 견고성은 시스템이 재부 두 가지 특성은 다음과 같습니다

Reliability

IEEE는 에 시스템 또는 구성 요소의 능력에서의 필요한 기능을 수행 "으로 정의

.이.. 지정된 기간 동안 명시된 조건. " 이 입력 계산에 이상에도 계속 작동하는 경우 Robustness

그것이 내로 설계되었을 때 등

는 그래서 신뢰성 시스템은 그 기능을 수행하고, 견고 제약; A 견고한 예기치 않은/예상치 못한 경우 시스템이 계속 작동합니다.

평가하려는 소프트웨어의 기록에 액세스 할 수있는 경우보고 된 결함, 시간 경과에 따른 '패치'릴리스 수, 코드 기반에서의 이탈 가능성 등을 고려하여 안정성에 대한 아이디어를 추측 할 수 있습니다.

제품에 자동화 된 테스트 프로세스가 있습니까? 테스트 커버리지는 자신감의 또 다른 지표 일 수 있습니다.

일부도 이러한 기준에 맞지 않을 수 있으므로, 민첩 방법을 사용하여 프로젝트 - 자주 릴리스와 리팩토링을 많이는 실제 내용은 소프트웨어/제품의 현재 사용자와

확인 예상된다.

1

음, 키워드 '신뢰성', 나는 두 가지 측면을 생각 : 1 ~ 항상 정답 (또는 가장 좋은 대답) 2를주는 ~ 항상을 제공 같은 대답

어느 쪽이든, 나는 그것이 몇 가지 반복 가능한 테스트로 귀결된다고 생각합니다. 문제의 응용 프로그램이 단위 테스트 및 인수 테스트의 문자열 모음으로 작성되지 않은 경우 반복적으로 수행 할 수있는 일련의 수동 또는 자동 테스트를 제안 할 수 있습니다.

테스트에서 항상 동일한 결과를 반환한다는 사실은 aspect # 2가 처리된다는 것을 보여줍니다. aspect # 1의 경우, 테스트 작성자는 실제로 버그 나 불완전 함을 드러내는 훌륭한 테스트를 제안해야합니다.

응용 프로그램에 대해 알지 못해서 더 구체적 일 수는 없습니다. 죄송합니다. 예를 들어, 메시징 시스템은 메시지가 항상 전달되고, 절대로 분실되지 않으며, 오류를 포함하지 않으면 등 신뢰할 수 있습니다. 등 ... 계산기의 신뢰도 정의는 매우 다를 수 있습니다.

1

이미 사용중인 사람들과 대화하십시오. 자신을 테스트 할 수는 있지만 신뢰성이 높지는 않습니다. 테스트 할 대상에 따라, 특히 시간이 부족한 경우에는 매우 비싸고 신뢰할 수 없습니다. 대부분의 회사는 고객에게 소프트웨어를 판매하는 데 도움이되고 현재 소프트웨어가 어떻게 처리되는지에 대한 실제 아이디어를 제공 할 수 있다면 현재 고객과 연락하게됩니다.

1

평가할 소프트웨어의 유형에 따라 다릅니다. 안정성을위한 웹 사이트의 주된 (그리고 아마도 유일한) 기준은 가동 시간 일 수 있습니다. NASA은 소프트웨어의 안정성에 대해 완전히 다른 정의를 갖습니다. 귀하의 정의는 아마 중간에있을 것입니다.

신뢰성을 평가할 시간이 많이 없다면 측정 과정을 자동화하는 것은 중요입니다. continuous integration 도구를 사용하면 수동으로 버그를 한 번만 찾아야합니다.

귀사 또는 귀사의 누군가가 Continuous Integration: Improving Software Quality and Reducing Risk을 읽는 것이 좋습니다. 소프트웨어 안정성에 대한 자신 만의 정의를 이끌어 낼 수 있다고 생각합니다.

0

안정성을 핵심 기준으로 삼을 가능성이 있거나 (커밋을 원하지 않는 경우) 부정적인 영향을 줄 수 있다는 점을 이해하고 완전히 수락함으로써 프로세스를 진행해야합니다. 리소스를 기반으로 적절하게 평가할 수 있습니다.

그렇다면 소프트웨어 안정성을 중요하게 여기는 핵심 요구 사항을 결정한 다음 이러한 요구 사항을 기반으로 평가할 수있는 테스트를 개발하십시오.

견고성과 신뢰성은 서로의 관계가 교차하지만 반드시 동일하지는 않습니다.

10 개가 넘는 연결을 처리 할 수없고 100000 개의 연결을 예상하는 데이터 서버가있는 경우 강력한 것은 아닙니다. 10 번 이상 연결되면 죽을 확률이 낮습니다. 동일한 서버가 필요한 연결 수를 처리 할 수 ​​있지만 간헐적으로 종료되는 경우 여전히 견고하지 못하고 신뢰할 수 없다고 말할 수 있습니다.

귀하가 수행 할 분야에 대해 잘 알고있는 숙련 된 품질 보증 담당자와 상담하는 것이 좋습니다. 그 사람은 당신이 주요 제약 사항에 대한 시험을 고안하도록 도울 수 있습니다. 결정을 내리기 위해 테스트해야하는 주요 기능을 결정하는 데 도움이되는 중립적 인 제 3 자 (소프트웨어 작성자 또는 공급 업체가 아닌)를 권하고 싶습니다.

1

당신이 뭔가를 평가할 시간이 없다면 다른 사람들의 판단에 의존해야합니다.

1

신뢰성 일도 '효과 .. 다른 두가 유지 보수성 및 가용성있는 세 가지 측면 중 하나 ...

재미있는 종이 ... 자세히 http://www.barringer1.com/pdf/ARMandC.pdf에서는이 있지만, 일반적으로

입니다 신뢰성은 시스템이 깨질 확률을 기반으로합니다. 즉, 고장 가능성이 높을수록 신뢰성이 떨어집니다.다른 시스템 (소프트웨어가 아닌)에서는 MTBF (Mean Time Between Failure)로 측정되는 경우가 많습니다. 이것은 하드 디스크와 같은 것들에 대한 일반적인 척도입니다 ... (10000 시간 MTBF) 소프트웨어에서는 평균으로 측정 할 수 있습니다. 중대한 시스템 오류 사이, 또는 응용 프로그램 충돌 사이 또는 복구 불가능한 오류 사이 또는 정상 시스템 생산성에 지장을 주거나 악영향을 미치는 모든 종류의 오류 사이의 시간 ...

유지 관리 가능성은 얼마나 오래 얼마나 비쌉니다 인적 자원 및/또는 기타 자원)을 해결할 수 있습니다. 소프트웨어에서이 개념에 소프트웨어를 향상 시키거나 연장하는 데 소요되는 시간 (추가 요구 사항이 계속되는 경우)을 추가 할 수 있습니다.

가용성은 처음 두 개를 조합 한 것으로서 플래너에게 나타냅니다. 10 년 동안 100 개 중 100 개를 가동 시켰습니다. 고장을 파악한 후 고장난 유닛을 수리, 수리하는 동안 사용할 수없는 시간은 평균 100 개였습니다. 한 번? 20 %, 또는 98 %?

0

당신이 그것을 테스트 할 수없는 경우, 당신은 그들이 다른 테스트 애플리케이션 등이 응용 프로그램에서 같은 관행을 따라 얼마나 잘와 함께 개발자 (들)의 명성에 의존해야합니다. 예 : Microsoft는 자신의 응용 프로그램 버전 1에서는 잘 작동하지 않지만 일반적으로 3 & 4가 매우 좋습니다 (Windows ME는 0.0001 버전이었습니다).

0

평가할 서비스의 유형에 따라 안정성 메트릭 또는 SLI 서비스 수준 표시기 - 서비스/제품의 성능을 측정하는 메트릭을 얻을 수 있습니다. 예를 들어 1 초 미만의 요청 중 99 %를 처리합니다. SLI를 기반으로

당신 수도 설정 서비스 수준 계약 - 당신과 당신이 그들을 그 전달하지하지의 결과와 싶은 것이 SLO (서비스 수준 목표)의 소프트웨어 제공자 간의 계약.

관련 문제