Giter Club home page Giter Club logo

nitrate's Introduction

Nitrate - Test Case Management System

PyPI

Python Versions

Django Versions

image

PyPI - License

GitHub issues

GitHub Workflow Unittests Status

image

Nitrate is a new test plan, test run and test case management system, which is written in Python and Django (the Python web framework). It has a lot of great features, such as:

  • Ease of use in creating and managing test life cycles with plans, cases and runs.
  • Multiple and configurable authentication backends, e.g. Bugzilla and Kerberos.
  • Fast search for plans, cases and runs.
  • Powerful access control for each plan, run and case.
  • Ready-to-use and extensible issue tracker that allows to track external issues with test cases and test case runs.
  • Accessibility with regards to XMLRPC APIs.

Nitrate works with:

  • Python: 3.9, 3.10.
  • Django: 3.2, 4.2.

What's more, Nitrate is tested with the following database versions in the testenv:

  • MariaDB: 10.4.14.
  • MySQL: 8.0.22.
  • PostgreSQL: 12.4.

Brief History

Nitrate was created by Red Hat originally back to the year 2009. A small group of engineers, who were working at Red Hat (Beijing), initiated the project to develop a Django-based test case management system being compatible with the Testopia from database level. After that, more engineers got involved into the development. TCMS is the project name, and Nitrate is the code name which has been being used as the name in open source community all the time to this day.

The project was hosted in fedorahosted.org at the very early age to build the community. The site had various artifacts of Nitrate, including the source code, kinds of development and project management documentations, roadmaps, mailing list, etc. The source code was managed by SVN in the beginning. Along with more contributors started to contribute to Nitrate, the team decided to migrate to Git eventually.

Since 2009, there were three major version releases, that were version 1.0 released in October 2009, version 2.0 released in January 2010, and version 3.0 released in April 2010. After version 3.0, the team had been adding new features, fixing bugs, improving performance and user experience continuously in a series of minor releases. As of year 2014, Nitrate was open sourced to community and hosted in GitHub based on the version 3.18, and new journey had began.

Up to this day, at the moment of writing this brief history review, Nitrate has been 11 years old and it still has strong vitality.

Get Nitrate

Nitrate ships with optional subpackages in addition to the main nitrate-tcms package. They are available from PyPI. The subpackages include:

  • mysql: needed when Nitrate works with MySQL or MariaDB database.
  • pgsql: needed when Nitrate works with PostgreSQL database.
  • bugzilla: needed when the BugzillaBackend authentication backend is enabled, or the issue tracker is configured to work with a Bugzilla instance.
  • krbauth: needed when the KerberosBackend authentication backend is enabled.
  • socialauth: needed when the social-based authentication backend is enabled.
  • async: needed when to run asynchronous tasks as Celery tasks.

Example of installation from PyPI:

python3 -m pip install nitrate-tcms
# To enable Kerberos-based authentication and asynchronous task in Celery
python3 -m pip install nitrate-tcms[krbauth,async]

Container Images

Nitrate provides three pre-built container images that can run in the cloud or a local container environment.

Generally, you should require quay.io/nitrate/web and quay.io/nitrate/worker. quay.io/nitrate/base is the base image used to build web and worker image, which should not be used directly in most cases unless you would like to build a custom image base on it.

The worker image is optional if there is no requirement to run asynchronous tasks by Celery.

For more information, please refer to Nitrate/containers

Run Nitrate

A quick way to run Nitrate from the latest container image:

podman-compose -f container-compose.yml up

There are a series of instructions for running Nitrate. Please refer to Deployment.

Skim through the documentation and choose the installation instructions that are appropriate for your case. And please, if you identify any issues with the installation guide, kindly bring it to our attention. You can either report the issue on the github repo, or submit a PR with a fix for it.

Documentation

For full documentation, including user guide, deployment, development guide and APIs, please refer to https://nitrate.readthedocs.org/.

Contribution

Welcome contributions in various fields. The Contribution document describes those fields in more details.

Write Code

If you would like to write some code, the Development document is the right place for you to get reference and started.

Report Issues

If you've stumbled upon an issue in Nitrate, please refer to Report an Issue to create one here.

Contact

There are various ways to get in touch. Choose one you like.

nitrate's People

Contributors

akhilsp32 avatar atodorov avatar brickxu avatar carstencodes avatar dependabot[bot] avatar hugovk avatar jianchen2580 avatar lurimax-north avatar mcavigelli avatar mfonism avatar tkdchen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nitrate's Issues

Improve the test plan edit page

It would be great if new products, product version and plan types can be added when a test plan is being edited. In other words, the test plan edit page should behave more like the page for adding test plans.

unify file upload

There are some file upload page in nitrate, some pages need click the upload button and jump to a file upload page while others upload directly. I think it's no need that jump to a unify upload page.

Replace w3m with an equivalent one

w3m is an executable program. this is used for getting the content rendered from HTML content generated by TinyMCE. This is rely on the removal of TinyMCE. When TinyMCE is removed from Nitrate, we can remove w3m also.

Related to #1

RESTful API support

Obvisouly, RESTful API is a must-have cool feature for wide various areas.

RESTful API aims to expose all necessary resources of Nitrate to all potential audiences, application development, etc. It is not intended to replace current XMLRPC API, that has been developing and using in production in the past years, and is still serving users now. However, XMLRPC is really an old technology, in contrast RESTful API is much modern way to expose internal resources and business to external world.

Resources and actions follows. This is an absolute draft. Continue to complete. Feel free to comment and make changes if necessary.

Authentication

Candidate authentication mechanisms

  • Kerberos
  • others?

TestPlan

  • create: POST, /plans/create/
  • delete: POST, /plans/\d+/delete/
  • update: PUT, /plans/\d+/update/
  • get an existing TestPlan: GET, /plans/\d+/
  • search, pagination support: GET, /plans/search/
    Arguments: ?
  • add cases to: PUT, /plans/\d+/cases/add/
  • remove cases from: POST, /plans/\d+/cases/remove/

TestCase

  • create: POST, /cases/create/
  • delete: POST, /cases/\d+/delete/
  • update: PUT, /cases/\d+/update/
  • get an existing TestCase: GET, /cases/\d+/
  • search, pagination support: GET, /cases/search/
    Arguments: ?

TestRun

  • create: POST, /runs/create/
  • delete: POST, /runs/\d+/delete/
  • update: PUT, /runs/\d+/update/
  • get an existing TestCase: GET, /runs/\d+/
  • search, pagination support: GET, /runs/search/
    Arguments: ?
  • add cases to: PUT, /runs/\d+/cases/add/
  • remove cases from: POST, /runs/\d+/cases/remove/

TestCaseRun

  • search, pagination support: GET, /case-runs/search/
    Arguments: ?
  • status modification: POST, /case-runs/\d+/change-status/
  • status modification can be expanded to several requests of each status for convenience
    • POST, /case-runs/\d+/idle/
    • POST, /case-runs/\d+/run/
    • POST, /case-runs/\d+/pass/
    • POST, /case-runs/\d+/pause/
    • ... where using verb. instead of a noun. to represent an action

Attachment of TestPlan, TestCase, TestCaseRun

Logs

Reference Links of TestCaseRun

  • get list of reference links: GET, /test-case-runs/\d+/reference-links/
  • add: POST, /test-case-runs/\d+/reference-links/add/
  • update: POST, /test-case-runs/\d+/reference-links/\d+/update/
  • delete: POST, /test-case-runs/\d+/reference-links/\d+/delete/

Product

  • add: POST, /products/add/
  • update: POST, /products/\d+/update/
  • delete: POST, /products/\d+/delete/
  • search: GET, /products/search/
    Arguments: ?

For convenience, following interfaces are to get all Product-specific resources. All are paginatable.

  • search related TestPlans: GET, /products/\d+/plans/

TestCaseCategory

TestPlanType

other resources ? ...

Give a more readable view to TestCase' change log

Long time past, a test case' change log is displayed in a non-readable way. it's hard to read, and difficult to get the information about what is changed. A change log table would be a good way to display. for example,

changed by happened on from to
cqi today status new status close
jianchen yesterday content: abc content: def
cqi Mon. Nov. 17 2014 summary: new test case summary: latest test case

How to run tests?

@jianchen2580
@BrickXu

Hi guys, do you still remember how to run tests? I run the tests in either

make test

or

./manage.py test --settings=tcms.settings.test

Lots of errors and failures. Looks something wrong of the way I run the tests. Need your help. Thanks.

More configurable

Many configuration are set in settings files. It would be better to make them configurable in Nitrate so that it's not necessary to restart whole application when making any changes.

Currently, following configuration can be made as configurable in Nitrate

  • email
  • Bugzilla
  • JIRA
  • Kerberos realm

please add others that could be done.

Involve tox to test with multiple Python and Django versions

Nitrate currrently is running under Python 2.6 and 2.7. Although they are quite same, still small differences there. Anyway, the point of this issue is that multiple Python versions support is a great enhancement to ensure each release is compatible with the major Python versions being used in the community.

EDIT:

Python: 2.7, 3.5
Django: 1.8, 1.9, 1.10

Improve changelog for reverting data if data lost.

Apply change log for every input, include WebUI and XMLRPC.

Support some command line tools to revert the data from change log, specially, user could specify table and column, with tester, manager, timestamp.

Upgrade supported version of Python and Django

Nitrate was being developed with old version of Python and Django for a long time. Now, we have no reason to keep these old technologies continously, no matter the enhancement supplied by newer release of Python and Django, or the security fixes especially from Django that should benefit any potential users.

Propose version of Python is 2.7, then Django version is 1.7.1 that is the latest released version as of writing this issue.

I have to say I'm not much radical to use most latest technology. That will introduce various problems to either development team and users. Supporting current widely-used technologies is accpetable. Meanwhile, a stable and explicit regular upgrade policy is important.

Modern interface design

Nowadays, Nitrate needs a new and modern interface design, that is the revolution to current old design. It should be much easier to use than now, and be usable in mobile and modern web browser.

Support requirement management

Requirement management is useful for a testcase management system.

  1. support Requirement doc input
  2. requirement could split to items which could link to specific testcase.
  3. test report need support test coverage.

Separate each TestPlan's tab page into standalone page individually instead of using anchor via URL

There are several tab pages within a TestPlan page. Opening a TestPlan is a common operation to users, and usually Cases is the default tab to open. In this case, at the most of time, it's unnecessary to open other tabs to waste resources, and this will boost Nitrate to open a TestPlan and give a quick response.

After separating those to standalone pages, it also helps to apply cache policy upon those are not used frequently.

Upgrade Django to 1.6.11

Curerntly, 1.6.11 would be a good choice to upgrade underlying Django as the first step. Because, 1.6.x is the last version to support Python 2.6.

Meet errors when setup Nitrate on CentOS6.7 with command "python setup.py install"

Hello, I meet one error when I install the TCMS in CentOS 6.7 according to the installing guide.
你好,我按照安装文档在centOS 6.7上安装TCMS遇到如下错误。失败的步骤在这一步 Install from source code

error message below:
报错信息如下:

zip_safe flag not set; analyzing archive contents...
tcms.wsgi: module references __path__
tcms.xmlrpc.__init__: module references __path__
tcms.settings.common: module references __file__
creating 'dist/nitrate-3.8.17-py2.6.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing nitrate-3.8.17-py2.6.egg
removing '/usr/lib/python2.6/site-packages/nitrate-3.8.17-py2.6.egg' (and everything under it)
creating /usr/lib/python2.6/site-packages/nitrate-3.8.17-py2.6.egg
Extracting nitrate-3.8.17-py2.6.egg to /usr/lib/python2.6/site-packages
nitrate 3.8.17 is already the active version in easy-install.pth

Installed /usr/lib/python2.6/site-packages/nitrate-3.8.17-py2.6.egg
Processing dependencies for nitrate==3.8.17
Searching for kombu>=3.0.34,<3.1
Reading http://pypi.python.org/simple/kombu/
Best match: kombu 3.0.35
Downloading https://pypi.python.org/packages/5f/4f/3859b52f6d465d0d4a767516c924ee4f0e1387498ac8d0c30d9942da3762/kombu-3.0.35.tar.gz#md5=6483ac8ba7109ec606f5cb9bd084b6ef
Processing kombu-3.0.35.tar.gz
Running kombu-3.0.35/setup.py -q bdist_egg --dist-dir /tmp/easy_install-_Oe5Dn/kombu-3.0.35/egg-dist-tmp-jD87MN
error: /tmp/easy_install-_Oe5Dn/kombu-3.0.35/requirements/default.txt: No such file or directory
[root@baidu-mgame-online-cq02bcconline1395-1v4-4-1 Nitrate]#

My steps like below:
我的执行步骤如下:

git clone the respository to local.

  • clone仓库到本地
git clone https://github.com/Nitrate/Nitrate.git

install the system dependences with root user

  • 用root用户安装的系统依赖
yum install gcc w3m python-devel mysql-devel krb5-devel libxml2-devel libxslt-devel

install the python dependences with root user

  • 用root用户安装的python依赖
pip install -r requirements/base.txt

meet errors when executing the following command in the repository directory.

  • 在clone下来的仓库目录执行如下操作时报错了
python setup.py install

I find that the errors do not impact my following operations. I can run the TCMS service successfully even if the errors pop up.

Replace tinymce editor with markdown

Currently, the default Text editor is tinymce which is not 'user friendly' for the engineer. I think we should replace the tinymce editor with markdown.

Multiple messaging support

Besides QPID, it would make Nitrate more usable by supporting more messaging brokers, e.g.

  • fedmsg
  • ZeroMQ
  • RabbitMQ
  • ActiveMQ

So far, Nitrate only needs to send messages.

Upgrade Django to 1.9

Currently, 1.9.12 is okay.

This should be done after #113

UPDATE:

Upgraded to Django 1.10.8 eventually.

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.