Noutați

Diffblue Integrates Generative AI-Based Testing Platform With GitLab

Diffblue this week generally made available an integration between its automated unit testing platform for Java and the DevSecOps platform from GitLab. The Diffblue Cover platform makes use of generative artificial intelligence (AI) to automatically create unit tests based on reinforcement learning technologies that don’t rely on LLMs—avoiding their drawbacks of sometimes introducing hallucinations and also requiring human review. Diffblue CEO Mathew Lodge said the integration with the continuous integration capabilities found in the premium and ultimate editions of the GitLab platform would, for example, streamline regression testing in a way that should ultimately improve both application quality and security. Diffblue Cover, for example, can update tests as much as 250 times faster than a human developer can write them manually without developer review. That approach also serves to reduce the level of friction many DevSecOps teams encounter when bottlenecks involving testing processes emerge, noted Lodge. The overall goal is to make it simpler for developers to test as much of their own code as possible before integrating it into a build, he added. Otherwise, developers will get fed up because testing is continuously breaking the build, noted Lodge. Ultimately, instead of having to write unit tests, developers become supervisors of a platform that automatically generates them on their behalf, said Lodge. The job of a developer doesn’t go away, but it does fundamentally change, he added. To achieve that goal, developers need to be able to access a platform that writes the tests and can then also execute them automatically. If it takes too long to create the test, chances are high that most developers won’t run it. On average, writing and evaluating a single unit test can take a developer 10 minutes. Over the course of any project, thousands of tests need to be written, so the amount of time testing takes away from coding is often much greater than most IT leaders fully appreciate. Automating those tests should improve developer productivity as more time is available to focus on writing code rather than testing. That doesn’t necessarily eliminate the need for a dedicated testing team, but it does mean that more tests will be run without slowing down the overall pace of application development. Developers naturally want to be able to test code at the very instant they create it. AI platforms can make that happen by, for example, employing reinforcement learning to write unit regression tests. Most developers are not going to resist assuming more responsibility for testing if the tools to automate that task are more accessible. Instead of merely shifting responsibility for testing left toward developers, DevOps teams need to find ways to streamline the process. Otherwise, testing just becomes one in a series of tasks that are being shifted to developers in ways that many of them are coming to resent. It may take some time before AI is fully integrated into software engineering but it’s clear with each passing day more previously manual tasks are being automated. Among the lowest hanging fruit for applying AI to software engineering are clearly testing processes that, if truth be told, few indeed enjoy conducting.

Read More

SmartBear Acquires Reflect to Gain Generative AI-Based Testing Tool

SmartBear this week revealed it has acquired Reflect, a provider of a no-code testing platform for web applications that leverages generative artificial intelligence to create and execute tests. Madhup Mishra, senior vice president of product marketing at SmartBear, said the platform Reflect created will initially be incorporated into the company’s existing Test Hub platform before Reflect’s generative AI capabilities are added to other platforms. Reflect provides access to a natural language interface to create tests using multiple large language models (LLMs) that it is designed to invoke. It can also understand the intent of a test to understand what elements to test regardless of whether, for example, a button has been moved from one part of a user interface to another, said Mishra. Test step definitions, once approved, can also be automatically executed using scripts generated by the platform. SmartBear has no plans to build its own LLMs, said Mishra. Rather, the company is focusing its efforts on providing the tools and prompt engineering techniques needed to effectively operationalize them, he added. Reflect is the tenth acquisition SmartBear has made as part of an effort to provide lightweight hubs to address testing, the building of application programming interfaces (APIs) and analysis of application performance and user experience. Last year, the company acquired Stoplight to gain API governance capabilities. Rather than building a single integrated platform, the company is focused on providing access to lightweight hubs that are simpler to invoke, deploy and maintain, said Mishra. The overall goal is to meet IT teams where they are versus requiring them to adopt any entirely new monolithic platform that requires organizations to rip and replace every tool they already have in place, he said. There is little doubt at this point that generative AI will have a profound impact on application testing in a way that should ultimately improve the quality of the applications. As the time required to create tests drops, more tests will be run. Today, it’s all too common for tests not to be conducted as thoroughly as they should be simply because either a developer lacked the expertise to create one or, with a delivery deadline looming, they simply ran out of time. Naturally, the rise of generative AI will also change how testing processes are managed. It’s not clear how far left generative AI will push responsibility for testing applications, but as more tests are created and run, they will need to be integrated into DevOps workflows. Of course, testing is only one element of a DevOps workflow that is about to be transformed by generative AI. DevOps teams should already be identifying manual tasks that can be automated using generative AI as part of an effort to further automate workflows that, despite commitments to automation, still require too much time to execute and manage. Once identified, DevOps teams can then get a head start on redefining roles and responsibilities as generative AI is increasingly operationalized across those workflows.

Read More

How To Use void_t Alias Template in C++ 17?

In C++ 17, there is a very useful alias template for metaprogramming that can be used to simplify use of SFINAE. The void_t is a meta-function that is used to map any types ( or types) to type void. In this post, we explain what is void_t, how you can use it in different examples. What is alias template void_t in C++ 17? The void_t is an alias template which is introduced with C++17, it is defined in header and it is a metafunction that is used to map any types (or a sequence of any types) to type void. The main purpose of void_t is to make easy writing of type traits. It is used to solve SFINAE (Substitution Failure Is Not An Error) prior to concepts of C++20 standard. SFINAE rule says that If the deduced type or explicitly specified type for the template parameter fails, the specialization is discarded from the overload set instead of causing an error in compilation. Since C++17, the std::void_t is defined as below.   template using void_t = void;   Now, let’s see how we can use it in template definitions. How to use alias template void_t to check a typename in a template? We can use void_t to if a class has a certain typename using at compile time, here we check if it has ‘type’ typename.   template struct hastype : std::false_type {};   template struct hastype : std::true_type {};   here is a full example about this, here we check ‘typeB‘ typename if it has or not. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28   #include #include   struct stA { typedef int typeA; };   struct stB { typedef int typeB; }; template struct hastype : std::false_type {};   template struct hastype : std::true_type {};   int main() { std::cout

Read More

How To Create A Real Linux App Step By Step Guide

Hello developers. Our previous sessions in our Winter Webinars series which showed you how to create a real Android app step by step“, how to create a real iOS app (even if you do not have a mac), how to create a real windows app, and how to create a real Mac app, are extremely popular. Have you spotted the theme yet? ???? During the previous sessions I showed how to use RAD Studio 12 to create multi-platform apps to target Android, iOS and Windows devices – and in today’s session I covered how to create apps which work on Linux using RAD Studio 12 and Delphi. The session today was completely live, even though I prefer to pre-record some demos to make myself look slicker and more professional! I covered the key parts of setting up your Linux machine, or your WSL instance, and then RAD Studio so you can easily compile Linux apps. Each session builds a little on the things we learned in prior webinars and adds to that knowledge. Over the next few weeks, we’ll link things up to the cloud, the web, each other, and even a robot arm. Stick around; we’re going to see that RAD Studio can do pretty much anything you can dream of – and do it without needing to be a super hardcore software developer too. If you want to register, go to: https://lp.embarcadero.com/webinar-registration In this article you can catch the full replay including the questions and answers. If you watch on YouTube, please hit the “like” and “subscribe” buttons to make sure you get notifications of all the videos in the Winter Webinar series. Hitting “like” and “subscribe” on YouTube will not add you to any mailing lists from Embarcadero – the only effect is for YouTube to send you a notification the next time we upload a new webinar or start a live broadcast. Where can I see the replay of the “How To Create A Real Linux App Step By Step Guide” webinar? Here’s the full replay of the video. All the video replays are also uploaded to our YouTube channel. You can also find them in the “Learn” section of the RAD Studio IDE Welcome page. The plan is, as time goes on, for me to fill that “Learn” tab with a whole series of videos which take you through every aspect of creating cross-platform and desktop apps with RAD Studio on Windows, macOS, Linux, iOS, and Android. Where can I get the slides for the “How To Create A Real Linux App” step by step guide? Here are all the slides for “How To Create A Real Linux App Step By Step Guide”. Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder. Design. Code. Compile. Deploy. Start Free Trial   Upgrade Today    Free Delphi Community Edition   Free C++Builder Community Edition

Read More

2024 Infrastructure Tech Predictions

Ganesh Srinivasan, partner at Venrock, co-authored this article. 2023 was a rollercoaster like none other; from the death of the modern data stack sprawl to the birth of generative AI, we are only at the beginning of a new era in the ‘art of the possible.’ We guarantee 2024 won’t be a disappointment. With a new year approaching, it’s the perfect time for us to examine what we anticipate being the biggest developments in the year ahead. Here is what we think is going to happen in 2024: 1. OpenAI’s Reign Challenged With the emerging learnings in core neural net architectures that led to the transformer and dominance by OpenAI, it is likely that their imminent release of GPT5 will be surpassed in specific performance benchmarks by a new entrant on the backs of more efficient architectures, improved multimodal capabilities, better contextual understanding of the world and enhanced transfer learning. These new models will be built on emerging research in spatial networks, graph structures and combinations of various neural networks that will lead to more efficient, versatile and powerful capabilities. 2. Apple: The New Leader in Generative AI One of the most important players in the generative AI space is only starting to show their cards. 2024 will be the year Apple launches its first set of generative AI capabilities, unlocking the true potential of an AI-on-the-edge, closed architecture with full access to your personal data – showing that Apple is actually the most important company in the generative AI race. 3. Building for Client-First The last decade has reflected a shift away from fat clients to server-side rendering and compute. But the world is changing back to the client. Mobile-first experiences will be required to work in offline mode. Real-time experiences require ultra-low latency transactions. Running LLMs will increasingly be required to run on the device to increase performance and reduce costs. 4. Death of Data Infrastructure Sprawl The rapid growth of the data infrastructure needs of enterprises has led to an increasing sprawl of point solutions, from data catalogs, data governance, reverse extract, transform, load, and airflow alternatives to vector databases and yet another lakehouse. The pendulum will swing back to unified platforms and fewer silos to bring down the total cost of ownership and operating overhead going into 2024. 5. Approaching the AI Winter Generative AI in 2023 could be best characterized as the ‘art of the possible,’ with 2024 being the true test to see if prototypes convert into production use cases. With the peak of the hype cycle likely here, 2024 will experience the stage of disillusionment where enterprises discover where generative AI can create margin-positive impact and where the costs outweigh the benefits. 6. The Misinformation Threat While image and video diffusion models have unlocked a new era for digital creation and artistic expression, there’s no doubt that its dark side has not yet taken its toll. With a presidential election in the wings, diffusion models as a machine for political disinformation will emerge to become the next major disinformation weapon of choice. 7. AI’s Real-World Breakthrough Coming out of the ‘field of dreams’ era for AI, 2024 will represent a breakthrough for commercial use cases in AI, particularly in the physical world. Using AI for physical world modalities will unlock our ability to […]

Read More

How To Use std::invoke In C++ 17?

There is a new library feature in the C++17 standard, it is std::invoke which is a useful feature to uniformly invoke callable entities. In this post, we explain what std::invoke is and how we can use it in examples. First, let’s remind ourselves about what is a callable object and what is a functor in modern C++. What is callable object and what is functor in modern C++? A callable object (some call it a functor) is an object that can be used as a function or function pointer by using the operator(). This term is not the same as a function term in programming. We can pass many arguments with them; thus, we don’t need to define many global variables, we can use these kinds of variables in the scope that we use. Here you can find more details about it. What is std::invoke in C++ 17? The std::invoke call is a library feature in C++ 17 that allows invoking a method at run time and improved in C++20 and C++23 with invoke_r. It is defined in the  header and useful to write libraries with the same behavior as the standard’s magic INVOKE rule. You can use std::invoke to call a function or method, a lambda expression, or a member function, or can be used to access a data member, or you can use to invoke a function object. In C++17 it is defined as below,   template std::invoke_result_t     invoke( F&& f, Args&&… args ) noexcept();   In C++20 it is defined as below,   template constexpr std::invoke_result_t     invoke( F&& f, Args&&… args ) noexcept();   And since C++23, there is invoke_r and it is defined as below,   template constexpr R invoke_r( F&& f, Args&&… args ) noexcept();   How can we use std::invoke with a parametric function in C++17? Here is a simple std::invoke example with a parametric function. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18   #include   int myf(int x, int y) { return x*x+y*y; }   int main() { int z = std::invoke(myf, 1, 2);   std::cout

Read More

The Future of DevOps: Predictions and Insights From Industry Experts

DevOps is a crucial part of the ever-evolving field of technology, shaping the future of software development and operational efficiency. Here are the trends, transformations and breakthroughs that will redefine the DevOps landscape in 2024. 2024: The Year for DevOps In 2024, DevOps is poised for a transformative journey. Automation is predicted to surge to unprecedented levels, reshaping development workflows and expediting deployment cycles. Continuous integration and continuous delivery (CI/CD) pipelines are expected to attain new heights of efficiency, facilitating rapid and reliable software releases. DevOps, synonymous with agility, is foreseen as a key driver of innovation and efficiency in software development.Expert Insight: Ramendeep Bhurjee, VP, Cigniti Technologies. BizDevOps Redefines Software 2024 will witness BizDevOps redefining how businesses approach software development and operations. The integration of business stakeholders into the development process is expected to reach new levels of maturity. Continuous feedback loops between business, development and operations teams will become standard practice. Automation will undergo further refinement, enabling swift adaptation to changing market dynamics.Expert Insight: Raghu Krovvidy, chief delivery officer, Cigniti Technologies. DevOps and Agile Convergence A convergence between DevOps and Agile practices is anticipated to enhance software development. Breaking down silos and improving collaboration for faster, high-quality development is the goal. Tools supporting continuous integration and delivery are deemed crucial in this integrated approach, streamlining the path from development to deployment.Expert Insight: Paul Lechner, VP of product management, Appfire. Faster Development Life Cycles Continue The relentless march towards faster development life cycles to meet escalating demand is expected to persist in 2024. As organizations push new applications into production more swiftly, a focus on real-time security practices within the CI/CD pipeline is crucial during source code development.Expert Insight: Dan Hopkins, VP of engineering, StackHawk. Agile Development Shapes the Future In the realm of development, agile practices will continue shaping the future of innovation by incorporating advanced technologies and methodologies. The adoption of Scaled Agile Frameworks like SAFe is predicted to be a significant facet of agile development in 2024.Expert Insight: Nitin Garg, VP of practice delivery, AgreeYa Solutions. Fostering a Human-Centric Agile Mindset Companies are expected to realize that agile transformation must be holistic, involving shorter cycles and business-side changes beyond just software. A shift towards reinvigorating the human-centric aspects of agile development is seen as essential for success.Expert Insights: Tina Behers, VP of enterprise agility, Aligned Agility; Jon Kern, Agile Consultant, Adaptavist. Moving From Tracking Developer Productivity to Engineering Efficiency Leaders are anticipated to shift their focus from tracking individual developer productivity to engineering efficiency. The measurement will transition from individual metrics to team-centered metrics around engineering efficiency.Expert Insight: Ori Keren, co-founder and CEO, LinearB. Collaboration – The Future of DevOps In the era of multi-cloud architectures and diverse vendor reliance, the future of DevOps is expected to hinge on strengthened collaboration. DevOps professionals are set to forge robust partnerships with traditionally siloed teams, emphasizing automation to seamlessly engage at critical junctures.Expert Insight: Erez Tadmor, Cybersecurity Evangelist, Tufin. Recognition of the 99% Developers Businesses are predicted to recognize the significance of the “99% Developers” who work outside the limelight but contribute significantly to software development. Understanding the needs of this majority is seen as crucial for sustained business success.Expert Insight: Jean Yang, Head of Product, Observability, Postman. Debugging Remains a Challenge Debugging is expected to remain a […]

Read More

Learn C++ Optimization With A Genetic Algorithms Example

Solving C++ optimization problems are one of the areas of all quantitative disciplines from social science, economics to engineering fields such as computer science. Genetic Algorithm (GA) is a kind of machine learning process that is used to generate high-quality solutions to optimization and search problems by relying on biologically inspired operators such as mutation, crossover, and selection. In this post, we explain how you can achieve optimization using artificial intelligence techniques. The Genetic Algorithm that we use here below was first mentioned by Željko Kovačević (Embarcadero MVP). Željko has amazing VCL Examples and blog posts about C++ Builder. He gave me this example below as a console app about GA and allowed me to release it free, but credits of this code may require contact with him. Then I improve and simplify (I can’t ofc) it for the C++ Builder and C++ Builder CE. Here, the field and codes below may be harder for beginners but I am sure this post may help how you can develop your scientific applications with C++ Builder CE. What is a Genetic Algorithm? In computer science and research, a Genetic Algorithm (GA) is an algorithm that is used to solve optimization problems by evolving towards better solutions, just as sentient beings do in nature. Genetic Algorithm (GA) is a metaheuristic inspired by the process of natural selection that belongs to the larger class of evolutionary algorithms. Genetic algorithms are commonly used to generate high-quality solutions to optimization and search problems by relying on biologically inspired operators such as mutation, crossover, and selection. In a Genetic Algorithm, first, we create an initial population, then we iterate in a loop by calculating the fitness value, selection, crossover, and mutation steps as below, Genetic Algorithm Schema Genetic Algorithms are one of the older AI/ML methods developed to solve some problems such as solving sudoku puzzles. Genetic Algorithms and Fuzzy Logic were very popular in the 1990s. A typical genetic algorithm requires: A genetic representation of the solution domain, a fitness function to evaluate the solution domain. How to develop a genetic algorithm with C++ Builder? In our optimization example in C++, we develop an optimization algorithm such as Genetic Algorithm about our chosen field. Now let’s explain quickly what we mean by that. First, we have a global Input value that represents a value (number) for which Genetic Algorithm (GA) is trying to find its binary representation.   unsigned int inputValue = 1234567890;   We have individuals to evaluate with genetic algorithms, so we can create this class below. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22   class Individual { public: std::vector gene = std::vector(32); // number of bits unsigned int fitness{ std::numeric_limits::max() };   void evaluate() { unsigned int number = toNumber(); if (number

Read More

How To Create A Real Mac App Step By Step Guide

Hello developers. Our previous sessions in our Winter Webinars series which showed you how to create a real Android app step by step“, how to create a real iOS app (even if you do not have a mac), and how to create a real windows app were extremely popular. During the sessions I showed how to use RAD Studio 12 to create multi-platform apps to target Android, iOS and Windows devices. Building on that is the following session which shows how to create a real Mac app, using RAD Studio 12 and Delphi. The session focuses a little on the real benefits of Firemonkey FXM frameworks rather than just creating a Mac app. The main reason is it’s really easy to create a Mac app with RAD Studio, but also because the Winter Webinar series is iterative – building on the things we learned in prior webinars and adding to that knowledge. Over the next few weeks, we’ll start to actually add proper functionality and link things up to the cloud, the web, each other, and even a robot arm. Stick around; we’re going to see that RAD Studio can do pretty much anything you can dream of – and do it without needing to be a super hardcore software developer too. If you want to register, go to: https://lp.embarcadero.com/webinar-registration In this article you can catch the full replay including the questions and answers. If you watch on YouTube please hit the “like” and “subscribe” buttons to make sure you get notifications of all the videos in the Winter Webinar series. Hitting “like” and “subscribe” on YouTube will not add you to any mailing lists from Embarcadero – the only effect is for YouTube to send you a notification the next time we upload a new webinar or start a live broadcast. Where can I see the replay of the “How To Create A Real Mac App Step By Step Guide” webinar? Here’s the full replay of the video. All the video replays are also uploaded to our YouTube channel. You can also find them in the “Learn” section of the RAD Studio IDE Welcome page. The plan is, as time goes on, for me to fill that “Learn” tab with a whole series of videos which take you through every aspect of creating cross-platform and desktop apps with RAD Studio on Windows, macOS, Linux, iOS, and Android. You can view the replay of the webinar, including questions and answers here: Where can I get the slides for the “How To Create A Real Mac App” step by step guide? Here are all the slides for “How To Create A Real Mac App Step By Step Guide”. Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder. Design. Code. Compile. Deploy. Start Free Trial   Upgrade Today    Free Delphi Community Edition   Free C++Builder Community Edition

Read More

Useful C++ 17 Features That You Should Learn

Hello Developers, in my opinion, the C++17 standard is one of the biggest milestones in the history of C++ development. It is amazing with a lot of new features, and in this weekly round post, we have another three important features that you should learn. We explain the new optional class template, we teach you how to use alias templates for traits and we explain what std::any is and how you can use it. Our educational LearnCPlusPlus.org site has a broad selection of new and unique posts with examples suitable for everyone from beginners to professionals alike. It is growing well thanks to you, and we have many new readers, thanks to your support! The site features a treasure-trove of posts that are great for learning the features of modern C++ compilers with very simple explanations and examples. RAD Studio’s C++ Builder, Delphi, and their free community editions C++ Builder CE, and Delphi CE are powerful tools for modern application development. Table of Contents Where I can I learn C++ and test these examples with a free C++ compiler? How to use modern C++ with C++ Builder? How to learn modern C++ for free using C++ Builder? Do you want to know some news about C++ Builder 12? Where I can I learn C++ and test these examples with a free C++ compiler? If you don’t know anything about C++ or the C++ Builder IDE, don’t worry, we have a lot of great, easy to understand examples on the LearnCPlusPlus.org website and they’re all completely free. Just visit this site and copy and paste any examples there into a new Console, VCL, or FMX project, depending on the type of post. We keep adding more C and C++ posts with sample code. In today’s round-up of recent posts on LearnCPlusPlus.org, we have new articles with very simple examples that can be used with: The free version of C++ Builder 11 CE Community Edition or a professional version of C++ Builder or free BCC32C C++ Compiler and BCC32X C++ Compiler or the free Dev-C++ Read the FAQ notes on the CE license and then simply fill out the form to download C++ Builder 11 CE. How to use modern C++ with C++ Builder? The C++17 standard came with a lot of great features and std::optional was one of the main features of today’s modern C++. std::optional is a class template that is defined in the header and represents either a T value or no value. In the first post, we explain, what is optional in modern C++ and how we can use it efficiently. One of the great features of C++ is templates, they are parameterized by alias templates in C++11. Then, In C++14 and C++17, they improved C++11’s feature with several template aliases whose use simplifies the traits. This feature is called “Alias Templates For Traits” and in this post, we explain that it is an alias template and how we can use alias templates with traits. Another interesting feature of C++17 was the new type std::any. std::any is a type-safe container to store a single value of any variable type. In the next post, we explain std::any in modern C++. How to learn modern C++ for free using C++ Builder? LearnCPlusPlus.org has been producing full of educational articles about C and modern C++ that can be used with C++ Builder, C++ Builder CE, Dev-C++, BCC Compiler and some other […]

Read More