$\require{mediawiki-texvc}$

연합인증

연합인증 가입 기관의 연구자들은 소속기관의 인증정보(ID와 암호)를 이용해 다른 대학, 연구기관, 서비스 공급자의 다양한 온라인 자원과 연구 데이터를 이용할 수 있습니다.

이는 여행자가 자국에서 발행 받은 여권으로 세계 각국을 자유롭게 여행할 수 있는 것과 같습니다.

연합인증으로 이용이 가능한 서비스는 NTIS, DataON, Edison, Kafe, Webinar 등이 있습니다.

한번의 인증절차만으로 연합인증 가입 서비스에 추가 로그인 없이 이용이 가능합니다.

다만, 연합인증을 위해서는 최초 1회만 인증 절차가 필요합니다. (회원이 아닐 경우 회원 가입이 필요합니다.)

연합인증 절차는 다음과 같습니다.

최초이용시에는
ScienceON에 로그인 → 연합인증 서비스 접속 → 로그인 (본인 확인 또는 회원가입) → 서비스 이용

그 이후에는
ScienceON 로그인 → 연합인증 서비스 접속 → 서비스 이용

연합인증을 활용하시면 KISTI가 제공하는 다양한 서비스를 편리하게 이용하실 수 있습니다.

단위테스트를 위한 레거시소프트웨어시스템의 재구성 기법
A Restructuring Technique of Legacy Software Systems for Unit Testing 원문보기

정보처리학회논문지. The KIPS transactions. Part D. Part D, v.15D no.1, 2008년, pp.107 - 112  

문중희 (삼성전자 S) ,  이남용 (숭실대학교 컴퓨터학과)

초록
AI-Helper 아이콘AI-Helper

레거시소프트웨어시스템을 유지 및 보수하는 작업은 소프트웨어 공학 분야에서 중요한 화두이다. 그리고 유지 및 보수 과정에 있어 회귀 테스트는 소프트웨어의 변경에 따른 기능적 동작이 올바른지 확인한다. 그러나 기존의 회귀 테스트는 대부분 시스템 레벨에서 접근이 되었으며 단위테스트 레벨에서는 준비된 테스트 케이스가 없어서 적용이 어려웠다. 본 논문에서는 단위테스트 케이스들을 구현하고 자산화하기 위해서 기존의 레거시소프트웨어시스템을 재구성하는 기법을 제안한다. 그리고 이를 실제 개발 과제의 특정 모듈에 적용하고 그 테스트 커버리지 결과를 분석하였다. 향후 본 논문에서 제시하는 방안을 기반으로 재구성 자동화 기법 및 테스트 케이스 자동화 생성에 대한 연구가 지속된다면 레거시소프트웨어시스템의 유지 및 보수에 큰 발전을 기대할 수 있을 것이다.

Abstract AI-Helper 아이콘AI-Helper

The maintenance of legacy software systems is very important in the field of a software engineering. In the maintenance, a regression test confirms the behavior preserving of the software which has been changed but most of regression tests are done in a system level and rarely done in a unit test le...

주제어

AI 본문요약
AI-Helper 아이콘 AI-Helper

* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.

문제 정의

  • 그러나 ISO 9126[15]에서는 소프트웨어 유지 /보수를 위해서 고려해야하는 주된 사항들 가운데 Testability를 부가적으로 제시한다. 그리고 본 논문에서는 Testability를 향상시키기 위한 소프트웨어 재구성의 단계별 수행 과정 및 기법을 설명하면서 심층적인 연구 내용을 소개한다.
  • 논문에서는 리엔지니어링을 하는 요인들 가운데에는 Testability를 높이고자 하는 목적이 있다고 설명한다. 그리고 이를 위해서 내부적인 경로를 단순화하고 개발 코드 구조의 복잡도를 낮추며 사용자 인터페이스 등을 단순화 하는 방안들을 제시한다.
  • 논문에서는 소프트웨어의 리팩토링 혹은 재구성(Restructuring)의 목적을 소프트웨어 유지 / 보수를 용이하게 하기 위함이라고 설명한다. 그리고 유지 / 보수를 위해서는 확장성(Extensibility), 모듈화 정도(Modularity), 재사용성(Reusability), 복잡도(Complexity) 등의 개선이 필요하며 이를 위해서 수행해야 하는 활동과 사용하는 기법 및 관리해야하는 산출물 등을 설명한다.
  • 이들 방법들을 적용하여 레거시 코드의 Testability를 향상시키고 단위, 통합, 시스템 테스트를 용이하게 할 수 있을 것이다. 본 논문에서는 단위 테스트를 위한 Testability향상 방안을 보다 심층적으로 연구하였고 그 결과를 소개한다.
  • 하지만 레거시 코드(Legacy Code)에서는 모든 모듈이 이미 개발되어 있어 테스트 드라이버와 테스트 스텁을 적용하는 것이 어렵거나 불가능하다. 본 논문에서는 이미 완성되어 사용되고 있는 레거시소프트웨어시스템 (Legacy Software)[5]에 대해서 단위테스트 케이스들을 작성하고 관리하는 방안을 제시하고자 한다. 본 연구에서는 스텁을 테스트를 위해서 기능적인 동작을 제어할 수있는 Mock[7]이라는 용어로 대체하여 사용하고자 한다.
  • 두 번째는 소프트웨어 단위 모듈 레벨에서의 테스트이다. 본 논문에서는 후자의 경우에 대해서 연구를 진행하였다. 단위테스트[3]란 개발단계 중에 개발자 개개인이 직접 만든 모듈의 기능적인 동작을 확인하 기 위해서 개발자 스스로가 테스트 케이스를 작성하고 수행하는 활동을 가리킨다.
  • 이는 아직 단위 테스트 케이스 적용을 위한 소프트웨어 재공학에 대해서는 많은 연구가 진행되지 않았기 때문으로 판단된다. 본 논문에서의 연구는 기존 연구된 내용들을 바탕으로 단위 테스트 케이스 작성을 위한 보다 심층적인 재공학 방안을 제시하고 실제 개발 과제에 이를 적용하였다는데 큰 의의가 있을 것이다.
  • 본 논문에서는 이미 완성되어 사용되고 있는 레거시소프트웨어시스템 (Legacy Software)[5]에 대해서 단위테스트 케이스들을 작성하고 관리하는 방안을 제시하고자 한다. 본 연구에서는 스텁을 테스트를 위해서 기능적인 동작을 제어할 수있는 Mock[7]이라는 용어로 대체하여 사용하고자 한다. 연구는 다음과 같은 순서로 진행이 되었다.
  • 본 절에서는 레거시 코드에 어댑터를 적용하기 전과 이후의 단위테스트 케이스를 비교하고 각각에 대한 condition/decision 테스트 커버리지 결과를 살펴본다. 단위 테스트 케이스는 EEPROM 디바이스 드라이버에서 제공하는 Public함수에 대해서 작성되었다.
  • 그러나 세부적인 방법으로는 논문에서 설명한 사례와 같이 간단한 매크로 함수를 사용할 수도 있을 것이며 이 외의 다른 방법을 사용할 수도 있을 것이다. 이에 대한 많은 사례 연구가 나올 수 있기를 기대해 본다. 그리고 본 논문이 제시하는 내용을 기반으로 차후 재구성의 자동화 방향과 Mock을 비롯한 테스트 케이스의 자동 생성 방안에 대한 연구가 함께 병행될 수 있다면 레거시 소프트웨어를 유지 및 보수하는데 큰 발전을 기대할 수 있을 것이다.
  • 때문에 유지 보수에 매우 중요한 역할을 하는 회귀테스트에 있어서 단위 테스트를 재사용할 수 없는 문제를 야기하게 된다. 이에 본 논문에서는 레거시소프트웨어시스템에 대한 단위테스트 케이스를 만들기 위해서 어떻게 재구성 과정을 수행할 수 있는지 설명하였다. 기존의 레거시소프트웨어시스템의 각각의 단위 모듈들은 이미 구현된 다른 단위 모듈들과 밀접하게 통합되어 있기 때문에 이들을 따로 떼어내지 않고 별도의 Mock 혹은 테스트 스텁을 구성하는 것은 어려운 일이다.

가설 설정

  • 즉, 재구성은 단위 테스팅을 위해서만 개발 코드를 변경해야 할 것이고 순수 개발 코드만을 따로 빌드할 수 있는 환경을 제공해야 할 것이다. 그리고 셋째로는 어댑터를 적용하여 시스템의 기능적 동작에 변화가 있어 서는 안 될 것이다.
본문요약 정보가 도움이 되었나요?

질의응답

핵심어 질문 논문에서 추출한 답변
소프트웨어 유지 보수란 무엇인가? 이와 함께 개발된 소프트웨어를 유지하고 관리하는 방법도 중요한 문제로 대두되고 있다. 소프트웨어 유지 보수[1]란 소프트웨어 시스템이 완성된 이후에 행해지는 모든 활동을 가리키며 소스코드에 변화가 생길 때에는 수행해야 할 기능적인 동작들이 올바르게 작동하는지(semanticpreserving)[2] 항시 확인할 수 있어야 한다. 이에 대한 방안 으로 회귀 테스트[9]를 수행할 수 있을 것이다.
단위테스트 케이스들의 재사용이 중요한 이유는 무엇인가? 이에 대해서는 단위테스트 케이스 작성 및 수행에 따른 비용 등 여러 가지 원인들을 찾을수 있을 것이다. 하지만 소프트웨어 유지 및 보수의 비용이 점점 증가하고 있는 요즘의 상황에서는 단위테스트 케이스들을 재사용하는 것이 점점 중요하고 필요하다. 일반적인 개발 단계에서 단위테스트 케이스를 작성할 때에는 테스트 대상 모듈을 호출하는 테스트 드라이버(Test Driver)[4]와 테스트 대상 모듈이 호출하는 테스트 스텁(Test Stub)[4]을 자유롭게 작성을 할 수가 있다.
회귀 테스트의 두가지 접근 방법은 무엇인가? 회귀 테스트는 두 가지 방법으로 접근할 수 있다. 첫째는 소프트웨어 시스템 레벨에서의 테스트이다. 두 번째는 소프트웨어 단위 모듈 레벨에서의 테스트이다. 본 논문에서는 후자의 경우에 대해서 연구를 진행하였다.
질의응답 정보가 도움이 되었나요?

참고문헌 (15)

  1. Girish Parikh, Independent Consultant, 'Exploring the world of software maintenance: what is software maintenance?,' ACM SIGSOFT Software Engineering Notes, Volume 11, Issue 2(April 1998), Page: 49-52 

  2. David Saff, Michael D. Ernst, M.I.T., 'Test factoring: focusing test suites for the task at hand,' Proceedings of the 27th international conference on Software engineering, Pages: 656 -656 

  3. Wikipedia Dictionary Available at URL: http://en. wikipedia. org/wiki/Unit_test, 2007년 6월 

  4. David Bernstein Available at URL: https://users.cs.jmu.edu/bernstdh/web/common/help/stubs-and-drivers.php, 2007년 5월 

  5. Wikipedia Dictionary Available at URL: http://en.wikipedia.org/wiki/Legacy_software, 2007년 6월 

  6. SF.net Available at URL: http://cunit.sourceforge.net/, 2007년 6월 

  7. Wikipedia Dictionary Available at URL: http://en.wikipedia.org/wiki/Mock_Object, 2007년 6월 

  8. Tom Mens, 'A Survey of Software Refactoring,' IEEE Transactions On Software Engineering, month 2004 

  9. Wikipedia Dictionary Available at URL: http://en.wikipedia. org/wiki/Regression_test, 2007년 6월 

  10. Bullseye Testing Technology Available at URL: http//www.bullseye.com, 2007년 6월 

  11. Wikipedia Dictionary Available at URL: http://en.wikipedia. org/wiki/Boundary_value_analysis, 2007년 6월 

  12. Yong Rae Kwon, Department of Computer Science Korea Advanced Institute of Science and Technology, 'Test Case Evaluation.' 

  13. Bret Pettichord, 'Design for Testability,' Pacific Northwest Software Quality Conference, Portland, Oregon, October, 2002 

  14. Harry M. Sneed, 'Reengineering for Testability,' Workshop on Software Reengineering(WSR), Bad Honnef, May, 2006 

  15. Wikipedia Dictionary Available at URL: http://en.wikipedia. org/wiki/ISO_9126, 2007년 9월 

저자의 다른 논문 :

관련 콘텐츠

오픈액세스(OA) 유형

BRONZE

출판사/학술단체 등이 한시적으로 특별한 프로모션 또는 일정기간 경과 후 접근을 허용하여, 출판사/학술단체 등의 사이트에서 이용 가능한 논문

이 논문과 함께 이용한 콘텐츠

섹션별 컨텐츠 바로가기

AI-Helper ※ AI-Helper는 오픈소스 모델을 사용합니다.

AI-Helper 아이콘
AI-Helper
안녕하세요, AI-Helper입니다. 좌측 "선택된 텍스트"에서 텍스트를 선택하여 요약, 번역, 용어설명을 실행하세요.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.

선택된 텍스트

맨위로