Discussion on Move Fast, Build Things…Safely by Mohammed Aboullaite I Testμ 2023

We all want things to move fast and be innovative, right?

But sometimes, that enthusiasm sometimes creates conflict when it butts up against security, resiliency, and reliability concerns. :closed_lock_with_key:

Tune in as Mohammed Aboullaite highlights the importance of building things quickly and safely, along with the need to have a trusted and adversarial CI/CD pipeline, security patterns, zero trust resiliency patterns, and more.

Still not registered? Hurry up and grab your free tickets: Register Now!

If you have already registered and up for the session, feel free to post your questions in the thread below :point_down:

How do you manage regression suites and test coverage for existing test suites with so many releases? Is it totally Shift Left?

Hi Ishan,

Managing regression suites and test coverage for multiple releases can be quite a task. One approach that’s often used is called “Shift Left.” This means emphasizing testing earlier in the development process, catching issues before they become bigger problems.

To handle the complexity of many releases, teams often rely on automated testing tools. These tools help run test cases from the regression suite across different versions, ensuring that new changes don’t break existing functionality. This helps maintain a strong test coverage, ensuring that the product remains stable while keeping up with ongoing development.

Here are some of the questions asked during the session!

Can you share some of the testing practices that Spotify follows to ship quality code faster?

Mohammed: We follow a comprehensive testing approach at Spotify. Our testing strategy is based on the testing pyramid, encompassing unit, integration, and end-to-end tests. We also utilize containerization for testing, where tools like TestContainers allow us to spin up entire environments for integration tests. This ensures that we catch issues early and maintain code quality.

Here is the next question asked during the session.

How can we make security testing easier for functional teams, considering that security testing is often left to experts?

Mohammed: Incorporating security testing into the development pipeline gradually can help. Start by introducing security tools into the pipeline, like vulnerability scanning and static code analysis. Building a security culture across teams and involving different disciplines, such as developers, operations, and security experts, can make security more accessible and integrated into the development process.

And here is the third question:

How frequently are releases done at Spotify, and what kind of release deployment patterns do you follow?

Mohammed: At Spotify, we release frequently, with multiple releases occurring daily and even per hour. Our deployment strategy follows the principles of Continuous Deployment (CD) and Canary Deployment. Continuous Deployment emphasizes automation, and Canary Deployment involves gradually releasing changes to a subset of users or servers before full deployment, allowing us to monitor and validate changes in a controlled manner.

Another question in the list was What open-source testing tools do you recommend for easily integrating and testing code bases?

Mohammed: In the Java world, there are several popular testing frameworks like JUnit, Spock, and TestNG. Additionally, Testcontainers is an excellent open-source tool for integration testing, as it allows you to spin up containers and services to test against real dependencies. These tools help developers effectively test their code base and ensure quality.

The next picked question during the session was How can AI be integrated into software automation testing?

Mohammed: The integration of AI in software automation testing is promising. Tools like GitHub Copilot already use AI to help with coding and similar advancements are expected in testing. AI can assist in generating test cases, analyzing code for potential issues, and automating repetitive testing tasks. While progress is still being made, the potential benefits of improving testing efficiency and accuracy are significant.

The last question taken in the session was How do you envision the future role of AI in testing?

Mohammed: AI holds the potential to automate various testing tasks, from generating test cases to identifying potential issues and suggesting solutions. With more training and development, AI could take on a larger role in writing tests, optimizing test suites, and enhancing the overall testing process. As AI technology advances, testing will likely become more efficient and accurate.

Let’s look at some of the unanswered questions during the session.

How do you deal with build dependencies (DB, Cloud Storage etc)?

Does Spotify perform load/chaos tests with production-like workloads? (especially considering how costly it is to do so)

Does the Spotify QA team also leverage test orchestration to test out different features of the Spotify app before release (as it is available globally and every user is different)?

What are all the changes WebDriver BiDi is going to bring in software automation?

What major obstacles could organizations encounter during the implementation of SAST and IAST, and what strategies can be employed to effectively address?

How is AI poised to revolutionize software testing? Could you provide examples of how AI-powered testing tools and techniques are already transforming traditional testing practices?

Hi there,

If you couldn’t catch the session live, don’t worry! You can watch the recording here:

Additionally, we’ve got you covered with a detailed session blog:

When handling build dependencies like databases and cloud storage, you need to establish a structured approach. Begin by documenting these dependencies thoroughly, noting their specific versions and configurations. Utilize dependency management tools to automate installation and updates, reducing the risk of version conflicts. Implement version control to track changes in both code and dependencies, facilitating easy rollbacks if issues arise.

Isolation is key, and you can achieve this by employing virtual environments or containerization to shield your project from system-wide dependencies. Continuous Integration (CI) pipelines can streamline the build process, including dependency handling. Develop a suite of automated tests to identify and rectify dependency-related issues early on, ensuring project reliability.

Dependency locking, available in many package managers, can pin dependencies to specific versions, maintaining consistency across environments. Monitor the performance of dependencies and set up alert systems to promptly address any irregularities or outages. Additionally, establish backup and data recovery procedures for databases and cloud storage to safeguard against data loss.

Stay vigilant about security updates for your dependencies, applying patches promptly to mitigate vulnerabilities. Consider strategies to minimize vendor lock-in when using cloud services, and foster open communication within your development team to keep everyone informed about changes to dependencies and their potential impacts on the project.

Spotify and many other large-scale organizations typically perform load and chaos testing, but the extent to which they use production-like workloads can vary. Load testing is essential to ensure that a system can handle expected user traffic, and chaos testing (or chaos engineering) is used to uncover vulnerabilities and weaknesses in a system’s resilience.

However, using production-like workloads in testing can indeed be costly and carries some risks. Spotify, like other tech organizations, might adopt a hybrid approach. Here’s how they might approach it:

  • Simulation and Modeling: Rather than using the exact production workload, companies can create simulations and models based on real user data. These models aim to replicate real-world usage patterns while reducing the cost and potential risks associated with using actual production data.
  • Gradual Testing: Companies may gradually increase the load and complexity of tests in production environments, starting with less critical systems or during periods of low user activity. This allows them to validate the system’s resilience without risking a complete service disruption.
  • Isolation: Testing specific parts of the infrastructure or application in isolation, rather than the entire system, can reduce the cost and complexity of testing while still providing valuable insights.
  • Incremental Improvements: Companies may prioritize the most critical parts of their systems for production-like testing, focusing on improving the areas that have the highest impact on the user experience.
  • Cost-Benefit Analysis: Companies will weigh the costs of downtime or disruptions against the benefits of testing. For critical systems, the cost of potential outages may justify the investment in more extensive testing.

It’s important to note that the approach to load and chaos testing can evolve over time as technologies and best practices change. Spotify, like many other tech companies, would likely adapt its testing strategies based on its specific needs and technological advancements.

Hey,

WebDriver BiDi (Bidirectional) is set to make some notable improvements in the world of software automation. Here are some of those:

  • Better Communication: It introduces a two-way communication channel between the automation tool (WebDriver client) and the server that controls the web browser. This means they can talk to each other in real-time.

  • Smoother Automation: With this two-way connection, automation tasks become more responsive and adaptable to changes in the web application. This helps make automation more reliable.

  • Easier Debugging: Debugging, which means finding and fixing issues in automation scripts, becomes more efficient. Testers and developers can exchange information between the client and server to pinpoint problems quickly.

  • Handling Events: It could allow automation scripts to respond to different types of events on the web page, like user clicks or changes in the page’s structure.

  • Faster Execution: Automation tasks run faster because of reduced delays, thanks to the bidirectional communication.

  • Custom Workflows: You can create automation workflows that adapt to the current situation on the web page, based on real-time data from the server. This makes automation more versatile.

  • Efficiency Boost: It cuts down on the need to constantly check for updates, making your automation scripts more efficient and faster.

  • Support for Complex Tasks: WebDriver BiDi can help handle tricky automation situations, like working with multiple browser tabs, pop-up windows, and other complex scenarios.

  • Team Collaboration: It could make it easier for multiple automation tools and servers to work together, which is great for team efforts or when you have automation spread across different systems.

In a nutshell, WebDriver BiDi promises to improve software automation by making it more responsive, reliable, and efficient. It also opens the door to handling more complex tasks and better collaboration among automation tools and servers.

Implementing Static Application Security Testing (SAST) and Interactive Application Security Testing (IAST) solutions in organizations can be highly beneficial for identifying and mitigating security vulnerabilities in software applications.

However, there are several obstacles that organizations may encounter during the implementation of these security testing approaches, along with strategies to address them effectively:

Here are the obstacles organizations encounter during SAST and IAST implementation:

  • Integration Complexity: Integrating SAST and IAST tools into the existing software development pipeline can be challenging. Tools need to fit seamlessly into the development process.

  • False Positives: SAST tools often generate false positives, reporting issues that are not actual vulnerabilities. IAST tools might have false negatives, missing some vulnerabilities.

  • Tool Selection: Choosing the right SAST and IAST tools that align with the organization’s technology stack and application types can be challenging.

  • Skill Gap: Lack of expertise in using and interpreting SAST and IAST tools can hinder effective implementation.

  • Process Integration: Integrating security testing into the development process can be a cultural shift and may face resistance.

  • Testing Frequency: Regular and continuous testing is essential, but organizations may struggle to perform SAST and IAST scans frequently enough.

  • Resource Constraints: Limited budgets and resources can be a challenge when procuring, maintaining, and scaling SAST and IAST tools.

  • Complexity of Modern Applications: Modern applications, especially those using microservices, containers, and serverless architecture, can pose challenges for effective testing.

  • Compliance Requirements: Meeting compliance standards, such as GDPR or PCI DSS, can be a hurdle during implementation.

Here are some of the strategies you can employ to address these obstacles:

  • Education and Training: Invest in training programs to enhance the skills of both development and security teams in using SAST and IAST tools effectively.

  • Collaboration: Foster collaboration between development and security teams by promoting a DevSecOps culture and involving both teams in the selection and customization of tools.

  • Continuous Improvement: Regularly review and refine the scanning process to reduce false positives and improve the accuracy of results.

  • Automation: Automate security testing as much as possible within the CI/CD pipeline to ensure frequent and consistent scans.

  • Prioritization: Prioritize applications and vulnerabilities based on risk assessment to allocate resources effectively.

  • Tool Selection: Carefully evaluate and select SAST and IAST tools that align with your organization’s needs, technology stack, and scalability requirements.

  • Compliance Alignment: Ensure that security testing practices align with relevant compliance standards and automate compliance checks.

  • Testing Modern Applications: Choose tools that support modern application technologies and implement testing at various stages of the application’s lifecycle.

  • Executive Support: Secure support from upper management by demonstrating the value of SAST and IAST in reducing security risks and potential financial losses due to breaches.

By addressing these obstacles with the appropriate strategies, organizations can successfully implement SAST and IAST solutions to improve the security posture of their software applications.