惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
Forbes - Security
Forbes - Security
The Last Watchdog
The Last Watchdog
TaoSecurity Blog
TaoSecurity Blog
Schneier on Security
Schneier on Security
SecWiki News
SecWiki News
V
Vulnerabilities – Threatpost
Project Zero
Project Zero
O
OpenAI News
W
WeLiveSecurity
Security Archives - TechRepublic
Security Archives - TechRepublic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
H
Hacker News: Front Page
Cisco Talos Blog
Cisco Talos Blog
Spread Privacy
Spread Privacy
Help Net Security
Help Net Security
P
Privacy & Cybersecurity Law Blog
K
Kaspersky official blog
S
Security @ Cisco Blogs
Latest news
Latest news
AWS News Blog
AWS News Blog
U
Unit 42
Martin Fowler
Martin Fowler
阮一峰的网络日志
阮一峰的网络日志
S
Secure Thoughts
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Know Your Adversary
Know Your Adversary
Scott Helme
Scott Helme
博客园 - 司徒正美
B
Blog RSS Feed
C
Check Point Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
D
Docker
Google Online Security Blog
Google Online Security Blog
Jina AI
Jina AI
aimingoo的专栏
aimingoo的专栏
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Last Week in AI
Last Week in AI
月光博客
月光博客
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
SegmentFault 最新的问题
NISL@THU
NISL@THU
T
The Blog of Author Tim Ferriss
C
Cisco Blogs
Attack and Defense Labs
Attack and Defense Labs
小众软件
小众软件

Datadog | The Monitor blog

Introducing our open source AI-native SAST Instrument and monitor Boomi integration flows with OpenTelemetry and Datadog Not all index scans are equal: How we cut query latency by over 99% Platform engineering metrics: What to measure and what to ignore Integrate Recorded Future threat intelligence with Datadog Cloud SIEM CI/CD security: threat modeling using a MITRE-style threat matrix CI/CD security: How to secure your GitHub ecosystem Ingress NGINX is EOL: A practical guide for migrating to Kubernetes Gateway API Operating agentic AI with Amazon Bedrock AgentCore and Datadog LLM Observability: Lessons from NTT DATA Introducing the Datadog Code Security MCP Capture and analyze custom heatmaps in Session Replay Understand session replays faster with AI summaries and smart chapters Monitor ClickHouse query performance with Datadog Database Monitoring How we designed empathetic alert sounds for on-call engineers Search and act across Datadog to resolve issues faster with Bits Assistant Measure the business impact of every product change with Datadog Experiments Analyzing round trip query latency Configuring JavaScript caches for better performance Introducing Bits AI Dev Agent for Code Security Datadog achieves ISO 42001 certification for responsible AI Monitor Nutanix clusters, hosts, and VMs with Datadog Monitor Juniper Mist in Datadog A new Host Map for modern infrastructure Annotate traces to improve LLM quality with Datadog LLM Observability What’s new in Cloud SIEM: AI-powered investigations, enhanced threat intelligence, and scalable security operations Explore Kubernetes with native OpenTelemetry data Monitor Oracle Fusion Cloud Applications with Datadog Announcing the Datadog Terraform provider v4.0.0 Scaling Kubernetes workloads on custom metrics How to design cloud environments for AI-powered threat analysis Monitor Aruba Central in Datadog How we centralize and remediate risks with Datadog Case Management Accelerate incident response with Datadog and ServiceNow Monitor your application and network load balancer logs Understanding Karpenter architecture for Kubernetes autoscaling Tools for collecting metrics and logs from Karpenter Monitor Karpenter with Datadog What your product data is actually saying Key metrics for monitoring Karpenter Securing Datadog’s platform in the AI age: The role of observability data Four ways engineering teams use the Datadog MCP Server to power AI agents Approaching your observability migration with the right mindset Meet the new Bits AI SRE: Deeper reasoning, twice as fast Key learnings from the 2026 State of DevSecOps study Use plain English to query your multi-cloud infrastructure in Resource Catalog Simplifying troubleshooting across the user journey with Datadog Synthetic Monitoring Protect your OCI resources with Datadog Cloud Security This Month in Datadog - February 2026 Amazon EC2 security: How misconfigured and public AMIs expand your cloud attack surface Enable end-to-end visibility into your Java apps with a single command Measure and improve mobile app startup performance with Datadog RUM Evaluating our AI Guard application to improve quality and control cost Identify untested code across every level of your codebase Make use of guardrail metrics and stop babysitting your releases Monitor Versa Networks SD-WAN performance in Datadog Improve performance and reliability with APM Recommendations Remediate transitive vulnerabilities faster with Datadog Software Composition Analysis Generate audit-ready vulnerability and compliance reports with Datadog Sheets Monitor Fortinet FortiManager performance in Datadog Improve test coverage across codebases with Datadog Code Coverage Move fast, don’t break things: Consistent testing standards at scale Enrich logs with ServiceNow CMDB context before routing to any SIEM or logging tool Monitor Lustre with Datadog Make faster, better product decisions with Datadog Product Analytics Surface and remediate runtime posture issues with Workload Protection Findings Protect agentic AI applications with Datadog AI Guard How to optimize JavaScript code with CSS Trace Google Pub/Sub workloads in Cloud Run with Datadog Detect human names in logs with ML in Sensitive Data Scanner How we cut our NLQ agent debugging time from hours to minutes with LLM Observability Debug PostgreSQL query latency faster with EXPLAIN ANALYZE in Datadog Database Monitoring Datadog acquires Propolis Unify and correlate frontend and backend data with retention filters Scale compliance across global frameworks with Datadog Cloud Security Monitor Arista VeloCloud SD-WAN performance with Datadog Building reliable dashboard agents with Datadog LLM Observability Simplify log collection and aggregation for MSSPs with Datadog Observability Pipelines Mitigation for Node.js denial-of-service vulnerability affecting Datadog APM Automate flaky test fixes with the Bits AI Dev Agent and Test Optimization How we built an AI SRE agent that investigates like a team of engineers Datadog integrations 2025 recap: Observability for AI, security, and hybrid cloud Design effective executive dashboards with Datadog Implement dbt data quality checks with dbt-expectations Bring faster visibility into AWS Lambda functions with remote instrumentation Troubleshoot faster with the GitLab Source Code integration in Datadog How Cambia Health Solutions saved $30,000 monthly with Cloud Cost Management and the Datadog Resource Catalog Normalize any logs for Cloud SIEM with Datadog's OCSF processor Optimizing Datadog at scale: Cost-efficient observability at Zendesk Detect, diagnose, and resolve network issues easily with CNM Network Health Connect engineering errors to user impact in early-stage products Cilium configuration for Kubernetes operations at scale Designing feedback loops for progressive delivery Ship features faster and safer with Datadog Feature Flags Choosing the right OpenTelemetry Collector distribution Route your monitor alerts with Datadog monitor notification rules Automate Cloud SIEM investigations with Bits AI Security Analyst Cloud threat detection: How to identify risky activity across control and data planes Collecting Kafka performance metrics Monitoring Kafka with Datadog Monitoring Kafka performance metrics
How I helped my client scale their browser tests with Datadog
2025-09-03 · via Datadog | The Monitor blog
Suraj Tikoo

Suraj Tikoo

Addie Beach

Addie Beach

This guest blog comes from Suraj Tikoo, an Accenture consultant and Datadog Ambassador. Suraj specializes in helping clients integrate cloud solutions into their systems.

Testing is a critical part of modern software development. From user-facing UIs to complex backend services, every component needs to be thoroughly validated before release. But adopting new testing tools can be difficult, often requiring teams to adjust their workflows to accommodate tooling limitations.

In a recent project, I worked with a client who struggled to identify a flexible testing solution. Much of their work involved handling sensitive data subject to strict guardrails, making it difficult to use off-the-shelf tools. The client already used Datadog for performance monitoring. However, identifying how the platform could work for their testing needs was proving a challenge. Drawing on my past experience implementing Datadog for previous clients, I helped the team configure Datadog Synthetic Monitoring to cover all of their use cases, enabling them to accelerate their testing without additional tools.

In this post, we’ll explore:

Core building blocks of a robust testing framework

When creating a testing strategy, teams typically look for tools that can meet four key requirements:

Testing requirementPurpose
Configuration managementSupports dynamic data and environment-specific settings
Reusable modulesPromotes modularity and reduces redundancy
Test execution schedulingControls how and when tests run
Reporting and dashboardsProvides clear insights into test outcomes

Platforms offer different combinations of these building blocks and implement them in various ways. These differences can make it challenging for teams to determine which platforms best meet their needs. In this case, my client wasn’t sure how to use these components to build a strategy to support their collection of large-scale, secure workflows. Let’s look at how my team was able to help them do this using end-to-end testing within Datadog Synthetic Monitoring.

Configuration management

Flexible configuration is essential for designing tests that can easily adapt to any scenario an app might encounter. Datadog enabled us to do this in a few practical ways, using features that provided better resiliency with minimal effort.

First, we identified elements that frequently appeared in the client’s testing scenarios and defined them as global variables. This let us reuse environment-specific CSS and XPath selectors, URLs, and credentials across multiple browser tests, without maintaining each test individually.

The variable addition window for a test, with a list of available variables and values displayed.

Additionally, we accounted for a variety of complex scenarios by injecting JavaScript assertions into the client’s tests. JavaScript assertions enable teams to assess conditions outside of Datadog’s default interactions and variable extraction options. For example, to evaluate flows that involved user logins, the client needed to be able to connect their tests to internal authentication services. By including JavaScript assertions that handled requests to these services, we effectively integrated authentication functionality—including multi-factor authentication—into their tests.

Reusable modules

Effective testing strategies should offer straightforward tools for creating reusable components that help developers scale their test suites efficiently. Global variables can help with this to some degree, but developers often need to replicate larger sets of steps across multiple tests. When application flows change, each of those tests needs to be maintained individually.

To reduce that overhead, Datadog provides subtests that behave like functions or methods in programming. These can be called across multiple browser tests as reusable units.

A subtest being created by extracting an existing test's steps.

We used subtests to modularize common, critical user flows within the client’s app, such as:

  • User logins: Much of the client’s app required user authentication for access, which meant developers would—without modularized components—need to manually add login functionality to nearly every test. Subtests allowed us to define this flow once and then easily reuse it throughout the test suite.
  • Payment authorization: The client’s app used third-party payment gateways to help process user transactions. To ensure these gateways were reliable, developers needed to verify them repeatedly across different tests. Subtests made it easy to build the functionality once and then integrate it wherever needed.

This modularity enabled us to create clean, maintainable, and scalable test suites, drastically reducing the effort required to update or expand their test coverage.

Test execution scheduling

How and when tests are run can significantly affect resource usage and overall test coverage. Test scheduling is often shaped by system limitations and business requirements, including how user sessions and credentials are managed. Most teams use either parallel or sequential testing. While parallel testing is faster and often more resource-efficient, it also makes it harder to persist login states across tests, requiring new authentication tokens for each run.

To account for user access limitations, the client needed to run their tests sequentially to properly rotate their licenses. This quickly became unwieldy, with scheduled test runs frequently conflicting each other, leading to test errors and premature failures.

To simplify their text execution flows, we used the datadog-ci command-line interface (CLI) to create controlled batches of tests. We built 20 such batches, each containing 10 test cases with over 100 steps per case. In total, we automated around 200 test cases without any issues, effectively resolving the user dependency challenge and ensuring reliable execution. You can read more about how we achieved this in the next section.

Reporting and dashboards

Lastly, teams need a platform that makes it easy to analyze and share test results. Datadog Synthetic Monitoring provides a few out-of-the-box features that helped the client visualize their test runs, identify failures and performance bottlenecks, and compile relevant findings into digestible overviews.

These included:

  • Clear pass or fail statuses
  • Screenshot captures for each step
  • Integrations with notification tools like Slack, PagerDuty, and email
  • Historical overviews of response time
The overview page for a failed synthetic test run, with suggested investigation actions displayed.

In addition to these features, the client wanted a way to share key results and trends with stakeholders. For example, part of their workflow involved compiling regular reports on how many test scenarios their teams were covering. To support this, we created a custom dashboard showing which test batches had run and their status. Then, using the Datadog API, we automated the delivery of this information to managers through regularly scheduled emails.

Solving key challenges with Datadog

As we helped the client develop their test suite, we encountered several challenges common to large-scale browser testing. By applying the building blocks provided by Datadog Synthetic Monitoring, we solved these issues effectively.

Large forms with dynamic fields

While developing the initial tests, we encountered a scenario involving a large form with many input fields. Creating a separate test step for each field would have made the client’s tests bulky, hard to maintain, and slow to execute.

To address this, we used custom JavaScript assertions to help capture and reuse field values. With JavaScript, we stored and retrieved field values by using the localStorage property, which enables developers to retain data without expiration.

Here are a few examples of the code we used:

PurposeCode
Store field valueslocalStorage.setItem("email", document.querySelector("#email").value);
Retrieve field values for assertionsconst email = localStorage.getItem("email");

These assertions allowed us to significantly reduce the number of test steps, making the tests lighter, cleaner, and much easier to maintain.

MFA

MFA was a critical part of the client’s app, used to control access to sensitive information. They found that many traditional testing tools struggled with automating MFA, often requiring manual intervention or complex workarounds.

With Datadog’s support for JavaScript injection, the client integrated MFA directly into secure user test scenarios. For example, one-time password (OTP) verification was an important part of the client’s authentication processes. While Datadog provides out-of-the-box support for popular OTP generation methods, including time-based ones, the client used custom OTP services that weren’t automatically covered. By injecting JavaScript into the client’s test steps, we connected these services to their browser tests without relying on external tooling. And because MFA was required for many user flows, we implemented subtests to automate and reuse their authentication logic across multiple tests.

Logging the synthetic user in was only the first step, though—the client also needed to persist session tokens across test steps to minimize the need for constant re-authentication. Implementing localStorage enabled us to maintain session state throughout the entire test.

Test backups

Given the large scale of their system, one of the client’s key concerns was being able to recover their test suite if any issues arose. Their testing data represented hundreds of different scenarios, and losing it would have resulted in weeks, if not months, of reconstruction.

We found the solution in Terraform. Datadog’s robust Terraform support allowed us to treat the client’s test cases as Infrastructure as Code (IaC). By defining tests in Terraform, we could version-control their configurations, spin up or tear down test configurations across multiple environments, and maintain full reproducibility and auditability. You can view a sample of our Terraform code for more details on this setup.

Limited user access

A major issue the client encountered was scheduling test executions. Their app required session-based testing, meaning each test required a user login. However, they had limited access to user licenses, which resulted in frequent conflicts between test runs. For example, if a second test started while the first was still running with the same credentials, the new login would force the first session to log out and the initial test would fail.

Initially, we experimented with simply scheduling sequential test runs within Datadog, but we ran into the same problem. While we could roughly estimate how long it would take each test to run, test cases occasionally took longer than expected to execute and would overlap with the next scheduled batch, causing the new login to terminate the still-running test. This created a cascading failure scenario where subsequent tests could be caught in a loop of logouts and failures, making scheduling an unreliable solution.

Instead, we turned to controlled batching, which enabled us to schedule large test runs with minimal effort. In this batching approach, each test only executes once after the previous tests are fully completed, ensuring no session conflicts. Additionally, we were able to finely control the order of their test runs as necessary via bash commands within the datadog-ci CLI:

datadog-ci synthetics run-tests --test <test_id_1> --test <test_id_2> --file <config.json>

This approach helped us achieve comprehensive test coverage while still working within the client’s license restrictions.

Creating a strong testing strategy with Datadog Synthetic Monitoring

By implementing the client’s tests within Datadog, we streamlined the client’s workflows and accelerated their testing efforts. With browser and API tests in a single, unified platform, we minimized context switching, built highly reusable modules, and benefited from powerful automation features.

You can learn more about how to create your own synthetic tests by reading the Datadog Synthetic Monitoring documentation. Or, if you’re new to Datadog, sign up for a 14-day free trial.