2016년 3월 20일 일요일

(E+K) Windows 폴더접근 단축키(Folder Short cuts)

'내 컴퓨터' 혹은 'c:' 에 빨리 접근하는 방법이 필요해서 찾아보았습니다.
I needed to open 'c:' faster, so I collected methods


정의(Definition)
    Win: window key(Windows), Command(Mac)
    Enter: press Enter
    "문자열(글자)": 글자 입력
 
내컴퓨터(My Computer)
    1. Win + e

특정 드라이브 (Specific Drive ex>c:, d:, e: ...)
    1. Win + r -> "c:" -> Enter

특정 폴더(Specific Drive)
    1. 특정 폴더의 경로를 복사(ex>"C:\Users\user\Downloads")
    2. 환경변수(내컴퓨터->오른쪽 마우스버튼-> 고급시스템설정 -> 환경변수 -> path 항목에 추가
    3. Win + r -> "downloads" -> Enter

그 외 방법(etc..)
    - 즐겨찾기에 추가
        
    - 바탕화면에 바로가기 생성 -> 바로가기 아이콘에 단축키 추가(ex> F10 key)
    - make shortcut at desktop -> make shortcut key in shortcut(ex>F10 key)

    - 'q-dir' 과 같은 폴더 관리 프로그램 사용
    - use 'q-dir' explorer management program
        -> 하나의 창에 4개의 폴더를 한번에 띄우고, 하나의 폴더에는 탭을 여러개 두어 자주 여는 폴더는 모두 열어 둘 수 있다.
        -> it can open 4 explorer on one window, even in one explorer you can make tabs

2016년 3월 13일 일요일

(E,K) MCU 이해 - Understanding MCU

Which micro controller could I learn about in order to have directly marketable embedded skills
어떤 마이컴을 선택해야 내 실력을 월등히 높힐 수 있나요?

This chapter will provide such people with some idea why the newbie question can't be answered in any simple way, and some useful recommendations as to which platforms you might choose for experimentation and learning purposes
이 챕터에서는 처음 공부하는 사람이 질문하는 것들이 왜 간단하게 대답될 수 없는지를 설명하면서, 어떤 마이컴을 선택하는 것이 유용할 지에 대해서도 이야기 한다.

in any case, the short answer to the "which micro should I learn for fortune and glory"
question is that learning how to work with any one particular micro-controller won't lead you directly to a job.
어떤 경우에, "어떤 마이컴을 선택하는게 가장 효율적일까요?" 에 대한 짧은 대답은 특정 하나의 마이컴을 공부한다고 해서 직업을 얻을 수는 없을 것이라는 것이다.

when you come to a new job, you're going to find a certain body of legacy technology implemented on some micro or other(probably some hoary old device you would never choose in your wild-est nightmare),
새로운 직업을 잡게 되면, 그 회사에서 기존에 개발되어 있던 예전 코드들로 일하게 될 것이다.(아마 당신이라면 절대 선택하지 않을 마이컴일 수 도 있다.)
and perhaps a newer generation based on a different family of micros and when you start working on your own completely new designs, you may choose a different family yet again.
그리고 공부했던 것과는 다른 전혀 새로운 마이컴들을 가지고 일할 수도 잇다.

on a related note: In this chapter, I mention several specific vendors and products by name, and I quite some approximate price.
이 챕터에서는 몇가지 벤더의 제품들을 이야기할 것이다.

I'm including a discussion of the 8051 in this book for two reasons and one minor reason.
인털의 8051시리즈를 언급하는 것에는 큰 2가지 이유와 작은 한가지 이유가 있다.

1. It pops up in all sorts of apparently unrelated applications - many application - specific standard products(ASSPs), for instance, have an 8051 core.
The chance that you'll run across an 8051 variant in your career is this very good indeed.
Being family with the core's capabilities, if nothing else, will help you decide how to part together your design.
2. If you can work efficiently with the 8051, you can work with anything, so it's not a terrible architecture to learn on.
3. (Minor reason) - the 8051 happens to be very efficient at task. You may find this fact useful, since the 8051 is also very cheap

1. 어디선가 8051 버전의 변형을 만날 확률이 높다.
2. 8051을 효율적으로 사용하면 어떤 것들로도 일할 수 있어진다.
3. (마이너한 것) - 실제 효율적이며, 싸다.

1st level of Understanding of MCU as SW Engineer(My Idea)
    Memory Configuration
      -> Memory address
        RAM(DRAM, SRAM)
        ROM(MASK ROM, PROM, EPROM, EEPROM)

SW 엔지니어로서 MCU 에 대해 1차로 이해해야 하는 것(내 생각)
    Memory 구성
      -> 메모리 주소
        RAM(DRAM, SRAM)
ROM(MASK ROM, PROM, EPROM, EEPROM)
    Port의 종류와 역할
        지원 통신의 종류
    사용가능 인터럽트
    그 외 자세한 기능


참조: 임베디드 엔지니어가 되고 싶다고
Reference: So You Wanna Be an Embedded Engineer, 1st Edition

2016년 3월 12일 토요일

(E, K) Robot framework, RIDE 3 - Libraries(라이브러리)

 Test libraries provide the actual testing capabilities to Robot Framework by providing keywords. There are several standard libraries that are bundled in with the framework, and galore of separately developed external libraries that can be installed based on your needs. Creating your own test libraries is a breeze.
Let us know if there are useful libraries missing from the list.

Test 라이브러리는 Robot Framework에서 실제 테스트를 키워드를 사용해서 할 수 있도록 해준다. 기본으로 설치되어 있는 라이브러리가 있고, 필요에 따라 설치할 수 있는 많은 외부 라이브러리들이 이미 개발되어 있다. 자신만의 라이브러리를 만드는 것도 쉽다.

만약 아래 리스트에 유용한 라이브러리가 빠져 있다면 알려주기 바란다.

* 한 눈에 볼 수 있도록 긴 표로 나타내었습니다.

STANDARD
Builtin
Provides a set of often needed generic keywords. Always automatically available without imports.
Dialogs
Provides means for pausing the test execution and getting input from users.
Collections
Provides a set of keywords for handling Python lists and dictionaries.
OperatingSystem
Enables various operating system related tasks to be performed
in the system where Robot Framework is running.
Remote
Special library acting as a proxy between Robot Framework and test libraries elsewhere.
Actual test libraries can be running on different machines
   and be implemented using any programming language supporting XML-RPC protocol.
Screenshot
Provides keywords to capture screenshots of the desktop.
String
Library for generating, modifying and verifying strings.
Telnet
Makes it possible to connect to Telnet servers and execute commands on the opened connections.
XML
Library for generating, modifying and verifying XML files.
Process
Library for running processes in the system. New in Robot Framework 2.8.
DateTime
Library for date and time conversions. New in Robot Framework 2.8.5.
EXTERNAL
Android library
Library for all your Android automation needs. It uses Calabash Android internally.
AnywhereLibrary
Library for testing Single-Page Apps (SPA). Uses Selenium Webdriver and Appium internally.
AppiumLibrary
Library for Android- and iOS-testing. It uses Appium internally.
Archive library
Library for handling zip- and tar-archives.
AutoItLibrary
Windows GUI testing library that uses AutoIt freeware tool as a driver.
Database Library (Java)
Java-based library for database testing. Works only with Jython.
Database Library (Python)
Python based library for database testing. Works with any Python interpreter, including Jython.
Diff Library
Library to diff two files together.
Eclipse Library
Library for testing Eclipse RCP applications using SWT widgets.
robotframework-faker
Library for Faker, a fake test data generator.
FTP library
Library for testing and using FTP server with Robot Framework.
HTTP library (livetest)
Library for HTTP level testing using livetest tool internally.
HTTP library (Requests)
Library for HTTP level testing using Request internally.
iOS library
Library for all your iOS automation needs. It uses Calabash iOS Server internally.
ImageHorizonLibrary
Cross-platform, pure Python library for GUI automation based on image recognition.
MongoDB library
Library for interacting with MongoDB using pymongo.
MQTT library
Library for testing MQTT brokers and applications.
Rammbock
Generic network protocol test library that offers easy way to specify network packets
   and inspect the results of sent and received packets.
RemoteSwingLibrary
Library for testing and connecting to a java process and using SwingLibrary,
especially Java Web Start applications.
SeleniumLibrary
Web testing library that uses popular Selenium tool internally.
Uses deprecated Selenium 1.0 and is also itself deprecated.
Selenium2Library
Web testing library that uses Selenium 2. For most parts drop-in-replacement
for old SeleniumLibrary.
Selenium2Library for Java
Java port of the Selenium2Library.
SSHLibrary
Enables executing commands on remote machines over an SSH connection.
Also supports transfering files using SFTP.
SudsLibrary
A library for functional testing of SOAP-based web services based on Suds,
a dynamic SOAP 1.1 client.
SwingLibrary
Library for testing Java applications with Swing GUI.
watir-robot
Web testing library that uses Watir tool.
OTHER
Creating test libraries
Creating test libraries section in Robot Framework User Guide.
plone.app
.robotframework
Provides resources and tools for writing functional Selenium tests for Plone CMS and its add-ons.
JavalibCore
Base for implementing larger Java based test libraries for Robot Framework.
Remote
Built-in special library acting as a proxy between Robot Framework and test libraries elsewhere.
Actual test libraries can be running on different machines and be implemented
   using any programming language supporting XML-RPC protocol.
RemoteApplications
Special test library for launching Java applications on a separate JVM
and taking other libraries into use on them.

2016년 3월 11일 금요일

(E, K) Robot framework, RIDE 2 - How to write good test cases using Robot Framework(Robot Framework에서 좋은 테스트 케이스는 어떻게 만드는가)

Introduction

Naming


Test suite names

  • Suite names should be as describing as possible.
  • Names are created automatically from file or directory names:
    • Extensions are stripped.
    • Underscores are converted to spaces.
    • If name is all lower case, words are capitalized.
  • Names can be relatively long, but overly long names are not convenient on the file system.
  • The name of the top level suite can be overridden from the command line using the --name option if needed.
Examples:
  • login_tests.robot -> Login Tests
  • IP_v4_and_v6 -> IP v4 and v6

Test case names

  • Test names should be describing similarly as suite names.
  • If a suite contains many similar tests, and the suite itself is well named, test names can be shorter.
  • Name is exactly what you you specify in the test case file without any conversion.
For example, if we have tests related to invalid login in a file invalid_login.robot, these would be OK test case names:
*** Test Cases ***
Empty Password
Empty Username
Empty Username And Password
Invalid Username
Invalid Password
Invalid Username And Password
These names would be somewhat long:
*** Test Cases ***
Login With Empty Password Should Fail
Login With Empty Username Should Fail
Login With Empty Username And Password Should Fail
Login With Invalid Username Should Fail
Login With Invalid Password Should Fail
Login With Invalid Username And Invalid Password Should Fail

Keyword names

  • Also keyword names should be describing and clear.
  • Should explain what the keyword does, not how it does it.
  • Very different abstraction levels (e.g. Input Text or Administrator logs into system).
  • There is no clear guideline should a keyword be fully title cased or should only the first letter is capitalized.
    • Title casing often used when the keyword name is short (e.g. Input Text).
    • Capitalizing just the first letter typically works better with keywords that are like sentences (e.g. Administrator logs into system). These keywords are often also higher level.
Good:
*** Keywords ***
Login With Valid Credentials
Bad:
*** Keywords ***
Input Valid Username And Valid Password And Click Login Button

Naming setup and teardown

  • Try to use name that describes what is done.
    • Possibly use an existing keyword.
  • More abstract names acceptable if a setup or teardown contain unrelated steps.
    • Listing steps in name is duplication and a maintenance problem (e.g. Login to system, add user, activate alarms and check balance).
    • Often better to use something generic (e.g. Initialize system).
  • BuiltIn keyword Run Keywords can work well if keywords implementing lower level steps already exist.
    • Not reusable so best used when certain a setup or teardown scenario is needed only once.
  • Everyone working with these tests should always understand what a setup or teardown does.
Good:
*** Settings ***
Suite Setup     Initialize System
Good (if only used once):
*** Settings ***
Suite Setup     Run Keywords
...             Login To System    AND
...             Add User           AND
...             Activate Alarms    AND
...             Check Balance
Bad:
*** Settings ***
Suite Setup     Login To System, Add User, Activate Alarms And Check Balance

(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 에서 받을 수 있다.




참조