여러분들은 만든 프로그램을 어떻게 테스트 하시나요 ?

dingkyu의 이미지

안녕하세요.
이제 막 신입으로 회사에서 프로그래밍일을 하고있는데
막막한 부분이 있어서 질문드립니다.

뭐 아직 프로그래밍을 한다기 보다는 코더입니다만,
프로그램을 상사의 지시에 의해 작성하고 컴파일이 되면,
테스트를 해야 할텐데요.

그 테스트를 어떤 점을 주의해서 해야 할지 아주 막막합니다.
전부 다 해서 한 700라인정도의 간단한 프로그램을 작성했고
거기에 40가지의 테스트 항목을 나름 정리해서 보고했더니
너무 뻔한 테스트 아니냐는 대답을 받았습니다.

확실히 다 했습니다 하고 보고하고 올리면 10분도 채 안되서
에러발견했으니까 다시 고쳐오라고 합니다.
다시 고치는건 문제가 아닌데
도데체 어떤식으로 테스트 항목을 정해야 보다 견고하게
코딩을 하고 또 이런 테스트를 했으므로 문제없습니다 하고
예기할 수 있을지 아주 고민입니다.

이 글을 보시는 여러분들은 스스로 만든 프로그램을 테스트할때
어떤식으로 하시는지요 ?

M.W.Park의 이미지

참고 서적 몇가지
(주로 자바내지는 파이썬으로 설명하고 있지만, 다른 언어에 적용하는 것도 크게 어렵진 않습니다)

테스트 주도 개발
실용주의 프로그래머
리팩토링

테스트 항목을 정하기 보다는 그 항목을 xUnit 테스트 케이스로 만들어 두는 것이 정신건강에 도움이 될 것입니다.
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

kane의 이미지

테스트 항목을 만드는 것도 쉬운 일이 아니지요.

뭉뚱그려서 말하자면 "최소, 중간, 최대, 특이" 정도가 기준이 될 수 있을 것 같습니다. 예를 들어 자연수를 입력받는다고 가정하면, INT_MIN, -1, 0, 1, INT_MAX를 입력을 삼아 테스트할 수 있을테고요. 포인터를 받을 때는 NULL 등을 넣어볼 수도 있고, 문자열을 받을 때는 긴 문자열이나 이상한 문자열("@#a;o8ejf2o3") 같은 걸 넣어볼 수도 있겠죠. 경계 부근(예. 위의 0 근처)에서는 좀 더 자세한 테스트를 해도 좋고요. 이런 정도의 기준으로 마음껏 상상의 나래를 펼쳐서 테스트 케이스를 만드시면 되겠죠. ^^;

M.W.Park님 말씀처럼 가능한 테스트를 자동화 하시고요. 새로 발견되는 에러들을 테스트 케이스에 추가하세요. 하지만 확실히 검사한다고 테스트 케이스를 너무 늘리지는 마시고요. 비효율적이니까요.

ljs0766의 이미지

우선 작성된 모듈별로 간단한 테스트 케이스 작성해서 검증하고요..
모듈들이 모여서 이루어지는 기능 테스트는 입력될 수 있는 값들을
상황별로 예측을 해서 미리 정해두고 입력값을 넣어보며 검증합니다.
최종적으로 다시 테스팅을 할때는 우선 잘되는지...보고
그 이후에는 각종 장애 상황을 설정해서 어떤식으로 동작하는가를 지켜보는 방식으로 하죠.
저도 신입사원이라 ^^;;;
이정도 수준에서 하는데 아직까지는; 문제가 없었네요

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.