Tool - MamunOrRashid/Online-Bus-Ticket-Reservation-System GitHub Wiki
Unit Testing
Unit Testing Tools are given below:
NUnit:
- Advantage:
- fast
- test isolation
- environment isolation - use Mock Object-s
- unit testing gives you a safety net when programmers refactor or add functiona-lity
- unit tests can be used as documentation for other prog-rammers
- development process becomes more flexible.
- Disadvantage:
- Unnecessary Unit Tests can lead to considerably high maintenance cost to your overall project.
JUnit:
- Advantage:
- Programmers become more productive
- Increase the Quality of the developed code.
- Easily run regression tests, i.e. run your tests again and again.
- You could write the tests before writing the code.
- Can be composed into a hierarchy of test suits.
- Disadvantage:
- JUnit has disadvantages in different testing areas, a major one being that it can only run tests on one JVM (Java virtual machine).
TestNG:
- Advantage:
- It gives the facility to produce HTML Reports of implementation.
- Annotation have made testers life easier.
- Test case can be Prioritized and Grouped more easily.
- It makes Parallel testing easier.
- Logs can be generated.
- It makes Data Parameterization possible.
- Disadvantage:
- simple
PHPUnit:
- Advantage:
- Your code coverage should more accurately show code that was actually tested. Disadvantage:
- The risks is that sometimes a test is meant to test multiple functions and it would require having multiple @covers annotations
- if you change the method or function name and don't update the @covers annotation, then your code coverage won't cover the function or method you actually tested.
xUnit.net:
- Advantage:
- It Free, open source, community-focused unit testing tool for the .NET Framework
- These frameworks derive their structure and functionality from Smalltalk’s SUnit. Following its introduction in Smalltalk, the framework was ported to Java and it gained wide popularity
- Works with CodeRush, TestDriven.NET, ReSharper and Xamarin.
- Disadvantage:
- XUnit does not appear to have explicit built-in support for external data source-based testing.
EMMA
- Advantages: 1.EMMA is an open-source toolkit for analyzing and reporting code written in Java language. 2.Emma support coverage types like method, line, basic block. 3.It is Java-based so it is without external library dependencies and can access the source code.
JTest
- Advantages: 1.JTest is Unit Testing solution developed and designed by Parasoft. 2.It is highly used for testing Java application and supports static code analysis. 3.It also includes data flow static analysis, metrics analysis, run-time error detection etc. 4.JTest also performs regression testing, end-to-end functional and load testing for complex application.
Mockito:
-
Advantages: 1.No need to write mock objects on your own. 2.Renaming interface method names or reordering parameters will not break the test code as Mocks are created at runtime. 3.Supports return values. 4.Supports exceptions. 5.Supports check on order of method calls. 6.Supports creating mocks using annotation.
-
Disadvantages: 1.Cannot mock final classes 2.Cannot mock final methods - their real behavior is executed without any exception. Mockito cannot warn you about mocking final methods so be vigilant. 3.Cannot mock static methods. 4.Cannot mock constructors.
Arquillian
-
- Advantages: 1. Arquillian is a highly innovative and extendible testing platform for JVM that allows developers to easily create automated integration. 2.Arquillian integrates with familiar testing frameworks such as JUnit 4, TestNG 5 and allows tests to be launched using existing IDE, and because of its modular design it is capable of running Ant and Maven test plugins.
-
- Disadvantages: 1.
Continuous integration tools
Continuous integration Tools are given below:
Buildbot:
## Advantages:
• Highly configurable builds
• Hosted internally
• Free open source
• No external web fonts by default
• They build your code and run your tests without your conscious involvement
• They can build your code and run your tests in multiple environments.
• They provide a de facto set of docs on your build & test environment
• They are evidence that it is possible to build your code and run your tests on at least some platform.
• They can run all the tests, even the slow ones, regularly.
## Disadvantages:
• It's online documentation is very sparse and it is very difficult to find docs for a consistent version number. Most of my gripes are with the Buildbot Website itself more than the product.
• Flexibility comes with a cost and you have to be a programmer to do something beyond trivial. Some of Buildbot extensions were hard to customize and reuse.
• The learning curve to get started with this was much heavier
• Debugging not easy
GitLab CI
## Advantages:
1. It is an integral part of the open-source Rails project GitLab and a free hosted service.
2. It can run on Windows, Linux, OSX, FreeBSD, and Docker.
3. It can run multiple jobs concurrently.
## Disadvantages:
1. GitLab is open core and anyone can contribute changes directly to the codebase.
Jenkins
## Advantages:
1.Jenkins is an open-source CI tool written in Java.
2. Flexible.
3. Jenkins plugin list is very comprehensive.
4. Jenkins prides itself on distributing builds and test loads on multiple machines.
5. Easy installation.
6. Open source with great support
## Disadvantages:
1. UI Interface is very intuitive.
2. Configuration is a bit confusing.
3. Errors messages are not very clear about what went wrong.
Tarvis
## Advantages:
1.Comes with free cloud-based hosting that requires no maintenance or administration
2.Capable of running tests on Linux and Mac OS X simultaneously
3.Supports the following languages: Android, C, C#, C++, Clojure, Crystal, D, Dart, Erlang, Elixir, F#, Go,
Groovy, Haskell, Haxe, Java, JavaScript (with Node.js), Julia, Objective-C, Perl, Perl6, PHP, Python, R,
Ruby, Rust, Scala, Smalltalk and Visual Basic
4.Lightweight and easy to set up
5.Free for open source projects
6.No dedicated server needed
7.Build matrix feature
## Disadvantages:
1.Enterprise plans come with a cost
2.Limited options for customization
##TeamCity
##Advantages
1.TeamCity provides a great integration with git, especially Bitbucket.
2.When a new code release (build) fails TeamCity has a great tool for investigation and troubleshooting.
3.TeamCity provides a user-friendly interface. While some technical knowledge is required to use TeamCity,
the design helps simply things.
##Disadvantages
1.Upgrading TeamCity is a long and manual process.
2.Java skills are needed to fully utilize TeamCity, although they are not necessary for basic or medium-level
use.
#GoCD
##ADvantages
1.Easy Setup for deployment pipeline
2.Environment Variables for each step
3.Supports both Windows and Linux agent
4.Highly customizable
##Disadvantages
1.UI can be improved
2.Location for settings can be re-arranged
3.API for setting up pipeline
CircleCI
Advantages:
1.Automated testing, building and deploying really helped or project in reaching maximum velocity for the
scrum teams.
2.Generous free plans for open source projects easy to set up plenty of features plenty of customization
runs quick.
3.-Docker support is great when using container based builds -Competitive pricing and free tier -Snappy /
Responsive UI.
4.Circle CI is being trusted by FB for React, and Fastlane.
Disadvantages:
1.The tutorials are not yet clear. They don't lead from start to workable CI.
2. Doesn't allow as many languages and environments out of the box as Travis CI does.
3.- config file tends to get verbose and too long .
4.Additional containers are a bit pricey. There are other services offering similar products at much lower
prices.
Codeship
Advantages:
1.The Codeship CI tool belongs to CloudBee, which also has Jenkins in its portfolio.
2.The program is available in two different versions:Basic and Pro.
3.The Basic version offers an easy-to-use web interface.
4. The Pro version is configured with files in the repository.
Disadvantages:
1.Free for up to 100 builds per month for one test pipeline, Otherwise costs $75-1,500 per month.
Bamboo
Advantages :
1.Build Automation.
2.Continuous Integration.
3.Configuration Management.
4.Continuous Deployment.
5.Platforms: Windows, Linux, Mac, Solaris.
Disadvantages:
1.The build plans seem to fail quite frequently. This occurs for no apparent reason. If it fails once, we
will attempt to deploy again. Usually, after 2-3 times it will work.
2.They could improve their pricing model for smaller teams.
3.The soon-to-be lack of a cloud solution loose customer.
Shippable
Advantages:
1.Merge confidently knowing that your build won't break after merging a pull request.
2.Can sign in with your source control credentials. No need to create an account.
3.Build Docker images, push to a Docker registry, or even run Docker compose. one can also deploy to any
Container service of one's choice.
Disadvantages:
1.Currently, Shippable does not allow for build artifacts to be natively deployed to S3.
2. Although it is doable with config file, it is harder to achieve.
Buildkite
Advantages:
1.The Buildkite agent runs on Windows, OSX and Linux. You can also use the Docker container to run nodes
or clusters on any container-enabled platform.
2.Integrates with GitHub and other source control tools, to enable you to implement versioning, forking
and other standard SCM functionality.
3. Buildkite supports many different programming languages, such as Ruby, Haskell, Java and .NET
4. It never accesses your source code, meaning that your custom development and intellectual property are
secure.
Disadvantages:
1.The Buildkite agents communicate with the Buildkite API to poll for work. Network connectivity issues
may impact your builds or testing.
2.While there is a free option for open-source projects, students and teaching organizations, there is a
per-user monthly cost to use the software.
3. Service-level agreements are not available in the standard plan. They require the Enterprise Plan.