There is a command line tool that allows you to work with the wireless connection on your Mac. The tool is very useful but by default hidden and not well documented.
airport
# show airport help
$ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport --help
# turn it off
$ networksetup -setairportpower en0 off
# turn it on
$ networksetup -setairportpower en0 on
# join a network
$ networksetup -setairportnetwork en0 <SSID> <Password>
Let`s start a wifi scan and get some information
# scan with interface en0
$ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport en0 --scan
# show information of en0
$ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport en0 --getinfo
Note: If do not specify the interface, airport will use the first wifi interface on the system.
Easy way
# create a symbolic link to the command
$ sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport /usr/sbin/airport
# after link created start the scan
$ airport en0 --scan
In one of my last tutorials, i show how to develop test tools for software tester with Python. Now i will show you, how to publish continuous integration status information for other team members like Scrum master, Product owner or Test manager.
If you don`t have Jenkins or Hudson running, search some public services with Google!
Example: inurl:8080 intitle:”Dashboard [Jenkins]”
Steps
Create a python script like this:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ast
import urllib
class JenkinsAPI(object):
api = "/api/python?depth=1&tree=jobs[displayName,lastBuild[result]]"
def __init__(self):
self.url = 'http://masi.vuse.vanderbilt.edu:8080/jenkins/'
def _get_status(self):
xml_input_no_filter = ast.literal_eval(
urllib.urlopen(self.url + self.api).read()
)
all_jobs = xml_input_no_filter['jobs']
return all_jobs
def show_results(self):
job = self._get_status()
fail = [row for row in job if 'SUCCESS' != row['lastBuild']['result']]
passed = len(job) - len(fail)
print "Jenkins: %s" % self.url
print "Jobs: %s - Successful: %s - Failed: %s" % (
len(job), passed, len(fail)
)
if len(fail) > 0:
for (i, item) in enumerate(fail):
print " > Job: %s - %s" % (
item['displayName'], item['lastBuild']['result']
)
del i
if __name__ == '__main__':
RUN = JenkinsAPI()
RUN.show_results()
Now start GeekTool and create a new Geeklet. Drag a Shell Geeklet on you Desktop. Now insert values for name, size, set colors and so on and add the python script on “Command”.
… the script.
Thats it! Now you can export the Geeklet and share it with you team members. My current screen looks like:
A lot of software testers do have no or less development skills. They also have less skills to use commandline tools and need GUI applications. In addition, the test applications for the respective claims should be easy to use. This guide will show you how to easily deploy software testers the needed test tools. This is just an example, please feel free to expand it!
After create a new PyCharm project (with virtualenv), create 2 new empty files (requirements.txt, ShowHeaders.py) and import a icon. You can found icons (*.icns) on iconarchive for free.
Open the “requirements.txt” file and add Requests library.
requests==2.6.0
Open the “ShowHeader.py” and add the following content.
For first test, run the application. If there are no issues – open the PyCharm terminal and run the following command.
$ py2applet --make-setup ShowHeaders.py
# or if you use virtualenv
$ /Users/<username>/ShowHeaderEnv/bin/py2applet --make-setup ShowHeaders.py
Now you should see the generated file “setup.py” in the Project. Open the file and add the icon. The content should look like this:
"""
This is a setup.py script generated by py2applet
Usage:
python setup.py py2app
"""
from setuptools import setup
APP = ['ShowHeaders.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True, 'iconfile':'header.icns'}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
Now execute the following command to build, for first test.
$ python setup.py py2app -A
After some messages in terminal, your Project should show 2 new folders (build, dist). The alias mode (-A / –alias) instructs py2app to build an application, but it is not portable to other machines! You can open the Application in Finder or from terminal for your tests. If there are changes, just run the build-command again.
$ open dist/ShowHeaders.app
If everything is fine and your Application is ready for ship, run the following command.
After given the new name for the project on Location, select for Interpreter “Create VirtualEnv”.
Create Virtual Environment dialog box opens. Here type the name of the new virtual environment and specify the target directory for he new virtual environment on Location. Select one “Base interpreter” and if needed, select the check box “Inherit global site-packages”.
Press “OK” button to apply changes and close the dialog box. After press the “Create” button – PyCharm create the new project.
# show version
$ VBoxManage --version
# show help
$ VBoxManage --help
# list all VM's
$ VBoxManage list vms
# list only running VM's
$ VBoxManage list runningvms
# show VM information
$ VBoxManage showvminfo <uuid|vmname>
# start VM (GUI)
$ VBoxManage startvm <uuid|vmname>
# start VM (Headless)
$ VBoxManage startvm <uuid|vmname> --type headless
# pause VM
$ VBoxManage controlvm <uuid|vmname> pause
# resume VM
$ VBoxManage controlvm <uuid|vmname> resume
# shutdown VM
$ VBoxManage controlvm <uuid|vmname> poweroff
There ‘s more! If you are familiar with basic commands, read the help or user manual!
As a software tester you need a test environment! The test environment should be soon as possible and without outside resources deployable. This guide shows you how to install Jenkins on Debian/Ubuntu with Puppet (Version 2.7.x).
Preparation
# get puppet version
$ puppet --version
# get puppet-lint version
$ puppet-lint --version
The next content is for second file “nodes.pp”. Here we create the case statement with the include for Jenkins class and a message (if OS is not supported).
node default {
case $::operatingsystem {
'Debian', 'Ubuntu' : { include jenkins }
default : { notify {"$::operatingsystem is not supported yet":} }
}
}
Note: The space after “/etc /apt” on “update” and “source file” should removed! I made this just because of the security policies of my provider. They do not allow! 🙁
Continue
First we check the syntax with the puppet-lint. As software tester i think you always lint! 😉
# example project-wide
$ puppet-lint testenvironment/
# example specific files
$ puppet-lint testenvironment/manifests/site.pp
$ puppet-lint testenvironment/manifests/nodes.pp
$ puppet-lint testenvironment/modules/jenkins/manifests/init.pp
Now we make some different “Dry-runs”.
# simple Dry-run with noop
$ puppet apply testenvironment/manifests/site.pp --modulepath=/root/testenvironment/modules/ $* --noop
# Dry-run with noop and summarize
$ puppet apply testenvironment/manifests/site.pp --modulepath=/root/testenvironment/modules/ $* --noop --summarize
# Dry-run with noop, summarize and debug
$ puppet apply testenvironment/manifests/site.pp --modulepath=/root/testenvironment/modules/ $* --noop --summarize --debug
With “–noop” nothing is really executed. The “–modulepath”, “–summarize” and “–debug” speaks for themselves.
the Final
Now the final, after the Puppet is ready you should able to connect to Jenkins.
# run puppet
$ puppet apply testenvironment/manifests/site.pp --modulepath=/root/testenvironment/modules/ $*