Best of Testing — October 2024
- 1
- 2
Medium·2y
3 Lessons from the Smartest Developers I’ve Worked With
The author shares lessons learned from working with exceptionally smart developers. Key takeaways include the importance of writing unit tests, being thorough in code reviews, and aligning technical decisions with business goals. The post emphasizes learning from others and aiming higher in one's career for better growth.
- 3
ByteByteGo·2y
EP133: API vs SDK
Learn the distinctions between APIs and SDKs, their purposes, and when to use each. Discover Kubernetes' popularity, Terraform workflows for turning code into cloud infrastructure, essential HTTP status codes, and common deployment strategies. Additionally, explore tools like QA Wolf for optimizing QA cycles and New Relic for monitoring AI chatbot performance.
- 4
The React Community·1y
How to Create and Test a React Query Hook for Global Loading Indicators
Learn how to create a custom React Query hook for managing global loading indicators and how to test it with Jest. The tutorial covers using useIsFetching, useIsMutating, and useIsRestoring functions, handling different loading states, and writing comprehensive unit tests.
- 5
Software Testing Magazine·2y
Top 10 Software Testing Trends for 2024
The software testing industry is set to grow at 7% CAGR from 2024-2032, driven by advancements in testing methodologies and tools. Challenges such as scarce talent, poor documentation, and time constraints are common. Emerging trends include scriptless test automation, IoT testing, AI and machine learning in testing, cloud-based testing, and shift-left testing. Technologies like blockchain and big data testing are also becoming crucial. Embracing these trends helps improve efficiency, speed up release cycles, and ensure high-quality software delivery.
- 6
ThePrimeTime·1ySqlite Is Getting So Good
The post dives into a new multi-tenant architecture and issues a scalability challenge for a serverless database based on a fork of SQLite. It emphasizes the advantages of deterministic simulation testing (DST) and highlights the importance of not reinventing the wheel unless mission-critical. It also discusses the application of Rust and its borrow checker for improved safety and performance, the implementation of DST for bug detection, and the decision-making process behind choosing Rust over Zig for the rewrite project.
- 7
- 8
LogRocket·2y
6 AI tools for API testing and development
APIs play a critical role in software systems, requiring significant effort in design, development, and testing to ensure their performance. AI tools can streamline this process by automating test creation, reducing the time from days or weeks to minutes or hours. Tools like Postbot by Postman, LintGPT, IBM API Connect, Apigee, Testsigma, and Katalon Studio are highlighted for their features and capabilities in enhancing API development and testing. Common issues such as AI-generated hallucinations are also discussed, along with strategies to mitigate them.
- 9
Simple Thread·2y
Beyond Microservices: (Mis)Using Linux Containers for Software Testing
Containerization is becoming essential for software testing beyond just building microservices. Containers aid in swift test scenario setup, state control, and scalability. The post highlights various patterns, including using containers for unit, feature, and service tests, controlling test state, testing on different runtimes, and simulating hardware environments. Containers provide a flexible and low-overhead solution, enhancing testing efficiency and enabling comprehensive system validation.
- 10
ITNEXT·1y
Fuzz Testing Go HTTP Services
Fuzz testing, or fuzzing, is an automated software testing technique used to find bugs, crashes, and security vulnerabilities by inputting large amounts of random data into a program. It is now integrated into Go’s standard library as of Go 1.18, making it part of the regular testing package. Fuzz testing can reveal bugs that traditional testing might miss and is a recommended practice for improving the robustness of code, including HTTP services. The post provides step-by-step instructions for creating fuzz tests in Go, including an example for fuzzing HTTP handlers using Go's `httptest` package.
- 11
Baeldung·1y
How to Mock Multiple Responses for the Same Request
Learn how to use MockServer to simulate multiple responses for the same API request, particularly for a payment processing system. This setup helps test the application's polling mechanism without requiring actual backend services. The guide covers defining the payment request model, integrating with the bank's payment service, and validating the polling logic by mocking different payment statuses.
- 12
Community Picks·1y
The Secret of Unit Testing I Learned by Failing
The focus on micromanaging implementations in unit tests can leave genuine bugs unnoticed. The author demonstrates this by showing ineffective unit tests and then presents a simpler yet effective method for writing them. Emphasizing the importance of testing critical public attributes rather than overcomplicating with unnecessary details, the author advocates for straightforward code and effective collaboration among programmers.
- 13
Three Dots Labs·1y
Optimising and Visualising Go Tests Parallelism: Why more cores don't speed up your Go tests
Optimizing Go tests can significantly speed up their execution. Visualizing test output is crucial for understanding inefficiencies, which can be addressed by using tools like 'vgt'. The post highlights the nuances of utilizing parallelism in Go tests using `t.Parallel()` and the `-parallel` flag, showcasing how default settings often don't maximize test speed due to CPU-bound limitations. It also explains best practices for configuring and linting tests to run efficiently in CI environments.
- 14
Deno·1y
All-in-one tooling for JavaScript and TypeScript development
Dino simplifies JavaScript and TypeScript development by including built-in tools for formatting, linting, and testing, saving developers time on configuration. It supports automatic code formatting, built-in linting similar to ESLint, and comprehensive testing capabilities with code coverage reporting, all without needing third-party dependencies.
- 15
Docker·1y
Model-Based Testing with Testcontainers and Jqwik
Model-based testing (MBT) automates test case generation by modeling expected software behavior. Using jqwik and Testcontainers for regression testing, the method efficiently covers edge cases, improving software reliability. By leveraging actions and sequences, the approach rapidly tests numerous requests, ensuring application states remain consistent across different environments.
- 16
Programming Digest·2y
Practices of Reliable Software Design
The post explores various practices for reliable software design, including building high-performance in-memory caches and understanding the CAP Theorem in distributed systems. It also covers the efficiency of different data structures for associative arrays, highlights tools for speeding up code reviews with AI, and addresses the impact of deployment speed on productivity.
- 17
Awesome Go·2y
Avoid inaccurate tests: Use httptest when testing HTTP handlers in Go
Testing HTTP handlers in Go involves wrapping inputs in HTTP requests and writing responses to http.ResponseWriter. Using client-side requests for handler tests can lead to inaccuracies; instead, use the httptest package to construct server-side requests with httptest.NewRequest or httptest.NewRequestWithContext. For capturing responses, httptest.NewRecorder provides a mock implementation of http.ResponseWriter. Always use a new response recorder for each handler call and extract responses using the Result method.
- 18
Semaphore·2y
The Arrange, Act, and Assert (AAA) Pattern in Unit Test Automation
The Arrange-Act-Assert (AAA) pattern is a popular method for structuring unit tests to enhance their reliability, maintainability, and readability. This approach involves three distinct phases: arranging the test environment, executing the functionality to be tested, and verifying the outcomes. The pattern, originally proposed in the early 2000s, is language-agnostic and supports better code organization, readability, and refactoring. It also aligns well with Test-Driven Development (TDD) principles and is widely regarded as an industry standard for effective test automation.
- 19
Laravel News·2y
Pest Route Testing Plugin for Laravel Applications
The pest-plugin-route-testing for Pest enables efficient route testing in Laravel applications. It offers methods to filter, include, exclude, and bind users to routes for testing purposes. The package ensures routes return a 200 status code through various customizable options, and it can be easily installed via Composer.
- 20
Codemotion·1y
Fail Fast: when failure is a win
Fail Fast is a methodology in software development aimed at quickly identifying limitations and critical issues to make timely decisions. It is particularly useful in contexts like IoT where there are many variables. The approach often involves Proof of Concept tests, challenging solutions under conditions that could lead to failure. This strategy helps prevent problems from accumulating and becoming unmanageable, ensuring better project outcomes.
- 21
NVIDIA Developer·1y
Building AI Agents to Automate Software Test Case Creation
NVIDIA's DriveOS team has developed Hephaestus (HEPH), a generative AI framework to automate the creation of software test cases. By leveraging large language models (LLMs), HEPH reduces the manual labor involved in test creation, making the process faster and more efficient. The framework handles everything from document traceability to generating and executing context-aware tests. The post highlights the potential of HEPH in saving time, improving test coverage, and supporting multiple input formats. Future enhancements include modularity and interactive feedback for greater flexibility and accuracy in test generation.
- 22
Agile Testing·2y
The Agile Testing Quadrants
The Agile Testing Quadrants serve as a planning and execution tool to help teams ensure adequate test coverage and build quality. Originating from Brian Marick and popularized by Janet Gregory and Lisa Crispin, these quadrants have evolved over the years. The post encourages using the latest version of the quadrants shared in their book and appreciates suggestions for future updates.
- 23
LogRocket·2y
Playwright Extra: extending Playwright with plugins
Playwright Extra extends the Playwright framework by adding plugin support, enabling capabilities such as stealth browsing, CAPTCHA solving, and proxy management. With over 6.4k stars on GitHub, the tool is gaining popularity for automating web applications across various browsers. The post provides a setup guide for Playwright Extra and detailed usage instructions for its plugins, including puppeteer-extra-plugin-stealth, puppeteer-extra-plugin-recaptcha, and plugin-proxy-router. The guide also covers usage with JavaScript and TypeScript for both basic and advanced automation scenarios.
- 24
Baeldung·1y
Analyzing JMeter Results
The post discusses methods to analyze Apache JMeter test results, highlighting the importance of monitoring both the service under test and the client tool executing the test. It explains various built-in options and community plugins for producing advanced reports. It details the use of backend listener clients to store results in external databases and the risks and complexities of using hosted services like Grafana. The tutorial demonstrates how to utilize JMeter plugins and report listeners to gather and visualize comprehensive performance metrics. Finally, it covers generating HTML reports through JMeter Dashboard Report GUI for better visualization.
- 25
Storybook·2y
React Native Storybook 8
React Native Storybook 8.3 has been released, unifying its release schedule with the web version for the first time. Key features include a brand new mobile UI, a new widescreen layout, simplified Metro configuration, improved hot-reloading, and stable support for React Native Web. The update ensures parity between the React Native and web versions, making it easier for teams to work seamlessly across both platforms.