Giter Site home page Giter Site logo

taf's Introduction

TAF overview

TAF is an integrated cross-platform system that sets the guidelines and provides tools for automation testing. The function libraries, test data sources, test object details, and various reusable modules are all integrated in one system. The platform provides an outline of the test automation process and reduces automation efforts. With this framework, an automation or validation engineer may run testing suites in different environments and obtain test results with detailed reports.

The Python programming language was chosen for the Framework, due to its high development speed and great maintainability. In addition, it has an XML-RPC library. Py.test was chosen as it has several advantages over other available test libraries. We follow the principle of maximum usage of existing components and systems. The framework has some components which use threading which should be considered when looking for components to extend the system. The system is built in way that allows users to see all errors that occur during test execution and to trace the full path to the initial point where the defect appeared to simplify root cause analysis. There is no external storage required except integration with Test Case Management System(s) using a database via API to update test case execution results and any related information (automation status, automation owner, automated script location, etc).

Design considerations

System Requirements and Dependencies

The framework is designed for use in Linux systems which have Python programming tools and the necessary libraries installed. The framework has been tested on following systems:

  • Ubuntu 14.04.1 LTS running Python 3.4.0, py.test 2.9.2 and higher versions.
  • Ubuntu 16.04.1 LTS running Python 3.4.0, py.test 2.9.2 and higher versions.

Test cases running with TAF might require additional software packages such as Ixia or Jira, depending upon test scenarios, which can be downloaded from internet or company website.

Constraints

The framework is originally intended to work with remote systems, so quality of network may affect testing results. In its original testing environment, TAF uses an Ixia traffic generator via Tcl API which may cause to slow down overall system performance, since TAF must use the Tkinter Python library to bind Tcl and Python. Furthermore, Ixia is a Windows-based system, however it does include a Tcl server component which allows access from Linux hosts. Ixia Tcl library (IxTclHAL) is not thread-safe which may add difficulties in future.

Goals and Guidelines

The TAF framework follows the "principle of atomicity" by splitting complex test cases into parts if possible and the DRY (Don't Repeat Yourself) principle by moving shared parts of code into helper functions and modules. TAF will define testing along the development phase, which will enable testers to configure the test environment, execute tests, and measure success/failure and coverage. The modular approach of TAF enables development of new tests without impacting existing ones, increasing reusability of developed tests.

System architecture

TAF architecture

The TAF is based on py.test. The basic concept is to create libraries with all necessary functionality, to define how the environment configuration will be supplied to test suites, and to create a reporting processing functionality.

TAF package consists of two folders: ./taf and ./testcases. taf folder holds library modules (or plugins) for py.test, and testcases contains test cases including test configuration and test scenarios. ./taf/testlib contains of the following modules.

Common functionality and helper functions:

  • loggers - integration of standard python logging library into framework;
  • helpers* - contains different helper functions which can be used from test suites;
  • common3 - contains base class to handle test environment.

Groups of modules to handle environment-specific functionality:

  • environment - functions for manipulation the operating system environment variables etc.

Hardware-related libraries:

  • dev_* - modules which contain classes to handle particular environment type;
  • powerboard - startup/shutdown of the devices using SNMP via APC power boards.

Typical sequence of actions and operations:

  1. Execution starts from calling py.test with necessary command line arguments.
  2. Py.test collects test cases according to its discovery rules.
  3. Py.test analyses conftest.py file(s) according to its discovery rules.
  4. Py.test performs setup procedure defined in conftest.py file.
  5. Py.test starts test suites execution one by one.
  6. Py.test performs tear down procedure defined in conftest.py file.
  7. Logs are stored and ready for further processing.

Installation

Docker container

TAF is very easy to install and deploy as a Docker container.

Docker can build images automatically by reading instructions from a Dockerfile, a text document that contains all the commands a user can call on the command line to assemble an image. Using Docker build, users can create an automated build that executes several command-line instructions in succession. TAF has a configuration file, called Dockerfile, located in the root of the TAF directory. It is based on Ubuntu 16.04 and Python 3.4.0.

Install and configure Docker

In order to install Docker, refer Docker .

Build image

To build TAF image you need to execute command:

    docker build -t <image_name>:<tag> -f Dockerfile .
    E.g. :root@14-04:~/taf# docker build -t ubuntu:taf3 -f Dockerfile .

Building the TAF image from Dockerfile can take over 15 minutes.

Run container

To run the TAF image and login to the container, execute command:

    docker run -i -t  <image_name>:<tag>
    E.g.: root@14-04:~# docker run -i -t ubuntu:taf3

After execution of previous command, the prompt should changed to:

    root@<container_id>:~#
    E.g.: root@fa3ced1fdcbf:~#

The TAF repository can be found in the root directory. Once in the TAF container, sample testcases can be run:

    $ cd unittests
    $ /root/taf/unittests/ py.test test_common3.py

Simple test execution

  • Git clone testcases repository

Link to repository testcases

  • Run test

    Command line used to execute specified test case:

 /<host>/:~ /testcases$ env PYTHONPATH=/root/taf/taf py.test --env=config/env/environment_examples.json
  --setup_file=config/setup/linuxhost_standalone.json general/ -m lhost_sample --logdir=demo_logs --xml_html=demo.html

Note:

Test example requires to install and configure OpenSSH server. Appropriate ssh credentials need to be specified in environment_examples.json file with "entry_type" linux_host.

 env PYTHONPATH – set up PYTHONPATH variable with path to TAF repository;

 env – provide path to the environment*.json file;

 setup – provide path to the setup*.json file.

Support and contact

Link to wiki Сontribution guidelines.

License

Apache 2.0. See LICENSE for more details.

taf's People

Contributors

irynabarna avatar lijenni avatar mbanszex avatar orestvoznyy avatar seungweonpark avatar stepanandr avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.