Skip to main content

software-testing-best-practices

Explains various software testing methodologies including unit testing, integration testing, and system testing with best practices.

跳到安装

来源信息

仓库
paulpas/agent-skill-router
最近来源活动
2026年6月9日 18:00
检测到的 SKILL.md 语言
英语
星标
4
分支
1

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
software-testing-best-practices
description
Explains various software testing methodologies including unit testing, integration testing, and system testing with best practices.
license
MIT
compatibility
opencode
metadata
{"version":"1.0.0","domain":"software","triggers":"unit testing, integration testing, system testing, testing methodologies, testing frameworks","role":"implementation","scope":"implementation","output-format":"code","related-skills":"software-architecture-overview, software-development-lifecycle","archetypes":"tactical","anti_triggers":"manual tests, ad-hoc testing","response_profile":{"verbosity":"high","directive_strength":"high","abstraction_level":"tactical"}}
# Software Testing Best Practices This skill covers the best practices in software testing methodologies, helping teams to implement rigorous testing strategies throughout the software lifecycle. ## When to Use - During the development phase when verifying functionality. - For quality assurance before deploying software to production. - When implementing automated testing solutions. ## Core Workflow 1. **Select Testing Framework** Choose a framework suitable for the project based on language and requirements. For example, choose JUnit for Java, or NUnit for .NET applications. 2. **Implement Unit Tests** Write unit tests to validate individual components. Example in Python using unittest framework: ```python import unittest class TestSum(unittest.TestCase): def test_sum(self): self.assertEqual(sum([1, 2, 3]), 6) if __name__ == '__main__': unittest.main() ``` 3. **Create Integration Tests** Validate interactions between multiple components. Example using pytest for integration tests: ```python # test_integration.py def test_integration(): assert function_a() == expected_output ``` 4. **System Testing** Conduct system tests to verify the complete and integrated software product. This includes regression testing and performance testing. 5. **Continuous Testing** Integrate tests into the CI/CD pipeline for ongoing verification throughout the development lifecycle. Example command to run tests in Docker: ```bash docker run mytestcontainer pytest ``` ## Implementation Patterns ### Example of Automated Test with CI/CD ```yaml # GitHub Actions workflow for automated testing name: Run Tests on: push: branches: - main jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Set up Python uses: actions/setup-python@v2 with: python-version: '3.x' - run: | pip install -r requirements.txt pytest ``` --- ## TL;DR for Code Generation - **Follow the test pyramid** — Write many fast unit tests (60%+), fewer integration tests, and a handful of critical E2E tests. This balances speed with confidence. - **Automate every layer** — Every new feature should include tests at the unit, integration, and where appropriate, E2E level. - **Use realistic test data** — Avoid fake or placeholder data. Use production-like fixtures that expose edge cases early. - **Run tests in CI, block on failures** — A failing test suite should block merging. No exceptions. - **Keep tests independent** — Tests must be runnable in any order and in parallel. Shared mutable state is the #1 cause of flaky tests. --- ## Implementation Patterns ### Example: Integration Test with Testcontainers Testcontainers spins up real service dependencies (PostgreSQL, Redis, etc.) inside Docker containers for true integration testing: ```python import pytest from testcontainers.postgres import PostgresContainer from sqlalchemy import create_engine, text @pytest.fixture(scope="module") def postgres_container(): """Spin up a real PostgreSQL instance in Docker.""" with PostgresContainer("postgres:16-alpine") as pg: engine = create_engine(pg.get_connection_url()) # Run migrations with engine.begin() as conn: conn.execute(text("CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT)")) conn.execute(text("INSERT INTO users (name) VALUES ('Alice')")) yield engine def test_database_query(postgres_container): """Verify we can query the real database.""" with postgres_container.begin() as conn: result = conn.execute(text("SELECT name FROM users")) names = [row[0] for row in result] assert "Alice" in names assert len(names) == 1 ``` ## Constraints ### MUST DO - Ensure all tests are automated as much as possible. - Implement clear documentation for testing procedures. ### MUST NOT DO - Overlook edge cases in unit tests. - Skip writing tests for new features; testing should be integral. --- ## Live References > Authoritative documentation links for this skill's domain. The model follows markdown links to resolve external references and inline content. - [ASTM G196 — Verification & Validation Guide](https://www.astm.org/g196-03e1) - [IEEE 829 — Software Test Documentation Standard](https://standards.ieee.org/standard/829-2008.html) - [Selenium WebDriver Documentation](https://www.selenium.dev/documentation/) - [pytest Official Guide](https://docs.pytest.org/en/stable/) - [JUnit 5 User Guide](https://junit.org/junit5/docs/current/user-guide/)
在 GitHub 查看