본문 바로가기

소프트웨어공학론26

Black box testing Black box, White box의 기준 : 코드의 내부를 아느냐 모르느냐 -Black box : 박스 안의 내용을 모른다, 코드가 어떻게 구현되는지 모르는 상황에서 테스트, 코드는 모르지만 명세는 가지고 있다, 소프트웨어의 명세에 기반하여 테스트하는 방법, 명세에 기술된 동작들은 다 커버하도록 테스트해야 한다, 코드는 모르고 명세만 보고 테스트하기 때문에 명세에 드러나있지 않은 구현상세 내용으로 인한 버그가 있을 때 찾지 못한다. = 명세와 관련한 오류는 찾을 수 있지만 명세와 관련 없는 오류는 찾을 수 없다. -White box : 명세는 없지만 코드를 들여다 볼 수 있다, 코드에 기반하여 테스트 케이스를 설계하여 테스트. 코드에 구현된 것은 다 커버가 되도록 테스트해야 한다, 코드를 가지고 있음.. 2023. 6. 10.
Testing -테스팅의 정의 : 프로그램을 실행하고 주어진 입력값에 대해 원하는 방식으로 프로그램이 동작하는지, 원하는 결과를 출력하는지를 확인하는 것 -테스팅 하는 이유 : 원하는대로 동작하지 않을 가능성(software bug)이 있기 때문 -> 큰 재산상의 피해, 인명피해 -다른 입증 접근법들(Verification approaches) 1) Testing 투자비용 대비 버그를 잘 찾아낸다. 효과적. 2) Static verification : 모든 가능한 입력, 실행경로들을 전부 따져서 확인하는 방법 *static = 프로그램을 실행하지 않고. 3) Inspections (a.k.a. reviews or walkthroughs) : 사람들이 모여서 코드를 한줄한줄 다같이 읽어 보는 것 4) Formal pro.. 2023. 5. 28.
Code quality improvement -코드의 퀄리티를 높이기 위한 3가지 방법 1. Code Inspection : Static analysis의 한 방법. 코드를 들여다 보는 것. 구문의 패턴을 가지고 점검. (ex. if문이 너무 많다.) 코드를 실행해보지는 않았기 때문에 static analysis의 일종. 2. Static analysis : 프로그램을 실행하지 않고 소스코드만 훑어보면서 품질의 문제점 분석. 구문의 의미를 기반으로 코드를 점검 장점 : 소스코드만 있어도 분석할 수 있다. 단점 : 실행할 때 일어나는 모든 경우를 고려하려면 너무 많은 경우가 있어서 어려움이 있다. 3. Dynamic analysis : 프로그램을 실행하면서 문제점을 찾아보는 것 장점 : 구체적인 경로에 따라 분석할 수 있다. 단점 : 실행하는 방법이.. 2023. 5. 27.
Code smell 1. Refactoring Risk 1) 이전에 없었던 오류가 새로 생길 수 있다. 2) 너무 자주 사용해서는 안된다. 3) 제품화되어 배포할 시스템에 대해서는 할지 말지 신중하게 결정 2. Refactoring 비용의 원인 1) 개발자의 손을 거치기 때문에 비용이 든다. 코드 자체. 2) Refactoring의 이전, 이후를 확인하기 위해 테스트 케이스를 만들어야 한다. 그리고 테스트 케이스도 또한 유지보수를 해야 한다. 3) 문서 유지보수 3. Refactoring 하지 말아야 할 경우 1) 코드가 깨졌을 때(코드에 오류가 있을 때) : 코드가 동작하지 않으면 오류 수정에 집중해야 하지 오류가 있는 코드를 Refactoring해서 구조를 향상시키는 것은 좋지 않다. 2) 마감이 다가올 때 3) Ref.. 2023. 5. 26.
Refactoring - Catalogue -Refactoring 목록 Collapse hierarchy Consolidate conditionals Decompose conditionals Extract class Inline class Extract method 1. Collapse hierarchy : 계층을 없애라 상속관계에 있고 따로 있는 두 클래스 Employee, Salesman -> Employee 하나로 merge 2. Consolidate conditionals : 같은 결과를 리턴하는 조건들이 여러개 있으면 하나로 합치고 함수로 뽑아내서 호출 아무런 배경정보가 없는 사람도 코드를 이해하도록 작성 3. Decompose conditionals : 조건이 복잡하면 분해, 혹은 함수로 묶어냄 날짜가 여름 시작하는 이전이거나 여름 끝.. 2023. 5. 25.
Refactoring - overview Refactoring - 원래 동작을 유지시키면서(behavior-preserving) 변형 : 중복을 제거, 복잡한 로직 단순화 불명확한 코드 명확화 효과 1) 새로운 코드를 추가하기 쉬워진다. 2) 이미 존재한 코드의 설계를 향상시킨다. 3) 코드에 대한 이해도가 더 높아진다. 배경 : Agile development 유행해서 점차 관심이 높아졌다. 원래 동작을 유지시키는지(behavior-preserving) 기준 : 단위 테스트하는 테스트 코드들을 미리 준비 해놓고 refactoring 이전 버전을 준비, refactoring 이후 버전을 준비하고 똑같은 테스트 코드를 준비했을 때 전부 통과하면 원래 동작을 유지시켰다 라고 한다. = refactoring 이전과 이후의 코드를 테스트해서 그 결과가.. 2023. 5. 24.