Tag Archive for: test-driven development

Safety Standard Compliance

Companies are facing immense pressure to deliver complex products to market faster while balancing rigorous safety standard compliance with standards like ISO 26262 in the automotive industry and DO-178C in aerospace.

Testing plays a key role in the successful development of safety-critical systems. However, many organizations still perform testing manually which can lead to the introduction of errors, inconsistencies in code analysis, delays in project timelines, and increased chances of recalls or failure to meet safety standard compliance.

Teams and managers need to feel audit-ready and confident they are meeting the objectives in these standards. Execution teams need the flexibility to work in their preferred tools to maintain efficiency. Striking the right balance is crucial.

On January 15th, we teamed up with Liverpool Data Research Associates (LDRA) for a webinar discussing how — through a direct integration between the Jama Connect™ and LDRA tool suites — organizations can better strike this balance.

Watch the full webinar here or read the highlights below.


Integrating Jama Connect & LDRA for Increased Confidence

Jama Connect makes it easy for teams to define, align, and execute on requirements (high level to low level), tests and other assets across the product development lifecycle. Jama Connect’s built-in traceability can help organizations identify coverage gaps in the product development process. Jama Connect’s Test Management Center supports workflows for manual testing enabling engineering and quality assurance teams to organize and execute requirements-based test plans and test cases to ensure quality and compliance. As products become more complex and automation becomes required, Jama Connect integrates to automated testing tools to support a cost-effective, scalable, and flexible solution

The LDRA tool suite specializes in automated software verification, including the analysis of standards compliance and of structural coverage. The LDRA tool suite can run unit tests, dynamic tests, and static code analysis on embedded software code used to power complex products and systems in regulated industries.

Automated Testing is now commonplace, not only in the unregulated software space, but in safety critical products and systems as well. Manual testing simply will not scale as products become more complex with embedded software. These automated tests and results of automated test runs need to be traced to requirements for compliance and safety reasons.

Through an integration between Jama Connect and LDRA, organizations can combine the strengths of a market leading, fit-for-purpose requirements management tool and a powerful, automated testing tool.

Driving Value

But why integrate? What value does this bring to organizations and teams?

Firstly, by integrating these tools, teams gain efficiency. This integration removes manual export/import processes that waste time and can lead to errors. The nature of the integration gives testing teams greater control over the movement of assets across tools and builds confidence in the overall compliance process.

Additionally, this integration strengthens traceability across tools. Requirements, tests, and test results are published in both tools. Traceability reports can be produced in both tools to review results and analyze system coverage. Teams can gain confidence that the entire system is covered, from requirements down to code.

Lastly, this integration eases the path to compliance and helps strike the balance between speed and safety. Improved efficiency through the integration lets teams work in their tools of choice and makes results available in both tools. Through strengthened traceability, teams will feel more “audit ready” and will help meet the objectives set in rigorous compliance standards like ISO 26262 and DO-178C.

To learn more about how the ISO 26262 standard impacts automotive development, download our white paper.


Test Automation and Artificial Intelligence

As we enter a new decade of technological advancements, Jama Software asked select thought leaders from various industries for the trends and events they foresee unfolding over the next 10 years.

In the fifth installment of our 2020s Predictions series, we’re featuring software testing predictions from Ricardo Camacho, Technical Product Marketing Manager at LDRA.

Jama Software: What are the biggest trends you’re seeing in software testing and how are they impacting product development?

Ricardo Camacho: I’m seeing a continued trend in the embracing of test automation. Not just to keep pace with the adoption and refinement in DevOps and Agile practices, but also due to increasing demands in software safety and security which is of great concern in today’s world. Each industry has different challenges, so different needs or focuses in test automation solutions are being sought.

One example of this is in the automotive industry, and particularly in the Advanced Driver-Assistance Systems (ADAS) – a prime example of a complex and evolutionary type of system.  Here you have development of advanced magnetics position sensor in the electronic power steering application, and there are other sensors like speed, inertial, and image which factor into that ecosystem.

These systems are also distributed systems and the components are being provided by different suppliers with different software stacks, using different software development methodologies made up of millions of lines of code. Test automation by way of adhering to a common coding standard for product development for all suppliers establishes a standard platform. In other words, a universal software development platform for vehicle software across all suppliers that address safety, security, and defect-free product goals. Not only have some automotive companies developed their own coding standards to enforce this, but we also see it by the movement and merger of MISRA and the AUTOSAR industry standards.

JS: Are there any technological advancements that you are seeing in software testing

RC: I’m seeing the emerging use of Artificial intelligence (AI) and machine learning for software testing, which continues to evolve and will make an enormous impact. Today, in most organizations, thousands of test cases are created, many are redundant, and some have defects. Also, test scripts are not intelligent enough to determine state conditions of the system under test, so sleep or wait instructions need to be added to properly fulfill testing needs. The interdependencies between test scripts further adds more complexity which tends to cause test failures and script changes. Furthermore, some testing continues to require human interaction, or visual inspection, which makes it error prone. So, AI is the next evolutionary step in software testing.

Artificial intelligence provides many efficiencies and fills many of the missing gaps in software testing. One of the biggest impacts will be through spidering. Where the AI will crawl the application, collecting data and even taking screen shots to learn about the expected behavior of the application. The AI can then compare future runs to known patterns, exposing deviations quickly. AI similarly addresses Application Program Interface (API) testing by recording and mocking responses which significantly reduces the time it takes to perform API testing. Additionally, AI is not limited to just text comparisons in validation. AI can validate all types of data (e.g. video, audio, images).

Therefore, with AI’s help, more robust and reliable test cases are produced and in less time. AI improves test coverage, accuracy, and provides superior insight into the health of the application. AI is bringing a transformation in software testing and it’s here in the horizon. Thus, 2020 will bring forward these types of needed solutions.

Learn how Jama Software is partnering with LDRA to deliver a test validation and verification solution for safety- and security-critical embedded software by watching this video.

Being one of the people that participated in the creation of the Agile Manifesto, I find myself very disappointed by the reaction of engineers to the question “Are you practicing Agile?” Their shoulders drop. They start to slowly shake their heads. They mumble; they grumble. They tell me agile is horrible. I ask why. Reasons I hear most often are:

  • We’re being micromanaged
  • The pressure is constantly on, these two-week deliveries are too short
  • All they care about is the date
  • We only have time for cr**py code, we can’t do it right!

None of those management behaviors are part of Agile (read the Agile Manifesto and its related principles for yourself). Unfortunately, the dysfunction the authors of the Agile Manifesto were rebelling against are alive and well today in most places that claim to be Agile.

Too many supposedly Agile shops are missing a lot. They are not even doing plain old Scrum. If they were, programmers would be better off, for example by:

  • Self-organizing teams manage themselves
  • Choosing your work lets you follow your interest (sometime you have to take less desirable work)
  • Committing to how much can be done in an iteration
  • Updating each other in the stand up. (It’s not a manager update, though they participate.)
  • Talking responsibility for design and other technical decisions (being professionals)
  • Facilitate continuous improvement by doing meaningful retrospectives (being honest with yourself)

The motions of Scrum can help, but they are not enough.

Engineers, programmers, developers! We need to build trust. When we ask for three months to deliver, what happens after 2.5 months? We give the bad news that we’ll need an extra month. Bad news late is the worst kind of bad news. Your trust takes a hit. Then it happens again as you near the new deadline. Your reputation is weakened further. It looks like you are really busy now! You claim to be done and then the bugs start rolling in. You fix the bugs and unknowingly break previously working features your customer relies on. Your trust and reputation is in the trash.

Can we get out of this mess?

With Agile, the cadence of delivery is changed, so must your practices change. Kent Beck told me long ago (paraphrasing): “You’ll never be able to figure it all out up-front. You’ll never be able to stop changes even with a signed requirements document and contract defined penalties. Things will change. That’s the world. If you can’t beat ’em, join ’em. Get good at dealing with change.”

Agile 2016

As it turns out, Agile as practiced is dominated with management in 2016. Most the people that were involved with the Agile Manifesto were programmers, doing what they could to make the world better for programmers and the people that need programs.

Programmers, you have a professional responsibility to improve how you work. We (programmers) better get our act together; we’re just a few more software caused problems away from having the lawyers and government in our business. We better learn to be professional, or some lawyer or government bureaucrat will tell us what professional is. Agile might not be the whole answer, but it does advance the state of the art. It introduces the two week cycle and we can and should use that cycle for continuous improvement. Serious technical improvement, not lip service.

Managers, Scrum masters, and POs do you encourage your team to learn the technical practices of Agile? Do you even know what they are and why they are important? Here are two key areas you cannot afford to ignore if you want your team be more successful and make your customers happier:

These are only a start. But they are foundational.

Agile 2017?

That is up to you.


About the Author: James Grenning trains, coaches and consults worldwide. James’ mission is to bring modern technical and management practices to to product development teams, especially embedded systems development team. He is the author of Test-Driven Development for Embedded C. He is a co-author of CppUTest, a popular unit test harness for embedded C and C++. He invented Planning Poker, an estimating technique used around the world, and participated in the creation of the Manifesto for Agile Software Development.

Wingman Software – http://wingman-sw.com.
James W Grenning – Author of TDD for Embedded C – wingman-sw.com/tddec

© James W. Grenning | Wingman Software