Skip to content

Commit

Permalink
Update testing-frameworks.md
Browse files Browse the repository at this point in the history
For code analysis, for static analysis, PMD supports Java, JavaScript, Salesforce.com Apex and Visualforce, Modelica, PLSQL, Apache Velocity, HTML, XML and XSL. However, it doesn't support Python, C#, C/C++. I revised the list accordingly. 

I also added several additional testing frameworks and tools that might be helpful.
  • Loading branch information
yunks128 authored Oct 5, 2023
1 parent fa24e63 commit 746b11f
Showing 1 changed file with 167 additions and 115 deletions.
282 changes: 167 additions & 115 deletions docs/guides/software-lifecycle/continuous-testing/testing-frameworks.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,119 +3,171 @@ title: Testing Frameworks
sidebar_label: Testing Frameworks
---


* Continuous Testing
* For Development APIs
* For module testing (xUnit)
* Using (Java) [JUnit](https://junit.org/junit5/)
* Using (Python) [PyUnit](https://docs.python.org/3/library/unittest.html#module-unittest)
* Using (C#) [NUnit](https://nunit.org/)
* Using (C/C++) [cUnit](http://cunit.sourceforge.net/)/[CppUnit](https://freedesktop.org/wiki/Software/cppunit/)
* For mocking, stubbing and simulating test services
* Using Java
* Using [Mockito](https://site.mockito.org/)
* Using [EasyMock](https://easymock.org/)
* Using [JMock](http://jmock.org/)
* Using Python
* Using [PyTest](https://docs.pytest.org/)
* Using [Nose2](https://docs.nose2.io/en/latest/)
* Using [Mock](https://mock.readthedocs.io/en/latest/)
* Using C#
* Using [Moq](https://github.com/moq/moq)
* Using [NSubstitute](https://nsubstitute.github.io/)
* Using [FakeItEasy](https://fakeiteasy.github.io/)
* Using C/C++
* Using [CMock](https://github.com/ThrowTheSwitch/CMock)
* Using [cpp-stub](https://github.com/coolxv/cpp-stub)
* Using [googletest](https://github.com/google/googletest)
* For Code Analysis
* For static analysis
* Using Java
* Using [Checkstyle](https://checkstyle.sourceforge.io/)
* Using [Spotbugs](https://github.com/spotbugs/spotbugs)
* Using [PMD](https://github.com/pmd/pmd)
* Using Python
* Using [PyLint](https://pylint.pycqa.org/en/latest/)
* Using [Pyflakes](https://github.com/PyCQA/pyflakes)
* Using [PMD](https://github.com/pmd/pmd)
* Using C#
* Using [StyleCop](https://github.com/StyleCop/StyleCop)
* Using [Gendarme](https://www.mono-project.com/docs/tools+libraries/tools/gendarme/)
* Using [PMD](https://github.com/pmd/pmd)
* Using C/C++
* Using [CppCheck](https://github.com/danmar/cppcheck)
* Using [Clang Static Analyzer](https://clang-analyzer.llvm.org/) / [tidy](https://clang.llvm.org/extra/clang-tidy/)
* Using [PMD](https://github.com/pmd/pmd)
* For dynamic analysis
* For test coverage
* Using Java
* Using [Jacoco](https://www.jacoco.org/jacoco/)
* Using [Cobertura](https://github.com/cobertura/cobertura)
* Using Python
* Using [Coverage](https://github.com/nedbat/coveragepy)
* Using [PyTest-cov](https://github.com/pytest-dev/pytest-cov)
* Using C#
* Using [AltCover](https://github.com/SteveGilham/altcover)
* Using [NCover](http://ncover.sourceforge.net/)
* Using C/C++
* Using [lcov](https://github.com/linux-test-project/lcov)
* Using [OpenCppCoverage](https://github.com/OpenCppCoverage/OpenCppCoverage)
* For complexity analysis and runtime performance
* Using Java
* Using [JMeter](https://jmeter.apache.org/)
* Using [JProfiler](https://www.ej-technologies.com/products/jprofiler/overview.html)
* Using [JPF](https://github.com/javapathfinder/jpf-core)
* Using Python
* Using [Scalene](https://github.com/plasma-umass/scalene)
* Using [trace](https://docs.python.org/3/library/trace.html)/[inspect](https://docs.python.org/3/library/inspect.html)/[pdb](https://docs.python.org/3/library/pdb.html)
* Using C#
* Using [Performance Profiler](https://docs.microsoft.com/en-us/visualstudio/profiling/profiling-feature-tour?view=vs-2022#analyze-performance-legacy-tools)
* Using [Parasoft Dottest](https://www.parasoft.com/products/parasoft-dottest/)
* Using [ANTS Profiler](https://www.red-gate.com/products/dotnet-development/ants-performance-profiler/)
* Using C/C++
* Using [Valgrind](https://valgrind.org/)
* Using [Gcov](https://gcc.gnu.org/onlinedocs/gcc/Gcov.html)
* For security
* Using [Scrub/Coverity/CodeQL](https://nasa.github.io/scrub/usage.html#supported-cots-tools-and-languages)
* Using [SonarQube](https://www.sonarqube.org/)
* For Web Applications
* For Service Endpoints (APIs)
* For RESTful endpoints
* Using [JMeter](https://jmeter.apache.org/)
* Using [Postman](https://www.postman.com/)
* Using [REST Assured (REST, RPC)](https://rest-assured.io/)
* Using [SOAPUI](https://www.soapui.org/)
* Using RPC/remote processing
* Using [Powershell](https://devblogs.microsoft.com/scripting/testing-rpc-ports-with-powershell-and-yes-its-as-much-fun-as-it-sounds/)
* Using [PortQry Interactive](https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/portqry-command-line-port-scanner-v2#step-2-specialized-tests)
* For User Interfaces (UIs)
* Using [Robot Framework](https://robotframework.org/)
* Using [Selenium variants \[Cucumber, etc.\]](https://github.com/SeleniumHQ/selenium)
* Using [Cypress](https://www.cypress.io/)
* Using [Playwright](https://github.com/microsoft/playwright)
* For Performance testing
* Using [JMeter](https://jmeter.apache.org/)
* Using [Robot Framework](https://robotframework.org/)
* Using [Cucumber Open](https://cucumber.io/tools/cucumber-open/)
* Using [Chaos Monkey](https://netflix.github.io/chaosmonkey/)
* For Mobile
* Using all platforms
* Using [Appium](https://appium.io/)
* Using Android
* Using [Selenium/Selendroid](http://selendroid.io/)
* Using [Espresso](https://developer.android.com/training/testing/espresso)
* Using iOS
* Using [Selenium/ios-driver](http://ios-driver.github.io/ios-driver/)
* Using [XCTest](https://developer.apple.com/documentation/xctest)
* For Reporting
* For unified analyses (dynamic and static)
* Using [SonarQube](https://www.sonarqube.org/)
* Using [Scrub/Unified](https://nasa.github.io/scrub/usage.html#supported-cots-tools-and-languages)
* For status reporting
* Using [Testrail API reporting](https://www.gurock.com/testrail/)
* Using [Jenkins](https://www.jenkins.io/) with [Code Coverage API Plugin](https://plugins.jenkins.io/code-coverage-api/)
* Using [Travis CI](https://travis-ci.org/) with [Code Climate](https://docs.travis-ci.com/user/code-climate/) or [Codecov](https://about.codecov.io/tool/travis-ci/)
* For real-time validation and stability
* Using [Jenkins](https://www.jenkins.io/)
* Using [GitHub Actions](https://github.com/features/actions)
* Using [Docker Container](https://docs.docker.com/get-started/)
* For Development APIs
* For Module Testing (xUnit)
- **Java**
- [JUnit](https://junit.org/): A popular Java testing framework for unit and integration testing.
- **Python**
- [PyUnit](https://docs.python.org/3/library/unittest.html#module-unittest): The built-in unit testing library for Python.
- **C#**
- [NUnit](https://nunit.org/): A widely used testing framework for .NET applications.
- **C/C++**
- [cUnit](http://cunit.sourceforge.net/)/[CppUnit](https://freedesktop.org/wiki/Software/cppunit/): Testing frameworks for C/C++.

- For Mocking, Stubbing, and Simulating Test Services
- **Java**
- [Mockito](https://site.mockito.org/): A Java mocking framework for unit testing.
- [EasyMock](https://easymock.org/): A library for creating mock objects in unit tests.
- [JMock](http://jmock.org/): A framework for mocking Java interfaces.
- **Python**
- [PyTest](https://docs.pytest.org/): A popular Python testing framework with mocking support.
- [Nose2](https://docs.nose2.io/en/latest/): A test discovery and execution framework for Python.
- [Mock](https://mock.readthedocs.io/en/latest/): A Python library for mocking objects and behavior.
- **C#**
- [Moq](https://github.com/moq/moq): A mocking framework for .NET.
- [NSubstitute](https://nsubstitute.github.io/): A friendly substitute for .NET mocking libraries.
- [FakeItEasy](https://fakeiteasy.github.io/): An easy-to-use mocking framework for .NET.
- **C/C++**
- [CMock](https://github.com/ThrowTheSwitch/CMock): A mocking framework for C.
- [cpp-stub](https://github.com/coolxv/cpp-stub): A C++ mocking framework.
- [googletest](https://github.com/google/googletest): The Google C++ Testing Framework.
- **HTTP Services**
- [WireMock](http://wiremock.org/): A tool for mocking HTTP services, useful for simulating APIs and services during testing.

- For Code Analysis
- For Static Analysis
- **Java**
- [Checkstyle](https://checkstyle.sourceforge.io/): A tool for checking Java code against coding standards.
- [Spotbugs](https://github.com/spotbugs/spotbugs): A static analysis tool for Java bytecode.
- [PMD](https://github.com/pmd/pmd): A source code analyzer for Java, JavaScript, and more.
- [FindBugs](http://findbugs.sourceforge.net/): A Java-based tool that detects common bugs in Java code.
- **Python**
- [PyLint](https://pylint.pycqa.org/en/latest/): A Python static code analysis tool.
- [Pyflakes](https://github.com/PyCQA/pyflakes): A lightweight Python code checker.
- [ESLint](https://eslint.org/): A widely used JavaScript and TypeScript linting tool for identifying and fixing code issues.
- **C#**
- [StyleCop](https://github.com/StyleCop/StyleCop): A style checker for C# code.
- [Gendarme](https://www.mono-project.com/docs/tools+libraries/tools/gendarme/): An extensible rule-based tool to find problems in .NET code.
- **C/C++**
- [CppCheck](https://github.com/danmar/cppcheck): A static analysis tool for C/C++.
- [Clang Static Analyzer](https://clang-analyzer.llvm.org/) / [tidy](https://clang.llvm.org/extra/clang-tidy/): Analyzers for C/C++ code.

- For Dynamic Analysis
- For Test Coverage
- **Java**
- [Jacoco](https://www.jacoco.org/jacoco/): A Java code coverage library.
- [Cobertura](https://github.com/cobertura/cobertura): A Java code coverage tool.
- **Python**
- [Coverage](https://github.com/nedbat/coveragepy): A Python code coverage measurement tool.
- [PyTest-cov](https://github.com/pytest-dev/pytest-cov): A PyTest plugin for coverage reporting.
- **C#**
- [AltCover](https://github.com/SteveGilham/altcover): A .NET code coverage tool.
- [NCover](http://ncover.sourceforge.net/): A code coverage tool for .NET.
- **C/C++**
- [lcov](https://github.com/linux-test-project/lcov): A code coverage tool for Linux.
- [OpenCppCoverage](https://github.com/OpenCppCoverage/OpenCppCoverage): An open-source C++ code coverage tool.
- **JavaScript/TypeScript**
- [Istanbul](https://istanbul.js.org/): A code coverage tool for JavaScript and TypeScript.
- [Jest Coverage](https://jestjs.io/docs/configuration#coverage): Code coverage support in Jest.

- For Complexity Analysis and Runtime Performance

- **Java**
- [JMeter](https://jmeter.apache.org/): An Apache tool for performance testing.
- [JProfiler](https://www.ej-technologies.com/products/jprofiler/overview.html): A Java profiler.
- [JPF](https://github.com/javapathfinder/jpf-core): The Java PathFinder model checker.
- **Python**
- [Scalene](https://github.com/plasma-umass/scalene): A high-performance profiler for Python.
- [trace](https://docs.python.org/3/library/trace.html)/[inspect](https://docs.python.org/3/library/inspect.html)/[pdb](https://docs.python.org/3/library/pdb.html): Python debugging tools.
- **C#**
- [Performance Profiler](https://docs.microsoft.com/en-us/visualstudio/profiling/profiling-feature-tour?view=vs-2022#analyze-performance-legacy-tools): Profiling tools in Visual Studio.
- [Parasoft Dottest](https://www.parasoft.com/products/parasoft-dottest/): A .NET code quality and security testing tool.
- [ANTS Profiler](https://www.red-gate.com/products/dotnet-development/ants-performance-profiler/): A .NET profiler.
- **C/C++**
- [Valgrind](https://valgrind.org/): A programming tool for memory analysis and profiling.
- [Gcov](https://gcc.gnu.org/onlinedocs/gcc/Gcov.html): A code coverage tool for GCC.

- For Security

- [Scrub/Coverity/CodeQL](https://nasa.github.io/scrub/usage.html#supported-cots-tools-and-languages): Tools for code analysis and security scanning.
- [SonarQube](https://www.sonarqube.org/): An open-source platform for continuous inspection of code quality.
- [OWASP ZAP](https://www.zaproxy.org/): An open-source security testing tool for finding web application vulnerabilities.
- [Burp Suite](https://portswigger.net/burp): A popular security testing tool for web application security assessment.

- For Web Applications

- For Service Endpoints (APIs)

- For RESTful Endpoints

- [JMeter](https://jmeter.apache.org/): An Apache tool for performance testing.
- [Postman](https://www.postman.com/): A popular API testing tool.
- [REST Assured](https://rest-assured.io/): A Java library for RESTful API testing.
- [SOAPUI](https://www.soapui.org/): A comprehensive API testing tool.
- For RPC/Remote Processing
- [Powershell](https://devblogs.microsoft.com/scripting/testing-rpc-ports-with-powershell-and-yes-its-as-much-fun-as-it-sounds/): PowerShell for testing RPC ports.
- [PortQry Interactive](https://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/portqry-command-line-port-scanner-v2#step-2-specialized-tests): Command-line port scanner.
- For User Interfaces (UIs)
- [Robot Framework](https://robotframework.org/): An open-source test automation framework.
- [Selenium](https://www.selenium.dev/): A popular web testing framework.
- [Cypress](https://www.cypress.io/): An end-to-end testing framework.
- [Playwright](https://github.com/microsoft/playwright): A browser automation library.
- [Serenity BDD](https://serenity-bdd.info/): A test automation framework that combines Selenium, JUnit, and BDD practices.
- [Allure](http://allure.qatools.ru/): An open-source framework for test report generation with interactive and informative reports.


- For Performance Testing
- [JMeter](https://jmeter.apache.org/): An Apache tool for performance testing.
- [Gatling](https://gatling.io/): A high-performance load testing tool.
- [Locust](https://locust.io/): An open-source load testing tool.
- [Chaos Monkey](https://netflix.github.io/chaosmonkey/): A tool for testing system resilience.
- [Robot Framework](https://robotframework.org/): An open-source test automation framework.
- [Cucumber Open](https://cucumber.io/tools/cucumber-open/): A collaboration and automation platform for Behavior-Driven Development (BDD).

- For Mobile Testing

- For All Platforms
- [Appium](https://appium.io/): An open-source mobile automation framework.

- For Android
- [Selenium/Selendroid](http://selendroid.io/): Selenium-based testing for Android.
- [Espresso](https://developer.android.com/training/testing/espresso): Google's native UI testing framework for Android.

- For iOS
- [Selenium/ios-driver](http://ios-driver.github.io/ios-driver/): Selenium-based testing for iOS.
- [XCTest](https://developer.apple.com/documentation/xctest): Apple's native framework for UI testing on iOS devices.

- For Reporting

- For Unified Analyses (Dynamic and Static)
- [SonarQube](https://www.sonarqube.org/): An open-source platform for continuous inspection of code quality.
- [Scrub/Unified](https://nasa.github.io/scrub/usage.html#supported-cots-tools-and-languages): Tools for code analysis and security scanning.

- For Status Reporting
- [Testrail API Reporting](https://www.gurock.com/testrail/): Test management and reporting tool.
- [Jenkins](https://www.jenkins.io/): A widely used automation server.
- [Code Coverage API Plugin](https://plugins.jenkins.io/code-coverage-api/): Jenkins plugin for code coverage reporting.
- [Travis CI](https://travis-ci.org/): A cloud-based CI/CD platform.
- [Code Climate](https://docs.travis-ci.com/user/code-climate/): An automated code review platform.
- [Codecov](https://about.codecov.io/tool/travis-ci/): A code coverage reporting tool.

- For Real-time Validation and Stability
- [Jenkins](https://www.jenkins.io/): An automation server for building, testing, and deploying.
- [GitHub Actions](https://github.com/features/actions): CI/CD workflows powered by GitHub.
- [Docker Container](https://docs.docker.com/get-started/): Containerization technology for managing test environments.

- For AI/ML Testing
- [TensorFlow Test](https://www.tensorflow.org/tfx): A testing framework for machine learning models developed using TensorFlow.

- For Cross-Browser Testing
- [BrowserStack](https://www.browserstack.com/): A cloud-based cross-browser testing platform.
- [Sauce Labs](https://saucelabs.com/): A cloud-based testing platform for web and mobile applications.
- [CrossBrowserTesting](https://crossbrowsertesting.com/): A cross-browser testing tool by SmartBear.

- For Continuous Integration and Deployment
- [GitLab CI/CD](https://docs.gitlab.com/ee/ci/): An integrated CI/CD solution provided by GitLab.
- [CircleCI](https://circleci.com/): A cloud-based CI/CD platform that supports automating the testing and deployment of software.

- For Containerization and Orchestration
- [Kubernetes](https://kubernetes.io/): A container orchestration platform for managing containerized applications.

0 comments on commit 746b11f

Please sign in to comment.