2016년 3월 11일 금요일

(E, K) Robot Framework, RIDE 1 - Introduction(소개)

Robot Framework is a generic test automation framework for acceptance testing and acceptance test-driven development (ATDD).
Robot Framework는 인수 테스트와 인수 테스트 기반 개발의 테스트 자동화를 위한 프레임워크이다.

It has easy-to-use tabular test data syntax and it utilizes the keyword-driven testing approach. 
다루기 쉬운 표 형태의 문법을 사용하며, 키워드 기반의 테스트를 가능하도록 한다.

Its testing capabilities can be extended by test libraries implemented either with Python or Java, and users can create new higher-level keywords from existing ones using the same syntax that is used for creating test cases.
파이썬이나 자바로 구현된 테스트 라이브러리 를 사용하며, 테스트 케이스를 만들 때 사용한 문법과 동일한 방법으로 추상성을 높인 키워드(사람이 이해하기 쉬운) 를 만들어 사용할 수도 있다.

Robot Framework project is hosted on GitHub where you can find further documentation, source code, and issue tracker. Downloads are hosted at PyPI. The framework has a rich ecosystem around it consisting of various generic test libraries and tools that are developed as separate projects.
Robot Framework 프로젝트는 GitHub에 위치하고 있으며, GitHub 에서 관련 문서, 소스 코드, 이슈 트래커들을 찾아볼 수 있다. 다운로드는 PyPI(Python Package Index, Python Package들을 다운받을 수 있게 모아놓은 싸이트)에서 가능하다. 이 Robot Framework는 풍부한 라이브러리들과 툴들이 여러 프로젝트들에서 개발되고 있다.

Robot Framework is operating system and application independent. The core framework is implemented using Python and runs also on Jython (JVM) and IronPython (.NET).
Robot Framework는 운영체제, 어플리케이션에 독립적이다. 주요 Framework(뼈대)는 파이썬으로 구현되었으며 Jython (JVM) 이나 IronPython (.NET) 을 사용해서도 실행될 수 있다.

RIDE is a test data editor for Robot Framework test data.
RIDE는 Robot Framework 를 위한 테스트 데이터 에디터 이다.(Robot framework IDE 정도인듯)

Robot Framework itself is open source software released under Apache License 2.0, and most of the libraries and tools in the ecosystem are also open source. The development of the core framework is supported by Nokia Networks.
Robot Framework 는 오픈 소스이며 Apache License 2.0, 라이센스를 따른다. 대부분의 라이브러리와 툴 들이 역시 오픈 소스이다. 중요 뼈대는 Nokia Networks. 에서 진행하였다.



Robot Framework는 크게 3가지 특징이 있는데
Clear, Easy, Modular 이다.

Clear.


Robot Framework has a modular architecture that can be extended with bundled and self-made test libraries.
Test data is defined in files using the syntax shown in the examples below. A file containing test cases creates a test suite and placing these files into directories creates a nested structure of test suites.
Robot Framework는 모듈러 구조이기 때문에 사용자 작성 테스트 라이브러리를 만들 수가 있다.
테스트 데이터는 아래 example 문법을 따라서 작성된 파일 안에 정의되어 있다. 테스트 케이스가 작성된 파일에는  폴더 구조로서 내부적으로 반복되는(트리 구조 같이) 테스트 모음을 구성할 수 있게 된다.

Example
*** Settings ***
Documentation     A test suite with a single test for valid login.
...
...               This test has a workflow that is created using keywords in
...               the imported resource file.
Resource          resource.txt

*** Test Cases ***
Valid Login
    Open Browser To Login Page
    Input Username    demo
    Input Password    mode
    Submit Credentials
    Welcome Page Should Be Open
    [Teardown]    Close Browser
                    
Let's start with a real-life example from our web demo project. Here we have a test suite with one test case which tests that login is valid. As you can see, test data syntax is based on keywords.
Keywords are composable, meaning you can define new keywords that use pre-existing keywords. This way, you can abstract details of testing to something that makes immediate sense; for example, we don't need to know what exactly the step Submit Credentials actually does, unless we want to. Test cases are therefore clear and readable, with just the right level of abstraction to convey the intent of the test, rather than the nuts and bolts.
See next example for what you're going to get once this example is run!
위의 실제 삶과 관련된 예제(web demo project에 쓰인)를 가지고 생각해 보자. 여기 테스트 모음이 있고 거기에는 하나의 테스트 케이스가 있다. 보이느느 바와 같이 문법은 Keyword를  기본으로 되어있다. 
Keyword 들은 기존에 존재하던 Keyword 들을 사용한 새로운 조합으로 새롭게 만들어낼 수도 있다. 이런 방법으로, 추상화(사람의 언어같이 알아보기 쉽도록) 할 수 있다. 예를 들어, SUBMIT CREDENTALS(자격 증명을 제출한다) 라는 단어가 실제 어떠한 일을 하는지는 알 필요가 없다.  그래서 테스트 케이스들은 의도에 알맞게 추상화가 되었다면, 알아듣기 쉽고, 읽어 이해하기 쉽다.


Easy.


When test execution is started, the framework first parses the test data. It then utilizes keywords provided by the test libraries to interact with the system under test. Libraries can communicate with the system either directly or using other test tools as drivers.

Test execution is started from the command line. As a result you get report and log in HTML format as well as an XML output. These provide extensive look into what your system does.
테스트가 시작되면, framework는 테스트 데이터를 먼저 분석한다. 그리고 키워드 들이 테스트 라이브러리를 바탕으로 실행될 수 있도록 한다. 라이브러리들은 시스템과 직접 혹은 테스트 툴을 통해서 사용될 수가 있다. 
테스트 실행은 명령 라인을 통해서 시작된다. 테스트의 결과로 테스트 리포트와 로그가 HTML 포맷과 XML 포맷으로 얻어진다.  이 것들은 시스템이 어떻게 동작하는지를 큰 틀에서 볼 수 있도록 한다.


Modular.


Robot Framework architecture

위 형태와 같이 모듈화가 되어있다.


History

The basic ideas for the Robot Framework were shaped in the Pekka Klärck's masters thesis[2] in 2005. The first version was developed at Nokia Siemens Networks the same year. Version 2.0 was released as open source software June 24, 2008 and version 2.8.4 was released February 7, 2014.[3]
The framework is written using the Python programming language and has an active community of contributors. It is released under Apache License 2.0 and can be downloaded from robotframework.org
Robot Framework는 가장 기본적인 아이디어는 2005년 Pekka Klärck[2]의 석사 논문에서 만들어 졌다. Nokia Siemens Networks에서는 첫번째 결과물을 같은 년도에 만들어 내었다. 2.0 버전은 오픈소스로 2008년 7월 24일 릴리스 되었고 2.8.4 버전은 2014년 2월 7일에 릴리스 되었다. Framework는 파이썬 언어(열정적인 컨트리뷰터가 많은)로 제작되었다. Apache License 2.0 라이센스이며 다운로드는 robotframework.org 에서 받을 수 있다.




참조

2016년 3월 10일 목요일

(K)디지털 통신의 2차 분류(동기-비동기, synchronous-asynchronous)

동기와 비동기에 대한 이해가 쉽지가 않아서 웹을 돌아다니다가 좋은 글을 만나서 기록해 둡니다.
가장 좋은건 비슷한 질문과 그에 대한 답변을 발견하는 것

---


질문
    동기와 비동기 통신은 어떻게 동작하는 것인가요?

답변
    동기는 전화 통화를 하는 것
        - 전화를 걸때: 걸고 전화를 받을 때 까지 기다린다. 전화를 받으면 이야기 한다. 끊을 때도 끊자고 이야기 하고 알았다고 하면 끊는다.
    비동기는 편지를 주고 받는 것
        - 편지를 쓴다. 그리고 편지가 상대방에게 가는 도중에 나는 다른일을 한다.

동기와 비동기에 대한 의미는 이해를 하였으나, 실제 디지털 통신에서 RS232 와 SPI 의 차이점에 대해서는 아직 이해하지 못하였다.
추후 정리가 필요.

참조: http://stackoverflow.com/questions/10102580/how-does-synchronous-and-asynchronous-communication-work-exactly


(K)디지털 통신의 1차 분류(Serial-Parellel, 직렬-병렬)

디지털 통신 시스템에서는 두 가지의 데이터 전송 방식이 있다:병렬 과 직렬. 병렬 연결은 여러개의 선이 병렬로(동시에) 동작하는 거시고. 시리얼은, 반대로, 하나의 선으로 데이터를 하나씩 전송하는 것이다.

병렬 데이터
컴퓨터에 있는 병렬 포트가 예시이다. 병렬 포트의 경우 8개의 데이터 선들이 있고, 그라운드선과, 제어선이 있다. 그리고 IDE 하드디스크 커넥터와 PCI 확장포트도 좋은 예이다.

직렬 데이터
컴퓨터의 직렬 포트가 예시이다. 하나의 선으로 연결이 되어 있거나 하나의 차동증폭기로 되어 있고, 기본 선 외에 그라운드나 컨트롤 선이 있는 것이다. USB, FireWire, SATA 와 PCI Express 가 좋은 예이다.


참조: https://en.wikibooks.org/wiki/Communication_Networks/Parallel_vs_Serial
    

2016년 3월 9일 수요일

(E+K) Python for Social Scientists(사회과학자를 위한 파이썬)

파이썬에 대해서 잘 정리해 놓은 블로그가 있어서 읽고, 일부를 한글로 옮겨 보았습니다.
가면 갈수록 더 좋은 Quality 의 블로그 들이 나오는 것 같군요.

언젠가 직접.. 깔끔한 블로그를 구성해 보고 싶네요 ㅎㅎ

---

Python for Social Scientists



This is a guest blog post by Nick Eubank​, a Ph.D. Candidate in Political Economy at the Stanford Graduate School of Business
글은 Nick Eubank, 스탠포드 비즈니스 대학원에서 정치경제 박사과정, 글입니다.


 Python is an increasingly popular tool for data analysis in the social scientists. Empowered by a number of libraries that have reached maturity, R and Stata users are increasingly moving to Python in order to take advantage of the beauty, flexibility, and performance of Python without sacrificing the functionality these older programs have accumulated over the years.
파이썬은 사회과학자들의 데이터 분석툴로서 점점  인기가 높아지고 있습니다.. 성숙도가 높은 많은 라이브러리들로 인하여 더욱 강해지고 있고, R Stata 사용자들도 오래된 툴들의 장점들을 잃지 않으면서도파이썬의 아름다움유연함그리고 성능 으로 대변되는 장점들을 취하기 위해서 파이썬으로 옮겨오고 있습니다.
But while Python has much to offer, existing Python resources are not always well-suited to the needs of social scientists. With that in mind, I’ve recently created a new resource —www.pythonforsocialscientists.org (PSS) — tailored specifically to the goals and desires of the social scientist python user.
하지만 파이썬이 많은것을 제공하는 반면,  사회과학자들의 필요에 맞는 형태로는 있지 않습니다. 그런 생각을 바탕으로 최근에 저는 사회과학자들에 맞춘 새로운 싸이트를 만들었습니다.

The site is not a new set of tutorials, however — there are more than enough Python tutorials in the world. Rather, the aim of the site is to curate and annotate existing resources, and to provide users guidance on what topics to focus on and which to skip.
사이트는 새로운 형태의 tutorial 아닙니다, 파이썬 튜토리얼은 충분할 만큼 세상에 많이 있습니다. 대신에, 싸이트에서는 이미 있는 내용들을 모으고 자세한 설명을 해서 사용자들에게 어느 토픽에 집중을 해야 하고, 어떤 것에 하지 않을 것인지를 알리기 위함 입니다.

Why a Site for Social Scientists?
 Social scientists – and indeed, most data scientists – spend most of their time trying to wrestle individual, idiosyncratic datasets into the shape needed to run statistical analyses. This makes the way most social scientists use Python fundamentally different from how it is used by most software developers. Social scientists are primarily interested in writing relatively simple programs (scripts) that execute a series of commands (recoding variables, merging datasets, parsing text documents, etc.) to wrangle their data into a form they can analyze. And because they are usually writing their scripts for a specific, idiosyncratic application and set of data, they are generally not focused on writing code with lots of abstractions.
사회과학자들은 그리고 대부분의 데이터 과학자들 많은 시간을 개별적이고, 특이한 데이터 세트를 통계적 분석이 가능하도록 변환 하는데 쓰고 있습니다. 부분이 사회과학자들이 파이썬을 쓰는 방법이 개발자들이 쓰는 것과 다른 이유 입니다. 사회 과학자들은 비교적 간단한 프로그램 명령 (변수 저장, 텍스트 문서를 구문 분석, 데이터 세트 병합 ) 분석 있는 형태로 데이터를 다루는 일련의 명령 (스크립트) 작성에 주로 관심이 있습니다. 그들은 일반적으로 데이터의 특정, 특이한 프로그램과 데이터 세트에 대한 자신의 스크립트를 작성하기 때문에, 그들은 일반적으로 코드 작성시에 추상화에 초점을 맞추지 않습니다.

Social scientists, in other words, tend to be primarily interested in learning to use existing toolseffectively, not develop new ones.
 다른말로 하면, 사회과학자들은 현재 있는 들을 효율적으로 쓰는데 관심이 있다는 것입니다. 새로운 것을 만드는 것이 아니라.

 Because of this, social scientists learning Python tend to have different priorities in terms of skill development than software developers. Yet most tutorials online were written for developers or computer science students, so one of the aims of PSS is to provide social scientists with some guidance on the skills they should prioritize in their early training. In particular, PSS suggests:
 이런 이유 때문에파이썬을 배우는 사회과학자들은 스킬을 익힐  소프트웨어 개발자들과는 다른 종류의 우선순위가 생깁니다하지만 온라인의 많은 튜토리얼들은 개발자나 컴퓨터 과학과의 학생들을 위한 것이기 때문에, PSS 목표는 사회과학자들에게 파이썬 배울 때의 우선순위를 가이드 하려고 합니다구체적으로는 

Need immediately:
  • Data types: integers, floats, strings, booleans, lists, dictionaries, and sets (tuples are kinda optional)
  • Defining functions
  • Writing loops
  • Understanding mutable versus immutable data types
  • Methods for manipulating strings
  • Importing third party modules
  • Reading and interpreting errors
Things you’ll want to know at some point, but not necessary immediately:
  • Advanced debugging utilities (like pdb)
  • File input / output (most libraries you’ll use have tools to simplify this for you)
Don’t need:
  • Defining or writing classes
  • Understanding Exceptions

즉시 필요:
  • 데이터 타입: integer, float, string, boolean, list, dictionary, and set (tuple 옵션)
  • 함수 선언
  • 루프
  • Mutable immutable 데이터 타입(const 이야기 하는 같음)
  • 문자열을 다루는 방법들
  • third party 모듈을 사용하는
  • 에러를 해석하는
알면 좋음, 하지만 즉시는 아님:
  • 높은 수준의 디버깅 하는 (pdb 같은 )
  • 파일을 읽고 쓰는 (대부분 라이브러리들에서 쉽게 있게 놓았다.)
필요 없음:
  • 클래스 쓰는
  • 예외처리 하는 방법

Pandas
 Today, most empirical social science remains organized around tabular data, meaning data that is presented with a different variable in each column and a different observation in each row. As a result, many social scientists using Python are a little confused when they don’t find a tabular data structure covered in their intro to Python tutorial. To address this confusion, PSS does its best to introduce users to the pandas library as fast as possible, providing links to tutorials and a few tips on gotchas to watch out for.
 현재, 대부분의 실증적인 사회과학은 표의 형태(row column 각각 의미를 가지고 이들의 교차도 의미를 가지는) 사용되고 있습니다. As a result, many social scientists using Python are a little confused when they don’t find a tabular data structure covered in their intro to Python tutorial. 이런 혼란을 해결하기 위해서, PSS 최대한 빨리 pandas 라이브러리를 소개하려고 한다, 튜토리얼들과 들에 링크를 걸면서 ( 문단은 제대로 해석 안됨 )
 The pandas library replicates much of the functionality that social scientists are used to finding in Stata or R — data can be represented in a tabular format, column variables can be easily labeled, and columns of different types (like floats and strings) can be combined in the same dataset.
 Pandas 라이브러리는 사회과학자들이 주로 사용했었던 Stata R 에서 사용했었던 기능들을 그대로 사용할 있도록 만들어져 있습니다. – 데이터는 표이며, 컬럼은 쉽게 이름이 붙을 있고, 컬럼에 서로 다른 타입이 들어있을 있는 (가량 소수, 문자열)

pandas is also the gateway to many other tools social scientists are likely to use, like graphing libraries (seaborn and ggplot2) and the statsmodels econometrics library.
Pandas 사회과학자들이 많이 사용하는 다른 (그래프를 그리거나(seabornggplot2) 계량경제학과 관련된 사용하는) 사용하도록 하는 gateway 입니다.

Other Libraries by Research Area
 While all social scientists who wish to work with Python will need to understand the core language and most will want to be familiar with pandas, the Python eco-system is full of application-specific libraries that will only be of use to a subset of users. With that in mind, PSS provides an overview of libraries to help researchers working in different topic areas, along with links to materials on optimal use, and guidance on relevant considerations:
 사회과학자들이 파이썬에서 가장 기본적인 내용과 pandas 가지고 일하기를 원하기는 할테지만, 파이썬은 풍부한 기능을 가진 언어입니다. PSS에서는 분야의 연구자들이 사용할 있는 라이브러리 들도 공유 하려고 합니다..
Want to Get Involved?
 This site is young, so we are anxious for as much input as possible on content and design. If you have experience in this area you want to share please drop me an email or comment on Github.
 이 싸이트는 젊습니다. 그래서 내용과 전체 설계에 더욱 많은 input 필요합니다. 당신이 만약 분야에 경험이 있고 그것을 공유하고 싶다면 나에게 보내거나 Github 남겨 주기 바랍니다.



Reference
    원글: https://realpython.com/blog/python/python-for-social-scientists/
    Python for Social Scientists: http://www.pythonforsocialscientists.org/