티스토리 툴바


Software Testing2010/05/31 15:49
관련 자료들을 찾아보다가 세미나 발표하시는 교수님 밑에서 직접 수업을 받는 분의 블로그를 발견했다.
저서를 소개했는데 목차를 보니 꼭 봐야겠다는 생각이 들었다.
관련 링크를 남겨본다 Introduction to Software Testing
Posted by scherzo
Ha Eun's Daily Life2010/03/08 15:41
하은아 누나 되느라 고생했다~~~
처음으로 엄마랑 떨어져서 잠도자고, 혼자 하루종일 노느라고....
그래도 집에 온 엄마랑 아기한테 심술 안부리고 애기 이뻐해줘서 참 고맙다.
하은이는 좋은 누나가 될거야~~~

Posted by scherzo
Daily Life2010/03/08 15:38
우리 둘째가 태어난날...아깝게 내 생일과 맞추지는 못했다.
출산 직전 분만실 밖에서 기다리는데 하은이때와는 또다른 느낌
이제 곧 두 아이의 아빠가 되는데 마음가짐을 어떻게 해야 할지 갈팡질팡...
좀 엄숙하게 가져볼까??? 아니 좀 성스럽게 마음가짐을 가져 볼까??? 아니면 편하게 기쁘게 맞이할까???
막상 태어나서 두 손에 아이를 안고보니 이제 뭐 그냥 눈앞에 있는 아이가 신기할 뿐이다.
엄마도 힘들고, 아기도 힘들고...옆에서 지켜보던 나도 힘들고...집에서 아빠,엄마 없이 혼자 자느라 하은이도 고생하고...
모두 힘들게 고생해서 새생명이 태어났다.
그만큼 값진 인생을 살아라~~별이야
Posted by scherzo
Programming2010/01/22 14:05
중복된 심볼 오류...
동일한 심볼을 중복해서 정의할 경우 프로그래밍 에러가 발생한다.
같은 이름으로 여러 개의 함수를 외부에 정의하면 안 된다. 이 경우 링커는 첫 번째 심볼만을 인정하기 때문에 의도하지 않은
결과가 발생할 수 있다. 함수의 이름을 바꾸던가 정적 함수를 사용해야 한다.

ld: 0711-224 WARNING: Duplicate symbol:

nm으로 보면 중복된 오브젝트를 확인해볼 수 있다.
$ nm -g file1.o

-bhalt:5 옵션을 사용해서 링커에게 경고 메세지를 보여주지 않도록 할 수 있다.
이 옵션은 지정된 숫자보다 적은 에러 메세지가 발생하면 이 메세지를 보여주지 않도록 한다.
Posted by scherzo
Operating System2010/01/20 18:29
$ sudo apt-get install xorg-dev로 간단히 설치하자~~
Posted by scherzo
Database2010/01/19 13:55
설치 끝내고 master device 생성 도중 다음과 같은 오류가 발생 할 경우가 있다.

Building master device
/home/sybase/ASE-15_0/bin/dataserver: error while loading shared libraries:
libstdc++.so.5: cannot open shared object file: No such file or directory
Task failed

다음 명령어로 설치해 준다
$ sudo apt-get install libstdc++5
Posted by scherzo
Computing2010/01/19 11:45
$ sudo apt-get install gcc-3.4
$ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.4

하면 끝~
Posted by scherzo
TAG 3.4, GCC, 우분투
Database2010/01/18 11:07

Pre-Instalation Tasks

1. Create oracle User Account

Login as root and create te user oracle which belongs to dba group.
su -
# groupadd dba
# useradd -g dba oracle

2. Setting System parameters
Edit the /etc/sysctl.conf and add following lines:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 262144
Note: You need reboot system or execute "sysctl -p" command to apply above settings.

Edit the /etc/pam.d/login file and add following line:
session required /lib/security/pam_limits.so

Edit the /etc/security/limits.conf file and add following lines:
oracle    soft  nproc  2047
oracle    hard  nproc  16384
oracle    soft  nofile  1024
oracle    hard  nofile  65536

This step is important for Fedora Core 4 only:
Edit /etc/selinux/config and change value of SELINUX variable to "disabled".
SELINUX=disabled
Note: You need reboot computer to apply above settings.

3. Creating oracle directories
# mkdir /opt/oracle
# mkdir /opt/oracle/10gR2
# chown -R oracle:dba /opt/oracle

4. Setting Oracle Enviroment
Edit the /home/oracle/.bash_profile file and add following lines:
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/10gR2
ORACLE_SID=MY_ORACLE
LD_LIBRARY_PATH=$ORACLE_HOME/lib
PATH=$PATH:$ORACLE_HOME/bin

export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH PATH

Save the .bash_profile and execute following commands for load new enviroment:
cd /home/oracle
. .bash_profile

Download & Install

1. Download and install required .rpm packages

Some additional packages are required for succesful instalation of Oracle software. To check wheter required packages are installed on your operating system use following command:
rpm -q binutils gcc glibc glibc-headers glibc-kernheaders glibc-devel compat-libstdc++ cpp compat-gcc make compat-db compat-gcc-c++ compat-libstdc++ compat-libstdc++-devel openmotif openmotif21 setarch pdksh libaio libaio-devel
Note: Since FC4 pdksh package was renamed to ksh.

If some package is not installed then install it from installation media or download it from following locations:
Fedora Core 2
Fedora Core 3
Fedora Core 4
Fedora Core 5
Fedora Core 6
Fedora Core 7


Install the required packages using the rpm command:
# rpm -ivh binutils-2.15.94.0.2.2-2.i386.rpm \
compat-libgcc-296-2.96-132.fc4.i386.rpm \
compat-libstdc++-296-2.96-132.fc4.i386.rpm \
compat-libstdc++-33-3.2.3-47.fc4.i386.rpm \
cpp-4.0.0-8.i386.rpm \
gcc-4.0.0-8.i386.rpm \
gcc-c++-4.0.0-8.i386.rpm \
glibc-2.3.5-10.i386.rpm \
glibc-common-2.3.5-10.i386.rpm \
glibc-devel-2.3.5-10.i386.rpm \
glibc-headers-2.3.5-10.i386.rpm \
glibc-kernheaders-2.4-9.1.94.i386.rpm \
ksh-20050202-1.i386.rpm \
libaio-0.3.104-2.i386.rpm \
libaio-devel-0.3.104-2.i386.rpm \
libgcc-4.0.0-8.i386.rpm \
libstdc++-4.0.0-8.i386.rpm \
libstdc++-devel-4.0.0-8.i386.rpm \
make-3.80-7.i386.rpm \
openmotif-2.2.3-10.i386.rpm \
openmotif21-2.1.30-14.i386.rpm \
setarch-1.7-3.i386.rpm \
xorg-x11-deprecated-libs-6.8.2-31.i386.rpm


2. Download the Oracle 10g release 2 (10.2.0.1.0) software from Oracle website.
Extract the files using following command:
unzip 10201_database_linux32.zip

3. Start the Oracle software installation process.

Now the system is prepared for Oracle software installation. To start the installation process execute the following commands:
cd db/Disk1/
./runInstaller

Post-Instalation Tasks

1. Use this step when you will be not running RAC or ASM instance.
su -
# /etc/init.d/init.cssd disable
# /etc/init.d/init.cssd stop


2. (Optional) You may consider to use rlwrap for comfortable work with sqlplus. RPM package for Fedora Core (x86) distribution you can download here.
su -
# rpm -ivh rlwrap-0.24.fedora.i386.rpm
# exit
echo "alias sqlplus='rlwrap sqlplus'" >> /home/oracle/.bash_profile
. /home/oracle/.bash_profile


Common Installation Errors

DISPLAY not set. Please set the DISPLAY and try again.
Solution: Execute "export DISPLAY=:0.0" when you perform installtion on local machine or "export DISPLAY=:0.0 when you perform installation on remote machine connected over SSH". Don't forget to execute "xhost +" command on client machine.

Exception java.lang.UnsatisfiedLinkError: /tmp/OraInstall2005-07-07_09-40-45AM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory occurred.. java.lang.UnsatisfiedLinkError: /tmp/OraInstall2005-07-07_09-40-45AM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory
Solution: Install the xorg-x11-deprecated-libs RPM package (<=FC4) or libXp package (FC5 and later).

... cannot restore segment prot after reloc: Permission denied
Solution 1: Modify /etc/selinux/config and change value of SELINUX to "disabled" and reboot computer.
Solution 2: Download selinux-policy-targeted-1.25.2-4.noarch.rpm from FC4 location and upgrade existing package.

error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
Solution: Install libaio and libaio-devel packages. If packages already installed and error still occurs try execute "ldconfig" as root.

sed: -e expression #1, char 7: unterminated `s' command error in $ORACLE_HOME/install/make.log
Solution: There is probably bug in bash (FC5 only). Download and install bash package from FC4. I have prepared this p ackage (builded from FC4 src.rpm) for FC5 - Download.
Install it using "rpm -ivh bash-3.0-31.i386.rpm --force".

Check complete. The overall result of this check is: Failed <<<<
Solution: Install missing package or set check system parameters (See reason of failure).
Posted by scherzo
Software Testing2009/10/06 10:45
  • 소프트웨어 테스팅 - 결함을 발견하기 위해 수행되는 모든 행위
  • 소프트웨어 테스팅의 역사
    1. ~1956: Debugging oriented period  - SW완성 후에 버그를 잡는 수준
    2. ~1978: Demonstration                   - 잘 동작하는지만 확인   
    3. ~1982: Destruction                       -  전문 테스터에 의해서 SW를 분해하고 파괴하면서 테스팅.  개발자가 직접 테스팅 하는 경우에는 제대로 이루어 지지 않음. the art of software testing
    4. ~1987: Evaluation                        - 결함을 정량적으로 측정하고 분석하기 시작.
    5. ~현재: Prevention                        - Static testing시작.
  • TMMI 레벨5와 테스팅의 역사 단계 일치
  • incident와 defect의 차이점
    • 처음으로 테스터가 SW의 이상점을 발견 - incident상태
    • incident를 리뷰를 통해서 확실한 SW의 오류로 판단 - defect로 확정
  • Risk와  failure의 차이
    • failure - defect의 결과, SW의 오류로 인해서 야기되는 장애 상황
    • risk -  failure로 인해서 발생되는 영향(비지니스 측면), failure의 발생 확률 * impact
  • test case와 test suite, test procedure의 차이점
    • test case : 각각의 테스트 모듈
    • test suite : test case를 관계별로 묶어놓은 것
    • test procedure : test case와 test suite를 테스팅 시나리오에 맞게 동작하도록 만들어 놓은 스크립트
  • Software 품질 특성
    1. 기능성
    2. 효율성 - 성능 테스트
    3. 사용성 - 유저가 얼마나 쉽게 사용할 수 있는가(대부분의 사용자는 교육 받지 않은 보통 사람이다)
    4. 신뢰성
    5. 이식성
    6. 유지보수성
    7. 재사용성
  • 테스팅의 특성
    • 완벽한 테스팅은 불가능 - SW가 동작할 수 있는 조건(HW환경, 입력값) 등이 무한함
    • 현실적 목적 - 리스크가 높은 부분의 defect를 발견, 리스크의 최소화
  • 살충제 패러독스(pesticide paradox) - 한번 fix된 버그에 대한 테스트 케이스는 무의미함, 새로운 테스트 케이스의 추가가 계속 되어야 한다.
  • 인스펙션과 워크스루의 차이점
    • inspection - agenda를 제공. 문서 리뷰를 통해서 결함 발견
    • walkthrough - 실제 시나리오를 가지고 원하는 데이터를 입력시키면서 테스팅
  • 효과적(effective), 효율적(efficient) 테스팅
    • 효과적 - 계획되거나 원했던 테스트 결과 산출, 최대한 많은 결함 발견이 목적. 방법론, 기법등을 사용
    • 효율적 - 생산성, 가용 시간과, 인력 내에서 얼마나 많은 결함을 발견할 수 있는지. 자동화도구, 툴등 사용
  • 테스트 조직
    • 개발 조직내부에 테스트 조직이 같이 있는 경우 - 같은 조직내에서 서로 감싸주려는 경향이 있음, 결함을 있는 그대로 드러내기를 꺼려함. 커뮤니케이션이 원활함, 테스팅 하려는 제품에 대해 잘 알수 있음
    • 개발 관리자와 테스팅 관리자가 분리되어 있는 경우 - 테스팅 하려는 제품에 대해서 객관적으로 검증할 수 있음. 개발 조직과의 긴밀한 커뮤니케이션이 필요함. 테스팅 하려는 제품에 대한 정확한 이해가 필요
  • Early testing
    • 요구사항 문서 리뷰: 요구사항의 모호성 검출, defect 예방, testability 측정(테스트 할 수 있는 요구사항인가?)
  • test harness: 테스팅 보조 도구 ex) test driver(전체 시스템의 재현), test stub(개별 모듈의 재현)
저작자 표시 비영리 변경 금지
Posted by scherzo
Software Testing2009/09/07 00:29
익스트림 프로그래밍의 저자로 잘 알려진 켄트벡이 내한 했습니다. 
9월 4일 세미나가 예정되어 있었는데 잠깐 하는 사이에 등록 마감되어 버렸습니다. 대기자로 올라가긴 했지만
가능성이 희박했는데 다행히 9월 2일에도 한번 더 세미나를 개최한다는 공지가 떴고 바로 등록했습니다.
원래 300명 등록을 받았고 추가로 150명을 받았는데 세미나 당일날 가보니 자리가 꽉 차있었습니다. 추가 등록도 마감된듯 합니다.

 애자일 블로그로 잘 알려진 김창준씨가 켄트벡을 소개하면서 세미나는 시작했습니다.
 익스트림 프로그래밍 2판을 번역하면서 느낀점 위주로 설명을 하더군요.
  • 반대로 생각하라 - 언뜻 보기에 엉뚱하거나 엉터리 같이 보이는 생각들도 다시한번 생각해 보자.
  • PATTERN -  "건물을 만들때 그 건물에서 살게 될 사람들이 전혀 참여를 안하는 것이 가장 충격적이다." Timeless way of Building by Chris  Alexander. 역사 적으로 주거민이 만족감을 가졌던 건축물들을 가지고 패턴을 만들어서 건물을 만들때 주거민을 참여 시킴(패턴 중에서 선택하게 함)
  • 개발자 이전에 우리는 모두 인간이

이번 세미나의 주제는 Responsive Design 입니다. 켄트벡의 그간의 연구 성과를 최초로 발표하는 자리라고 합니다.
동시 통역사 두분이 통역을 했는데 두 분 스타일이 좀 다르더군요. 한분이 좀 더 자연스럽게 잘 했던것 같습니다. 저는 통역을 듣다가 안듣다가 했는데 어떤 부분은 통역하시는 분이 너무 말을 빨리해서 통역보다 직접 듣는 것이 더 잘 이해가 되기도 했습니다. 다음은 세미나를 들으면서 이것저것 들리는 대로 필기한 것입니다. 잘못 이해한 것도 있을 수 있습니다 :)

  • SW 디자인은 스키를 배우는 것과 비슷 - 눈과 계속 맞닿으면서 눈과 교감하면서 배운다. SW디자인도 계속적으로 needs와 교감하면서 responsive하게 점점 바뀌어(진화)간다.
  • What makes people to think about SW design now?(When everyhing is changing at the same time)
    • Scale - How can I deal with terabytes of data? by SW design. How many devices? how many sources of information. Every second billions of information updated.
    • Capital efficiency - money problem.
    • Cloud ??
    • Re-Client - 20 years ago customers agreed to use poor user interface to connect to Server. But now, people don't agree to use poor(agly) interface
    • End of free Moore's law - HW의 발달만으로 사용자의 요구를 만족시키는 SW를 개발하기 어려워 졌다.
  • Healthy SW와 responsive design의 관계? SW가 외부 스트레스에 얼마나 responsive하게 반응 하도록 디자인 할것인가

         It's not a

    • configuration
    • testing
    • reliability
    • build time
    • deployment

                                 problem, it's a design problem

  • 모든 문제를 디자인 문제로 보는것이 옳다 라는 가정 하에서 연구를 진행하고 있다. -> 경영진이나 고객의 인식 변화가 필요하다(지금 이 시점에서 아직도 디자인을 하고 있냐??? 라고 생각할 수 있음)

 

  • Creative in SW design...SW디자인에 완전히 전념 했는가 하는 문제. 결과의 문제가 아님

 

  • 더 이상 제거할 것이 없을 때 까지 제거하라 - Good Design

 

  • Steady Flow of Features - 시간이 지나면서 점진적으로 개선된 SW를 릴리즈 할 수 있을 것인가.

 

  • 요구사항 변화에 따른 연속적인 코드 수정  -> 디자인 문제로 한걸음 물러서서 생각해 봄

 

  • Goal of Designing SW - 추가적인 기능을 쉽고 간단명료하게 추가하는것

 

  • 4 phase of control of Plane
    1. Taxi : needs확인, 직접 물어봄. simple, best:전혀 sw가 없는 상태
    2. take off: market확인, 실제 customer가 있는지 확인, 실제 sw를 가지고 수익을 내야함. 빠른 기능의 추가(시장의 요구에 반응)
    3. claim: looking for scale, 새로운 기능 추가 중지
    4. cruise : 지속적인 수익 추구, 새로운 기능 추가, 비용 절감을 위한 design, twitter가 현재 이런 상태

 

  • needs: 1000   market: 500  scale: 200   profile: 20

 

  • 수익을 올릴 확률은 지극히 낮음

 

  •  Challenges
    • Human: fear that I don't express
    • Social: good design is from team work, 기술적으로는 떨어지나 더 많은 사람이 이해하고 쉽게 사용할 수 있는 것이 좋은 디자인이다. 사회적 process
    • Sensitivity: 작은 변화에 대한 민감성
    • succession: 단순하게 디자인해라. 나중에 복잡한 로직을 추가할 수 있도록.
    • Uncertainty: 앞으로 어떤 방향으로 SW산업이 발전할지 아무도 모름
    • feedback: 어떤 것이 best way인지 모름. 빨리 design하고 feedback을 받음
    • ambiguity: 애매모호함을 즐겨라. SW디자인에는 수많은 옵션이 존재한다. 모든 것을 시도해보라.

 

  • Design is Beneficially Relating Elements: 디자인은 서로(양방향, 단방향 둘 다 포함) 이익을 주는 관계로 구성되어 있다.

 

  • Safe steps: 작은 단계로 나누어서 안전하게 함, 큰 단계를 작은 단계들로 나눔

 

  • High cohesion, low coupling

 

  • Strategies: 디자인을 할때 서로 의견이 다를 때 최선의 결정을 하기 위해 필요
    • Leap: 도약, 작은 변화는 일단 적용해 본다.
    • Parrallel: 새로운 시스템으로 migration하고자 할때 새로운 시스템과  예전 시스템을 동시에 운영해 본다.
    • Stepping Stone: 새로운 디자인을 적용해 볼 수 있는 작은 platform을 만들어 본다.
    • Simplification: 디자인의 부분만 구현하고, 단계적으로 복잡성을 추가해 나가라

 

  • Refactoring: Safe step에서는 시스템의 구조를 바꾸거나 행위를 바꾸는데 한번에 하나씩 한다. 시스템의 구조와 행위를 동시에 변경하는 작업은 하지 않는다 -> causing more defects

 

  • bi-directional: in-line methods <-> extract methods. we can go both way

 

  • isolate changes: 변화를 주려고 하는 부분을 나머지 전체 시스템에서 분리해 내라. 예를 들어서 한 프로시져의 부분을 변경하려고 할때 그 부분을 따로 독립적인 프로시져로 분리해 내서 변경 작업을 하라. 그리고 변경 사항이 요구 사항대로 동작하면 다시 원래의 프로시져속으로 합쳐라.

 

  • Summary
    • Design activity
    • 미학적인 부분의 중요성
    • simple rules, matrix
    • 좋은 SW디자인이나 나쁜 SW디자인이나 모두에게서 배울 것은 있다.
    • 협력 할때 좋은 디자인이 나올 수 있다.
    • 좋은 생각이 떠오르지 않을 때는 컴퓨터를 꺼라!!!
Posted by scherzo