{"id":26234578,"url":"https://github.com/yahya123-hub/api-performance-testing-jsonplaceholder","last_synced_at":"2026-04-22T12:04:01.983Z","repository":{"id":281689396,"uuid":"922475703","full_name":"Yahya123-hub/API-Performance-Testing-JsonPlaceholder","owner":"Yahya123-hub","description":"This project focuses on performance testing of the JSONPlaceholder API using JMeter, Jenkins, and Postman. The objective was to evaluate API response times, concurrency handling, and overall system stability under different loads.","archived":false,"fork":false,"pushed_at":"2025-03-10T16:09:57.000Z","size":3155,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-27T22:44:24.663Z","etag":null,"topics":["apitesting","jenkins","jmeter","load-testing","performance-testing","postman","stress-testing"],"latest_commit_sha":null,"homepage":"https://jsonplaceholder.typicode.com/guide/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Yahya123-hub.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-26T10:14:55.000Z","updated_at":"2025-03-10T16:11:47.000Z","dependencies_parsed_at":"2025-03-10T17:35:29.173Z","dependency_job_id":null,"html_url":"https://github.com/Yahya123-hub/API-Performance-Testing-JsonPlaceholder","commit_stats":null,"previous_names":["yahya123-hub/performance-api-testing---jsonplaceholder"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Yahya123-hub/API-Performance-Testing-JsonPlaceholder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yahya123-hub%2FAPI-Performance-Testing-JsonPlaceholder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yahya123-hub%2FAPI-Performance-Testing-JsonPlaceholder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yahya123-hub%2FAPI-Performance-Testing-JsonPlaceholder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yahya123-hub%2FAPI-Performance-Testing-JsonPlaceholder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Yahya123-hub","download_url":"https://codeload.github.com/Yahya123-hub/API-Performance-Testing-JsonPlaceholder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Yahya123-hub%2FAPI-Performance-Testing-JsonPlaceholder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32135189,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-22T08:34:57.708Z","status":"ssl_error","status_checked_at":"2026-04-22T08:34:55.583Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apitesting","jenkins","jmeter","load-testing","performance-testing","postman","stress-testing"],"created_at":"2025-03-13T02:19:26.163Z","updated_at":"2026-04-22T12:03:56.973Z","avatar_url":"https://github.com/Yahya123-hub.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"## 📌 Overview\nThis project focuses on **performance testing** of the [JSONPlaceholder API](https://jsonplaceholder.typicode.com/) using **JMeter, Jenkins, and Postman**. The objective was to evaluate API response times, concurrency handling, and overall system stability under different loads.\n\n## 📂 Repository Contents\n- **JMeter Test Plan (`jsonplaceholder-jmeter.jmx`)** – The JMeter script defining multiple thread groups for different test scenarios.\n- **Postman Collection (`jsonplaceholder-postman.json`)** – API functional test cases before performance testing.\n- **Test Reports (`jmeter-report/`)** – Load test results including response time, throughput, and error rate.\n- **Jenkins Pipeline (`Jenkinsfile`)** – Automated performance testing setup using Jenkins.\n- **Screenshots (`screenshots/`)** – Key insights from test executions.\n\n## 📝 Performance Testing Strategy\n- **API Tested**: JSONPlaceholder (Simulated REST API)\n- **Test Approach**:\n  1. **Functional Verification** – Ensured API endpoints were responding correctly using **Postman**.\n  2. **Load Testing** – Simulated multiple concurrent users making requests.\n  3. **Stress Testing** – Pushed the API beyond its limits to observe failure points.\n  4. **Spike Testing** – Sent an extreme number of requests suddenly to test how the API handles traffic spikes.\n\n## 🔄 JMeter Thread Groups \u0026 Test Scenarios\nWe structured the JMeter test plan using **multiple thread groups** to simulate different load conditions:\n\n### **1️⃣ Baseline Performance Test**\n- **Thread Group**: Single user sending sequential API requests.\n- **Goal**: Establish a baseline response time without load.\n\n### **2️⃣ Concurrent User Load Test**\n- **Thread Group**: 50 virtual users.\n- **Ramp-up Time**: 10 seconds.\n- **Loop Count**: Continuous requests for 5 minutes.\n- **Goal**: Measure average response time and throughput under normal load.\n\n### **3️⃣ Stress Test**\n- **Thread Group**: 200 virtual users.\n- **Ramp-up Time**: 30 seconds.\n- **Duration**: 10 minutes.\n- **Goal**: Identify breaking points and API failure rate under heavy load.\n\n### **4️⃣ Spike Test**\n- **Thread Group**: 500 virtual users.\n- **Ramp-up Time**: 5 seconds (sudden spike).\n- **Goal**: Observe how the API handles a sudden surge in traffic.\n\n### **5️⃣ Endurance Test**\n- **Thread Group**: 100 users.\n- **Test Duration**: 1 hour.\n- **Goal**: Assess API performance over an extended period.\n\n## ⚙️ Tools \u0026 Technologies\n- **JMeter**: Designed and executed performance tests.\n- **Postman**: Verified API responses before performance testing.\n- **Jenkins**: Automated performance test execution via CI/CD pipeline.\n- **CSV Data Config**: Used parameterized requests with different test data.\n- **Listeners**:\n  - **Summary Report**: Aggregated test metrics.\n  - **View Results Tree**: Debugging individual request responses.\n  - **Graph Results**: Visual representation of API response trends.\n\n## 📊 Key Performance Metrics\n- **Response Time** – Average and 90th percentile response time.\n- **Throughput** – Requests per second handled by the API.\n- **Error Rate** – Percentage of failed requests.\n- **CPU \u0026 Memory Impact** – Observed system resource usage during high load.\n\n## 🎯 Key Learnings\n- Designing structured performance test plans with **multiple thread groups**.\n- Configuring **JMeter listeners and timers** for accurate results.\n- Automating performance testing using **Jenkins pipelines**.\n- Identifying **performance bottlenecks and optimizing API response times**.\n\n## 🚀 How to Use\nClone the repository\n\nRun Postman Tests\n\nImport jsonplaceholder-postman.json and verify API responses.\n\nRun JMeter Tests\n\nOpen Apache JMeter and load jsonplaceholder-jmeter.jmx.\n\nSelect different thread groups to execute specific load tests.\n\nView real-time results using Graph Results \u0026 Summary Report.\n\nRun Automated Tests via Jenkins:\n\nUse the provided Jenkinsfile to integrate JMeter into Jenkins.\n\nMonitor test execution and reports from Jenkins dashboard.\n\nAnalyze Performance Reports:\n\nNavigate to jmeter-report/ for detailed test results.\n\n![jjp (5)](https://github.com/user-attachments/assets/37729f89-8a74-4e58-bc84-64f3fc029fc4)\n![jjp (6)](https://github.com/user-attachments/assets/600487da-8258-43a5-8206-0b09bf888aa2)\n![jjp (2)](https://github.com/user-attachments/assets/5797f22d-03f9-4fe9-991c-bdda4599c900)\n![jjp (7)](https://github.com/user-attachments/assets/86bd3a51-1c83-4817-8c34-2f3b3dc7444a)\n![jjp (4)](https://github.com/user-attachments/assets/9fd78a50-d205-4146-b27e-41612224ab15)\n![jjp (3)](https://github.com/user-attachments/assets/1015314d-1826-4e7a-b64f-c0a5867777cd)\n![jjp (1)](https://github.com/user-attachments/assets/758e6538-bfff-4441-99a5-d611da855f5e)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyahya123-hub%2Fapi-performance-testing-jsonplaceholder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyahya123-hub%2Fapi-performance-testing-jsonplaceholder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyahya123-hub%2Fapi-performance-testing-jsonplaceholder/lists"}