레이블이 프로그래밍인 게시물을 표시합니다. 모든 게시물 표시
레이블이 프로그래밍인 게시물을 표시합니다. 모든 게시물 표시

2016년 5월 15일 일요일

Robot Framework 이해를 위한 정리(1/3)


정의
Robot Framework는 테스트 자동화를 위한 툴이다.

기원
기본 아이디어는 헬싱키 대학에 다니던 Pekka Laukkanen 의 2005년 석사 논문 'Data-Driven and Keyword-Driven Test Automation Frameworks'  에서 채택 되었으며  Nokia Siemens Networks 에서 첫번째 버전을 개발 하였다. 2008년부터 오픈소스가 되었다.

배경
1. 프로그램은 계속 커지고 있다.
2. 소프트웨어 품질은 더욱 중요해진다.
3. 소프트웨어 테스트를 잘 해야 한다는 압박이 더 커지고 있다.
4. 테스트 자동화는 분명히 이런 일의 크기를 줄여줄 수 있는 방법이다.
5. 하지만 테스트를 위한 시스템(System Under Test, SUT)이 변경되면 많은 걸 새로 작성해야 하고, 컴퓨터가 필요한 일을 해야 하는 것은 어려운 일이다.
6. 이런 상황에서 편리한 테스트 자동화를 위하여 Robot Framework를 제안한다.

테스트의 종류



Static






SW
Test









Dynamic


Non
Functional

















Functional


Unit

















Component


















System









테스트 자동화 Framework의 발전 3단계
1. 
테스트 데이터가 테스트 스크립트 안에 있다.
하나의 테스트 스크립트는 하나의 테스트를 수행한다.
시스템이 변경 된다면 테스트를 다시 써야 한다.

2. 
잘 디자인 되고, 모듈러 특성, 탄탄한 테스트, 문서화 되어 유지보수 가능
테스트 스크립트는 테스트의 수행만 하는 것이 아니라 테스트 전 기본 셋팅 수행, 테스트 초기화, 에러를 잡아서 원상복구 진행 가능 
여전히 테스트 데이터는 테스트 스크립트 속에 있다. 셋팅하는 스크립트는 테스트 케이스 마다 있다.
3. 
테스트 데이터는 테스트 스크립트와 분리된다. 이것은 두가지 분명한 이득이 있다.
1) 하나의 드라이버 스크립트로 여러 테스트 케이스에 사용할 수 있다.
2) 테스트 디자인과 Framework의 구분 해준다.
 - 테스트 될 특정 분야 지식
 - 프로그래밍 기술
이 3단계의 테스트 자동화 Framework는 Keyword Driven, Data Driven Framework 라고 불리며 이것은 이 논문의 제목 이다.


이후 진행
1. 설치(python, wxPython-unicode, robotframework(RIDE에서 바로 실행가능), robotframework-ride 설치, 이후 필요에 의해 pySerial 등 설치)
2. 실제 테스트케이스를 통한 분석


다음글
Robot Framework 이해를 위한 정리(2/3)

참조
1. Robot Framework 홈페이지
2. Robot Framework의 첫 제안이었던 헬싱키 대학 Laukkanen, Pekka 의 석사논문




2016년 5월 1일 일요일

Arduino 실습 1 - 외부 LED 1개 동작하기

목적: 아두이노 보드의 외부에 LED를 연결하여 동작하게 할 수 있다.

순서
    1. 실험에 필요한 준비물 이해
    2. 하드웨어 연결
    3. 소프트웨어(Arduino 내부 마이크로컨트롤러에 쓰일) 작성
    4. 실행결과 확인


1. 실험에 필요한 준비물 이해
    a. LED 의 동작 원리: 짧은 쪽이 캐소드(Cathode), 긴 쪽이 에노드(Anode), 짧은 쪽은 GND(그라운드), 긴 쪽을 VCC(전원)에 연결.
    b. 저항(1K) 가 필요한 이유: 저항은 밝기의 조절과 제품의 보호(여기서는 LED)를 위한 것이며, 여기서는 1k 사용.
    c. 아두이노 UNI R3 에서 필요한 부분: VCC(전원), GND(그라운드), Digital Output(여기서는 8번 1개 사용)
        - Digital 출력의 의미: 마이크로 컨트롤러 내부 값 셋팅에 의해 특정 핀의 값을 0 또는 1로 줄 수 있는 것.













   d. 브레드 보드: 부품들 간의 연결을 점프 케이블이라는 것을 이용해서 간편하게 연결하도록 도와주는 도구.
아래 진한 빨간색 선처럼, 각 칸들의 연결이 고정되어 있으며 그 칸들에 점프케이블을 꽂아서 각 부품들을 연결할 수 있는 도구
        











2. 하드웨어 연결
    a. Arduino(Arduino UNO 3 이며 앞으로 Arduino 로 표시) 의 GND 에 하얀색 선(Jump Wire 이며 앞으로 선 표시)을 LED의 캐소드에 연결
    b. LED 의 에노드와 연결된 곳에 1k 저항선을 연결
    c. 1k 저항선의 다른쪽에 노란색 선을 꽂은 다음 Arduino 의 Digital Output  8번과 연결
하드웨어 연결 완료












3. 소프트웨어(Arduino 내부 마이크로컨트롤러에 쓰일) 작성
    a. Sketch 의 동작원리 이해
        ① 아두이노 IDE 에서 기본코드에는 setup 과 loop 함수가 기본 작성되어 있으며 그 안에 코드를 추가 가능

          ② Setup은 Arduino 가 처음 구동될 때(프로그램이 처음 설치될 때, 업로드 될 때) 기본 셋팅을 해 주는 것으며,
          ③ Loop는 계속 무한반복하며 실행하는 곳이다.
    b. 필요한 코드 작성
    c. UNO R3에 작성된 코드 넣기
        - 업로드(위 화살표, 빨간색 네모) 클릭하여 Arduino 에 새로운 프로그램 전송

















4. 실행결과 확인




2016년 4월 15일 금요일

The Internet: Packet, routers, and reliability

내 컴퓨터와 특정 싸이트와의 데이터 전송은 직접 연결되지 않는다.
대신 네트워크들을 돌면서 찾아가게 된다.
고정된 경로를 따라가는 것이 아니라, 여러 경로들 중 여유가 있는 곳을 찾아 전송된다.
라우터가 그 경로들의 중간에서 관리한다.
패킷이 missing 되었는지는 TCP의 경우 관리가 된다.
몇 개의 패킷이 안보내진 것이 확인되면 TCP는 서버에 알려서 안보내진 패킷을 다시 받는다.
라우터와 TCP의 조합으로 현재 진행되고 있는 서비스를 중단없이 확장할 수 있다.



The Internet: IP addresses and DNS


전 세계는 인터넷을 통해 이야기를 나누고 있다.

1970년대에는 인터넷에대한 표준적인 방법이 존재하지 않았다.
Vint Cerf 와 Bob Kahn 은 인터넷 프로토콜을 발명하여 통신을 가능하도록 하였다.

연결의 한 예는

1. 랩탑을 나는 사용하고 있으며
2. 그 랩탑은 wifi가 연결되어 있다.
3. wifi는 Internet Service Provide 에 연결이 되어 있다.
4. 그 ISP는 정말 많은 장치들과 연결되어 있다.


2016년 4월 14일 목요일

The Internet: Wires, cables, and WiFi



내용 요약

우리는 사진, 문자, 이메일을 어떻게 한 곳에서 다른 곳으로 보낼 수 있는가?
인터넷으로 한다.
인터넷은 바이너리 정보를 옮길 수 있다.
바이너리 정보란 0과 1로 이루어진 bit로 표현되는 것이다.
인터넷의 모든 정보는 bit로 표현되는 것이다.

bit는 어떻게 전달될 수 있는가?

종류
예시
장점
단점
전기
전선
싸다
신호 로스
광섬유
빠르다,
신호 로스 없다.
비싸다,
다루기 어렵다.
전파
Wifi
선이 필요 없다.
신호 로스

데이터를 구분하기 위하여 clock을 쓴다.

전송관련 개념
bandwidth: 전송 용량, bitrate로 측정된다.
bitrate: 초당 전송 가능한 bit수
latency:  sender 에서 receiver 까지 bit 전송에 걸린 시간


2016년 3월 30일 수요일

(E)How to create hierarchy labels(tree structure) in blogger, blogspot

This is How to make sublabels in tree structure tutorial
Main Idea is from this blog(How to create Sublabels / Hierarchical Labels in Blogspot) and I modify to use my blog
I'm new to web programming(and Javascript), so I'm hardly understand these codes, so just enough to make dTree

Sequece

1. Add Gadgets
    * blog-layout click
        1) sidebar-right-1, add 'HTML/JavaScript' gadget
            - title: 'Labels'
            - content: "." temporary
        2) sidebar-right-1, add 'tag' gadget
            - title: 'tag'
        => 'tag' gadget must be before 'HTML/JavaScript' gadget
             so change order if it's not
2. Add Template HTML Code
    * blog-template-HTML edit click
        1) add below code right after <head>
        these codes must work before dTree code usage
          I change location from reference blog.
<link href='https://sites.google.com/site/efekefek/file-js/dtree.css' rel='StyleSheet' type='text/css'/>
<script src='https://sites.google.com/site/efekefek/file-js/createdtree.js' type='text/javascript'/>
        2) find below code    
<b:widget id='Label1' locked='false' title='Labels' type='Label'>
<b:includable id='main'>
 ... 
</b:includable>
</b:widget>
          -> and change  ... to below code
          these code get each label count to be used at dTree
<script type='text/javascript'>
  var labelCountMap = {};
  <b:loop values='data:labels' var='label'>
     labelCountMap ["<data:label.name/>"] = "<data:label.count/>";
   </b:loop>
</script>
            - blue 'Label1' can be changed by the Label gadget number

3. Add 'HTML/JavaScript' Gadget content
    - add below code to Gadget content and change blue code by your own labels
     '<!--' and  '//-->' are erased. at first time I thought it should be there, but doesn't work
<div class="dtree">
<p><a href="javascript: d.openAll();">open all</a> | <a href="javascript: d.closeAll();">close all</a></p>
<script type="text/javascript">
function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }
    return true;
}

function addMap(d, startingNode, parentNode, map) {
 for (var key in map) {
  if (isEmpty(map[key])) {
   d.add(startingNode++,parentNode,key+' ('+labelCountMap[key]+')','/search/label/'+key);
  } else {
   d.add(startingNode++,parentNode,key+' ('+labelCountMap[key]+')','/search/label/'+key);
   startingNode = addMap(d, startingNode, startingNode-1, map[key]);
  }
  
 }
 return startingNode; 
}

var data = {
    'label1' : {
        'label2' : {}
    }
};
d = new dTree('d');
d.config.useLines = true;
d.config.useIcons = false;
d.config.inOrder = true;

d.add(0,-1,'');   
addMap(d, 1, 0, data);

document.write(d);
</script>
</div>

4. Result












(K)블로거(블로그스팟)에서 라벨을 트리구조로 생성하는 방법

google blog(blogspot, blogger)의 post 를 트리 구조로 정리하는 방법을 설명하였습니다.
Main Idea는 원글(How to create Sublabels / Hierarchical Labels in Blogspot) 이며, 구현 시에 잘 안되던 것들은 수정하여 적용 하였습니다.
웹 프로그래밍과 Javascript를 모르는 상태에서 이 기능을 구현하기 위해서 필요한 내용을 검색해서 익혔기 때문에 부족한 점이 있습니다.

적용 순서

1. 필요한 가젯 추가
    * 블로그-레이아웃 클릭
        1) sidebar-right-1 에서 'HTML/JavaScript' 가젯 추가
            - 제목: 'Labels'
            - 내용: "." 임시로 아무내용
        2) sidebar-right-1 에서 '태그' 가젯 추가
            - 제목: '태그'
        => 중요한 것은 '태그' 가젯이 'HTML/JavaScript' 가젯보다 위에 있어야 하는 것
             왜냐하면 순서대로 코드를 적용해야 하기 때문에
             그래서 만약 순서가 반대로 되어 있으면 수동으로 변경 필요
2. 템플릿 HTML 코드 추가
    * 블로그-템플릿-HTML 편집 클릭
        1) <head> 바로 아랫줄에 아래 코드 두줄 추가
        웹 참조한 블로그와는 위치를 다르게 했습니다.
<link href='https://sites.google.com/site/efekefek/file-js/dtree.css' rel='StyleSheet' type='text/css'/>
<script src='https://sites.google.com/site/efekefek/file-js/createdtree.js' type='text/javascript'/>
        2) 아래 형태로 되어있는 태그 위젯의 내용에서
<b:widget id='Label1' locked='false' title='Labels' type='Label'>
<b:includable id='main'>
 ...  
</b:includable>
</b:widget>
            - ... 으로 표시된 내용을 모두 지우고 아래 코드로 변경
            웹 보여줄 라벨들이 각각 몇번 사용되었는지 숫자를 기억해 놓기 위한 코드 입니다.
<script type='text/javascript'>
  var labelCountMap = {};
  <b:loop values='data:labels' var='label'>
     labelCountMap ["<data:label.name/>"] = "<data:label.count/>";
   </b:loop>
</script>
           - 파란색으로 표시된 'Label1' 속의 숫자는 태그 가젯의 수에 따라 변경될 수 있으므로 확인 하여야 한다. 

3. 'HTML/JavaScript' 가젯의 내용(코드 추가)
    - 아래 내용을 해당 위젯을 내용으로 붙여 놓고 코드내용 중 파란색으로 표시된 label 트리구조 변수를 내가 원하는 형태로 변경
    웹 참조한 블로그에 있던 '<!--' 와 '//-->' 는 없앴습니다. 처음에는 원래 형식이 그런 줄 알았는데 주석같아 보여서 제거 했습니다.
<div class="dtree">
<p><a href="javascript: d.openAll();">open all</a> | <a href="javascript: d.closeAll();">close all</a></p>
<script type="text/javascript">
function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }
    return true;
}

function addMap(d, startingNode, parentNode, map) {
 for (var key in map) {
  if (isEmpty(map[key])) {
   d.add(startingNode++,parentNode,key+' ('+labelCountMap[key]+')','/search/label/'+key);
  } else {
   d.add(startingNode++,parentNode,key+' ('+labelCountMap[key]+')','/search/label/'+key);
   startingNode = addMap(d, startingNode, startingNode-1, map[key]);
  }
  
 }
 return startingNode; 
}

var data = {
    'label1' : {
        'label2' : {}
    }
};
d = new dTree('d');
d.config.useLines = true;
d.config.useIcons = false;
d.config.inOrder = true;

d.add(0,-1,'');   
addMap(d, 1, 0, data);

document.write(d);
</script>
</div>

4. 최종 결과











2016년 3월 27일 일요일

(K) Machine Learning 01 실습 - TensorFlow의 설치및 기본적인 operations

Tensorflow
    Google 의 Open Source Library
    Data  Flow Graph 를 사용하여 수학적인 연산을 하는 것
    Python 으로 만들어진 Library, pandas나 numpy 같이 import 해서 사용하는 것

Data Flow Graph
    Node는 수학적인 계산을 하는 Operation("+" 와 같이 연산을 한다) 이다.
    Edge는 Data Array(다차원, Vector) 이며 이 때 이 Data Array들을 Tensor 라고 부른다.
    이 형태는 모든 Machine Learning 과 관련된 연산을 할 수 있는 Format 이다.
    각각의 Node들은 하나의 CPU나 GPU 상에서만 있을 필요가 없다.(아직 이해 안됨)

Tensorflow 설치
    제 환경: Window 7, 64bit
    설치 진행
        1. Docker 설치
        2. Tensorflow 설치
        3. Jupitor Notebook 에서 Docker 설치 시 확인한 IP 를 주소로 사용
        4. Jupitor Notebook 실행하여 Tensorflow import 가능 확인

이후 이해 진행
    코드 한줄 한줄 이해가 필요


ML lab 01
TensorFlow의 설치및 기본적인 operations




2016년 3월 25일 금요일

(K) Machine Learning 00

강의를 듣는데 필요한 단어

Linear regression
    종속 변수 y와 한 개 이상의 독립 변수 (또는 설명 변수) X와의 선형 상관 관계를 모델링하는 회귀분석 기법
Logistic regression
     독립 변수의 선형 결합을 이용하여 사건의 발생 가능성을 예측하는데 사용되는 통계 기법
classification

Neural networks
    생물학의 신경망(동물의 중추신경계, 특히 뇌)에서 영감을 얻은 통계학적 학습 알고리즘
Convolutional Neural Network
    feed-forward artificial neural network in which the connectivity pattern between its neurons is inspired by the organization of the animal visual cortex, whose individual neurons are arranged in such a way that they respond to overlapping regions tiling the visual field.
Recurrent Neural Network
    class of artificial neural network where connections between units form a directed cycle.
Tensorflow
    텐서플로우(TensorFlow)는 기계 학습과 딥러닝을 위해 구글에서 만든 오픈소스 라이브러리. 
    데이터 플로우 그래프(Data Flow Graph) 방식을 사용

(K)Machine Learning 01


Machine Learning 이란.
    1. Machine Learning은 Software 이다.
    2. Software는 어떤 특별한 조건인 것을 구별하여 동작을 하거나 판단을 하게 된다.
    3. 하지만 조건을 명시해 주기가 어려울 경우가 있다.
    4. 그런 경우 어떤 현상에서 자동으로 배우도록 했으면 좋겠다.
    5. 학습을 하기 위해서 데이터를 제공해 주어야 한다.
    관련동영상 1

크게 두 가지로 분류 되는데
    1. Supervised
        - 데이터들의 성격을 확실히 구별해 주는 것
        대표적인 예로
            a. Regression: 경향성을 제공
            b. Binary: 두 가지로 구분
            c. Multi: 여러 가지로 구분
    2. UnSupervised Learning
        - 데이터들의 성격을 구별해 주지 않은 것, 알아서 모아 준다.

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.