[{"data":1,"prerenderedAt":554},["ShallowReactive",2],{"page:index-navigation":3,"blog-page-content":9,"home:service-page:footer":36,"page:help-pages":271,"page:service-page":295,"blog-post-testing-in-legacy-modernisation":341,"blog-author-testing-in-legacy-modernisation":543},{"helpBlocks":4},[5,6,7,8],"advice","projects","people","support",{"id":10,"title":11,"author":12,"blogTags":12,"body":13,"customExcerpt":12,"date":12,"description":17,"excerpt":12,"extension":20,"h1":21,"image":12,"meta":22,"navigation":23,"path":24,"readingStats":25,"seo":30,"stem":34,"__hash__":35},"insightsBlogPage\u002Finsights-blog-page.md","Insights Blog Page",null,{"type":14,"value":15,"toc":16},"minimark",[],{"title":17,"searchDepth":18,"depth":18,"links":19},"",2,[],"md","Insights on the latest industry developments and technology advancements within digital transformation.",{},true,"\u002Finsights-blog-page",{"text":26,"minutes":27,"time":28,"words":29},"1 min read",0.32,19200,64,{"title":31,"description":32,"keywords":33},"Industry Insights | Audacia ","The latest industry insights, research and developments in digital transformation for business leaders across industries from software development company Audacia.","Software development company, Software development blog, Bespoke software development news, Bespoke software development articles, Software development articles, Software development code","insights-blog-page","ya52brGhr6G8uhl8kc87eB-z-RvUW2jH_-Goj9QUuFI",{"groupedServices":37},[38],{"title":39,"groups":40},"Services",[41,82,123,162,199,235],{"title":42,"slug":43,"icon":44,"subtitle":45,"services":46},"Strategy","strategy","lucide:compass","Shaping AI and digital transformation strategies that help organisations prioritise investment, define practical roadmaps, strengthen governance, and build the operating models needed to adopt change with confidence.",[47,54,61,68,75],{"slug":48,"title":49,"subtitle":50,"description":51,"image":52,"icon":53},"ai-digital-strategy","AI & Digital Strategy","Supporting organisations through AI adoption and digital transformation","Assessing where AI and digital can deliver the greatest value, building the business case for investment and developing a prioritised roadmap grounded in what your organisation can deliver at pace and at scale.","\u002Fimg\u002Fservice-page\u002Fgen-ai.jpg","lucide:sparkles",{"slug":55,"title":56,"subtitle":57,"description":58,"image":59,"icon":60},"ai-digital-delivery","AI & Digital Delivery","Delivering strategic roadmaps to for digital and AI-enabled change","Providing the engineering, data science and AI capability needed to take complex AI and digital programmes from validated strategy through to successful delivery, for organisations that need both the technical depth and the delivery structure to execute consistently.","\u002Fimg\u002Fservice-page\u002Freporting.jpg","lucide:map",{"slug":62,"title":63,"subtitle":64,"description":65,"image":66,"icon":67},"ai-native-operating-models","AI Native Operating Models","Designing operating models that embed AI into teams, services and delivery","Designing and delivering AI-native operating model transformations across organisational structure, processes, workforce and technology, combining hands-on AI delivery experience with consulting expertise to deliver transformations focused on operational reality.","\u002Fimg\u002Fservice-page\u002Fcloud-design.jpg","lucide:building-2",{"slug":69,"title":70,"subtitle":71,"description":72,"image":73,"icon":74},"ai-data-maturity","AI & Data Maturity","Assessing organisational readiness and capability across AI and data","Delivering independent, evidence-based assessments of AI and data capability across people, process, technology and governance, identifying the most significant capability gaps and building a structured, prioritised plan to address them.","\u002Fimg\u002Fservice-page\u002Fanalytics.jpg","lucide:bar-chart-3",{"slug":76,"title":77,"subtitle":78,"description":79,"image":80,"icon":81},"governance-risk-security","Governance, Risk & Security","Establishing controls and frameworks for responsible, secure AI adoption","Helping organisations manage governance, risk and security across AI and digital programmes, from establishing AI governance frameworks and responsible AI policies to regulatory compliance and cyber security advisory.","\u002Fimg\u002Fservice-page\u002Fcloud-security.jpg","lucide:shield-check",{"title":83,"slug":84,"icon":85,"subtitle":86,"services":87},"Engineering","engineering","lucide:cog","Building large-scale, complex software platforms - from enterprise legacy modernisation, to greenfield projects, we deliver solutions that automate, streamline and simplify processes, meeting the needs of today and the future.",[88,95,102,109,116],{"slug":89,"title":90,"subtitle":91,"description":92,"image":93,"icon":94},"software-development-company-uk","Software Development","Engineering complex, mission critical software platforms","Designing and delivering large-scale, complex software platforms for enterprise and public sector organisations across industries, from initial discovery and design through to deployment and long-term support.","\u002Fimg\u002Fservice-page\u002Fsoftware-development.jpg","lucide:code",{"slug":96,"title":97,"subtitle":98,"description":99,"image":100,"icon":101},"ai-assisted-engineering","AI-Assisted Engineering","Accelerating software delivery with AI-enabled engineering practices","Embedding AI tools and practices across engineering teams to accelerate delivery, improve code quality and build lasting AI capability, from AI-assisted code generation and review to AI-powered testing and deployment automation.","\u002Fimg\u002Fservice-page\u002Fai-assisted-software-development.jpg","lucide:cpu",{"slug":103,"title":104,"subtitle":105,"description":106,"image":107,"icon":108},"systems-integration","Systems Integration","Integrating systems to operate as a single framework","Connecting core business systems so they operate as a single, coherent framework, covering ERP, CRM, finance and reporting platforms, with real-time data accuracy and the audit trails needed to manage complex enterprise environments reliably.","\u002Fimg\u002Fservice-page\u002Fsystem-intergration.jpg","lucide:git-merge",{"slug":110,"title":111,"subtitle":112,"description":113,"image":114,"icon":115},"mobile-development","Mobile Development","Delivering performant, scalable and robust user-driven mobile applications","Delivering performant, scalable and user-driven mobile applications for enterprise and public sector organisations, from cross-platform apps and PWAs to native iOS and Android solutions built for complex operational environments.","\u002Fimg\u002Fservice-page\u002Fmobile-development.jpg","lucide:smartphone",{"slug":117,"title":118,"subtitle":119,"description":120,"image":121,"icon":122},"front-end-development-company","Front End Development","Building intuitive and scalable user-focused digital experiences","Designing and building intuitive, accessible and performant front end applications, from UX strategy and prototyping through to full delivery, for organisations where digital experience is central to how they serve customers and teams.","\u002Fimg\u002Fservice-page\u002Ffront-end-software-development.jpg","lucide:layout",{"title":124,"slug":125,"icon":126,"subtitle":127,"services":128},"Testing","testing","lucide:check-circle","Helping organisations assure quality across platforms, products and services - from defining test approaches to automating validation, performance assurance and security-focused testing.",[129,135,142,149,156],{"slug":130,"title":131,"subtitle":132,"description":133,"image":59,"icon":134},"testing-strategy","Test Strategy","Defining scalable test approaches aligned to delivery goals and risk","Defining, auditing and improving software testing strategies for enterprise and public sector organisations, covering functional and non-functional testing, automation, tooling and team capability in a single coherent framework.","lucide:clipboard-check",{"slug":136,"title":137,"subtitle":138,"description":139,"image":140,"icon":141},"automated-testing","Automated Testing","Building automated test suites to improve quality, speed and confidence","Designing and delivering automated testing frameworks across end-to-end, API and performance testing, built around your technology stack and embedded directly into delivery pipelines for reliable, maintainable coverage at pace.","\u002Fimg\u002Fservice-page\u002Fdevops.jpg","lucide:bot",{"slug":143,"title":144,"subtitle":145,"description":146,"image":147,"icon":148},"performance-load-testing","Performance & Load Testing","Validating system performance, resilience and scalability under demand","Validating system performance under real-world demand for organisations where reliability, scalability and speed are business-critical, from pre-release testing and bottleneck identification through to continuous performance testing in delivery pipelines.","\u002Fimg\u002Fservice-page\u002Fcloud-native.jpg","lucide:gauge",{"slug":150,"title":151,"subtitle":152,"description":153,"image":154,"icon":155},"ai-testing-and-validation","AI Testing & Validation","Testing AI systems for quality, safety, reliability and expected outcomes","Validating AI models and systems across accuracy, reliability and deployment readiness, from pre-deployment model evaluation and independent AI assurance through to production monitoring and LLM red teaming.","\u002Fimg\u002Fservice-page\u002Fprototype.jpg","lucide:flask-conical",{"slug":157,"title":158,"subtitle":159,"description":160,"image":80,"icon":161},"security-testing","Security Testing","Identifying vulnerabilities and strengthening confidence in system security","Identifying and addressing security vulnerabilities across software systems, infrastructure, development practices and AI systems, covering penetration testing, threat modelling, vulnerability assessment and LLM red teaming.","lucide:shield",{"title":163,"slug":164,"icon":165,"subtitle":166,"services":167},"Data","data","lucide:database","Turning data into a valuable asset - from building centralised data platforms to delivering clear, accessible reporting and analytics, we enable teams to make faster, more informed decisions based on trusted data.",[168,173,179,186,192],{"slug":169,"title":170,"subtitle":171,"description":172,"image":59,"icon":74},"data-visualisation-consultancy","Data Visualisation & Reporting","Delivering custom reporting for data-driven decision making","Designing and delivering interactive dashboards, custom reports and real-time analytics aligned to your KPIs, giving operational and strategic teams the visibility they need to make informed, data-driven decisions.",{"slug":174,"title":175,"subtitle":176,"description":177,"image":73,"icon":178},"data-analytics-company","Data Analytics","Uncovering actionable insights for data-driven transformation","Analysing large-scale, complex datasets to surface trends, correlations and forecasts that inform decisions across sales, supply chain, operations and strategic planning, from predictive analytics to big data analysis.","lucide:line-chart",{"slug":180,"title":181,"subtitle":182,"description":183,"image":184,"icon":185},"data-migration-services","Data Migration","Delivering large migrations across architectures and environments","Delivering large-scale, complex data migrations across cloud, database and application systems, ensuring data is clean, accurate and reliable throughout transition with no disruption to operations or loss of data fidelity.","\u002Fimg\u002Fservice-page\u002Fmigration.jpg","lucide:database-backup",{"slug":187,"title":188,"subtitle":189,"description":190,"image":191,"icon":165},"data-engineering-services","Data Engineering","Engineering pipelines to consolidate, process and aggregate data","Building the scalable data pipelines, storage architectures and integration frameworks that consolidate, process and aggregate data across the organisation, providing the foundations for effective analytics and decision making.","\u002Fimg\u002Fservice-page\u002Fdata-engineering.jpg",{"slug":193,"title":194,"subtitle":195,"description":196,"image":197,"icon":198},"data-platform-consulting","Enterprise Data Products","Designing, delivering and optimising enterprise data platforms to provide unified data foundations","Designing, implementing and optimising enterprise data platforms using Snowflake, Databricks and Apache Spark, delivering unified, governed data foundations that support analytics, self-service insights and AI capability at scale.","\u002Fimg\u002Fservice-page\u002Fenterprise-data-products.jpg","lucide:layers",{"title":200,"slug":201,"icon":202,"subtitle":203,"services":204},"AI","ai","lucide:brain","Guiding organisations through the practical application of AI - from early experimentation to production-grade systems, we create solutions that improve services and enable organisations to make decisions better, faster and at scale.",[205,210,217,222,229],{"slug":206,"title":207,"subtitle":208,"description":209,"image":154,"icon":155},"ai-consultancy","Prototypes and PoCs","Validating AI opportunities through rapid experimentation and prototyping","Validating AI concepts through rapid prototyping and proof of concept delivery across language and conversation, vision and detection, and prediction and optimisation use cases, helping organisations de-risk AI investment before committing to full development.",{"slug":211,"title":212,"subtitle":213,"description":214,"image":215,"icon":216},"ai-machine-learning-company","Production AI","Designing and delivering production-ready AI solutions at scale","Taking validated AI models into production for enterprise and public sector organisations, addressing model performance, integration, MLOps and ongoing monitoring to ensure AI systems perform consistently in live environments over the long term.","\u002Fimg\u002Fservice-page\u002Fconcept-to-delivery.jpg","lucide:rocket",{"slug":218,"title":219,"subtitle":220,"description":221,"image":52,"icon":141},"agentic-ai","Agentic AI","Building agent-based AI systems that can reason, act and automate","Building, running and supporting agentic AI systems for enterprise and public sector organisations, executing multi-step workflows, coordinating across systems and completing complex tasks with minimal human intervention.",{"slug":223,"title":224,"subtitle":225,"description":226,"image":227,"icon":228},"ai-machine-learning-operations-consulting","AI Cloud Platforms\u002FServices","Providing platforms and services to build, deploy and scale trusted AI","Building, deploying and scaling AI solutions across Azure, AWS and Google Cloud, from developing solutions using pre-built APIs and managed AI services through to foundation model customisation and cloud AI optimisation.","\u002Fimg\u002Fservice-page\u002Fai-cloud.jpg","lucide:cloud-cog",{"slug":230,"title":231,"subtitle":232,"description":233,"image":234,"icon":202},"ai-machine-learning-consulting","Data Science and ML","Building data science and machine learning solutions tailored to real-world challenges","Delivering data science and machine learning solutions for enterprise and public sector organisations across forecasting and prediction, insight and discovery, and optimisation and recommendation use cases.","\u002Fimg\u002Fservice-page\u002Fml.jpg",{"title":236,"slug":237,"icon":238,"subtitle":239,"services":240},"Cloud","cloud","lucide:cloud","Supporting organisations in building secure, scalable cloud environments - whether migrating systems, modernising platforms, or optimising existing infrastructure, we focus on delivering cloud solutions that improve performance, resilience, and cost-efficiency.",[241,247,254,260,266],{"slug":242,"title":243,"subtitle":244,"description":245,"image":66,"icon":246},"cloud-architecture-consulting","Cloud Architecture & Design","Designing cloud solutions optimised for resilience and scale","Designing and architecting robust, scalable cloud solutions across public and hybrid cloud environments, from cloud strategy and planning through to implementation and ongoing optimisation, using Well-Architected Frameworks and infrastructure-as-code techniques.","lucide:network",{"slug":248,"title":249,"subtitle":250,"description":251,"image":252,"icon":253},"cloud-migration-consulting","Cloud Adoption & Migration","Migrating to cloud infrastructures to enhance accessibility, performance and scalability","Delivering seamless migration of systems, data and workloads to optimal cloud platforms with minimal disruption to operations, across Azure, AWS and Google Cloud, from initial assessment and adoption planning through to post-migration optimisation and support.","\u002Fimg\u002Fservice-page\u002Fcloud-adoption.jpg","lucide:cloud-upload",{"slug":255,"title":256,"subtitle":257,"description":258,"image":147,"icon":259},"cloud-application-development","Cloud Native Solutions","Building scalable and resilient cloud native solutions rapidly","Designing and building highly scalable, resilient cloud native applications that fully harness the advantages of dynamic cloud environments, from microservices architecture and containerisation through to automated CI\u002FCD pipelines and continuous delivery.","lucide:boxes",{"slug":261,"title":262,"subtitle":263,"description":264,"image":140,"icon":265},"devops-consulting-services","DevOps & Pipelines","Embedding automation through DevOps for continuous integration, delivery and deployment","Transforming how software is delivered and released through optimised CI\u002FCD pipelines, infrastructure-as-code and DevOps culture, enabling teams to ship updates frequently, reliably and at pace across complex enterprise and public sector programmes.","lucide:workflow",{"slug":267,"title":268,"subtitle":269,"description":270,"image":80,"icon":81},"cloud-security-consulting","Cloud Security","Securing cloud environments through architecture, automation and optimisation","Securing cloud environments and workloads through risk-based security architecture, automated controls and continuous monitoring, helping organisations adopt cloud securely while meeting compliance obligations across Azure, AWS and Google Cloud.",[272,277,283,289],{"path":273,"title":274,"blockDescription":275,"icon":101,"bgColour":276},"\u002Fhelp\u002Fadvice","Advise","Offering strategic advice, technology consultancy and support on end-to-end digital transformation.","#1174d6",{"path":278,"title":279,"blockDescription":280,"icon":281,"bgColour":282},"\u002Fhelp\u002Fpeople","Collaborate","Augment your internal teams with skilled, experienced specialists to accelerate delivery and reduce risk.","lucide:users","#F4743B",{"path":284,"title":285,"blockDescription":286,"icon":287,"bgColour":288},"\u002Fhelp\u002Fprojects","Deliver","Combining domain and technology expertise to build digital products and services at speed and scale.","lucide:kanban-square","#348d69",{"path":290,"title":291,"blockDescription":292,"icon":293,"bgColour":294},"\u002Fhelp\u002Fsupport","Maintain","Managed support and hosting services to keep business-critical platforms secure, resilient and scalable.","mdi:gauge","#A93F55",{"groupedServices":296},[297],{"title":39,"groups":298},[299,306,313,320,327,334],{"title":42,"slug":43,"icon":44,"subtitle":45,"services":300},[301,302,303,304,305],{"slug":48,"title":49,"subtitle":50,"description":51,"image":52,"icon":53},{"slug":55,"title":56,"subtitle":57,"description":58,"image":59,"icon":60},{"slug":62,"title":63,"subtitle":64,"description":65,"image":66,"icon":67},{"slug":69,"title":70,"subtitle":71,"description":72,"image":73,"icon":74},{"slug":76,"title":77,"subtitle":78,"description":79,"image":80,"icon":81},{"title":83,"slug":84,"icon":85,"subtitle":86,"services":307},[308,309,310,311,312],{"slug":89,"title":90,"subtitle":91,"description":92,"image":93,"icon":94},{"slug":96,"title":97,"subtitle":98,"description":99,"image":100,"icon":101},{"slug":103,"title":104,"subtitle":105,"description":106,"image":107,"icon":108},{"slug":110,"title":111,"subtitle":112,"description":113,"image":114,"icon":115},{"slug":117,"title":118,"subtitle":119,"description":120,"image":121,"icon":122},{"title":124,"slug":125,"icon":126,"subtitle":127,"services":314},[315,316,317,318,319],{"slug":130,"title":131,"subtitle":132,"description":133,"image":59,"icon":134},{"slug":136,"title":137,"subtitle":138,"description":139,"image":140,"icon":141},{"slug":143,"title":144,"subtitle":145,"description":146,"image":147,"icon":148},{"slug":150,"title":151,"subtitle":152,"description":153,"image":154,"icon":155},{"slug":157,"title":158,"subtitle":159,"description":160,"image":80,"icon":161},{"title":163,"slug":164,"icon":165,"subtitle":166,"services":321},[322,323,324,325,326],{"slug":169,"title":170,"subtitle":171,"description":172,"image":59,"icon":74},{"slug":174,"title":175,"subtitle":176,"description":177,"image":73,"icon":178},{"slug":180,"title":181,"subtitle":182,"description":183,"image":184,"icon":185},{"slug":187,"title":188,"subtitle":189,"description":190,"image":191,"icon":165},{"slug":193,"title":194,"subtitle":195,"description":196,"image":197,"icon":198},{"title":200,"slug":201,"icon":202,"subtitle":203,"services":328},[329,330,331,332,333],{"slug":206,"title":207,"subtitle":208,"description":209,"image":154,"icon":155},{"slug":211,"title":212,"subtitle":213,"description":214,"image":215,"icon":216},{"slug":218,"title":219,"subtitle":220,"description":221,"image":52,"icon":141},{"slug":223,"title":224,"subtitle":225,"description":226,"image":227,"icon":228},{"slug":230,"title":231,"subtitle":232,"description":233,"image":234,"icon":202},{"title":236,"slug":237,"icon":238,"subtitle":239,"services":335},[336,337,338,339,340],{"slug":242,"title":243,"subtitle":244,"description":245,"image":66,"icon":246},{"slug":248,"title":249,"subtitle":250,"description":251,"image":252,"icon":253},{"slug":255,"title":256,"subtitle":257,"description":258,"image":147,"icon":259},{"slug":261,"title":262,"subtitle":263,"description":264,"image":140,"icon":265},{"slug":267,"title":268,"subtitle":269,"description":270,"image":80,"icon":81},{"id":342,"title":343,"author":344,"blogTags":345,"body":347,"customExcerpt":527,"date":528,"description":352,"excerpt":12,"extension":20,"h1":12,"image":529,"meta":530,"navigation":23,"path":531,"readingStats":532,"seo":537,"stem":541,"__hash__":542},"blog\u002Fblog\u002Ftesting-in-legacy-modernisation.md","A Testing Strategy for Legacy Modernisation","Richard Brown",[346,124],"Legacy IT",{"type":14,"value":348,"toc":517},[349,353,370,373,382,387,390,393,396,400,409,412,415,419,422,428,431,436,439,444,447,452,455,459,462,471,474,478,481,486,489,494,497,501,504,507,511,514],[350,351,352],"p",{},"Every legacy modernisation programme runs into the same uncomfortable question sooner or later: how do you prove a new system works correctly, when nobody can fully define what \"correctly\" means for the one it's replacing? The specification lives in code written years ago, in the muscle memory of staff who've long since moved on, and in workarounds nobody documented because they were never meant to be permanent.",[350,354,355,356,363,364,369],{},"The scale of the risk this creates is well established. The Standish Group's CHAOS ",[357,358,362],"a",{"href":359,"rel":360},"https:\u002F\u002Fcdn1-public.infotech.com\u002Fagile\u002FCHAOSReport2015-Final.pdf",[361],"nofollow","Report",", drawing on a database of more than 25,000 projects, found that only 53% of legacy modernisation projects met their definition of success: delivered on time, on budget, with a satisfactory result. The remaining 47% were challenged or failed outright. Industry analysis of ERP modernisation specifically shows a similarly stark picture. Gartner ",[357,365,368],{"href":366,"rel":367},"https:\u002F\u002Fwww.gartner.com\u002Fen\u002Finformation-technology\u002Ftopics\u002Fenterprise-resource-planning",[361],"predicts"," that by 2027, more than 70% of recently implemented ERP initiatives will fail to fully meet their original business goals, with as many as 25% failing outright.",[350,371,372],{},"Every gap in testing strategy surfaces later as a cost somewhere. It might be rework, when a defect discovered post-launch has to be fixed under pressure; compliance exposure, when a regulator or auditor asks what changed and nobody can answer with evidence; or a delayed go-live, when a critical discrepancy is found too late to fix without pushing the release date. Each of these lands on a desk as a budget overrun, a reputational risk, or both. A deliberate testing strategy converts that difficulty into decisions made early and visibly, giving teams a documented basis for what changed and why.",[350,374,375,376,381],{},"This article looks at why legacy systems resist conventional testing approaches, how characterisation testing addresses that problem directly, what a testing strategy for modernisation needs to look like, and how to measure whether it's working. It's a natural companion to our earlier piece, ",[357,377,380],{"href":378,"rel":379},"https:\u002F\u002Faudacia.co.uk",[361],"Managing Hidden Waterfalls in Legacy Modernisation Projects",", which looks at the delivery and methodology side of this same challenge; this piece goes deeper into the testing discipline itself.",[383,384,386],"h3",{"id":385},"why-legacy-systems-resist-conventional-testing-approaches","Why Legacy Systems Resist Conventional Testing Approaches",[350,388,389],{},"Conventional testing assumes a specification exists, whether a requirements document, a user story, or at a minimum a shared understanding of what correct behaviour looks like. Legacy modernisation removes that assumption. The system itself becomes the closest thing to a specification, and it's an unreliable one: business logic embedded in code that was never formally documented, exceptions handled through branches and workarounds nobody captured at the time, and user behaviour that has adapted around system quirks until those quirks became de facto requirements nobody thinks to mention.",[350,391,392],{},"This creates a genuine testing problem alongside the documentation gap. A test asserts that a given input should produce a given output, but writing that assertion requires knowing what the correct output is. When the only available answer is \"whatever the old system currently does,\" testing becomes an exercise in discovering behaviour that was never written down in the first place.",[350,394,395],{},"The people who could fill that gap through institutional memory are often unavailable by the time a modernisation programme starts. Systems that have been running for a decade or more have usually outlived several rounds of staff turnover, and the workaround someone built in 2014 to handle an edge case in a specific regional process may now be triggering silently on a small fraction of transactions, invisible until someone tries to replace the system and it stops happening.",[383,397,399],{"id":398},"characterisation-testing-capturing-behaviour-before-you-change-it","Characterisation Testing: Capturing Behaviour Before You Change It",[350,401,402,403,408],{},"This is precisely the problem characterisation testing was designed to solve. The term comes from Michael Feathers' influential work on legacy code, which ",[357,404,407],{"href":405,"rel":406},"https:\u002F\u002Funderstandlegacycode.com\u002Fblog\u002Fkey-points-of-working-effectively-with-legacy-code\u002F",[361],"defines a characterisation test as one that documents the actual behaviour of a piece of code, rather than asserting what that behaviour should be",". Instead of writing a test that says \"this function should return X,\" a characterisation test observes what the function currently returns for a given input and records that as the baseline, regardless of whether the result looks correct.",[350,410,411],{},"This represents a genuine shift in what testing is for. It stops being a check against a known standard of correctness and becomes a check against continuity: does the system still do what it did yesterday? That distinction matters enormously in legacy modernisation, because the immediate goal is to make existing behaviour visible, so a deliberate decision can be made about which parts of it to preserve and which to change.",[350,413,414],{},"In practice, building characterisation tests means running the legacy system with a wide, representative range of real inputs, recording its outputs, and turning those observed input-output pairs into an automated regression suite. That suite then becomes the safety net against which any replacement or refactored system is measured. If the new system produces a different output for the same input, that difference gets surfaced explicitly, as either an intentional improvement or an accidental regression, months before it reaches a customer or an auditor.",[383,416,418],{"id":417},"building-a-testing-strategy-for-modernisation","Building a Testing Strategy for Modernisation",[350,420,421],{},"Characterisation testing gives a starting point, but a full testing strategy for legacy modernisation needs several layers working together.",[350,423,424],{},[425,426,427],"strong",{},"Characterisation tests on the legacy system",[350,429,430],{},"As described above, this establishes the behavioural baseline before any redesign work begins. This should happen early, ideally during discovery, not retrofitted once development is already underway.",[350,432,433],{},[425,434,435],{},"Parallel run and shadow testing",[350,437,438],{},"Running the old and new systems side by side against the same live inputs, then comparing outputs, catches discrepancies that static test suites miss, particularly those arising from data conditions or usage patterns nobody anticipated when writing test cases. This is especially valuable for financial, regulatory or high-volume transactional systems, where the cost of an undetected behavioural difference is high.",[350,440,441],{},[425,442,443],{},"Risk-prioritised regression coverage",[350,445,446],{},"Not every piece of legacy behaviour deserves equal testing investment. Coverage should be weighted toward the areas carrying the highest business, regulatory or financial consequence if something breaks.",[350,448,449],{},[425,450,451],{},"A deliberate decision process for behavioural change",[350,453,454],{},"Every discrepancy between old and new behaviour needs to be explicitly classified: is this a bug in the legacy system that we're correcting, or a regression we've accidentally introduced? Without this discipline, teams tend to default to reproducing every legacy quirk faithfully, which is exactly the trap \"Managing Hidden Waterfalls\" describes: testing effort shifting entirely toward proving parity with the old system, at the expense of validating that the new one actually solves the problem it was commissioned to solve.",[383,456,458],{"id":457},"the-role-of-ai-in-legacy-testing","The Role of AI in Legacy Testing",[350,460,461],{},"AI-assisted tooling has a real, measurable role in this work, and it's worth being specific about where that role sits. Generating characterisation tests at scale, by running legacy code against large volumes of synthetic or historical inputs and automatically capturing outputs, is exactly the kind of repetitive, high-volume task these tools are well suited to. The same applies to analysing legacy codebases to extract embedded business rules, map dependency chains, and flag areas of dead or redundant code, work that would otherwise consume significant manual analyst time on systems where documentation is thin or absent.",[350,463,464,465,470],{},"The 2026 State of Testing research found that large enterprises are already leaning on this capability heavily, with ",[357,466,469],{"href":467,"rel":468},"https:\u002F\u002Fwww.practitest.com\u002Fstate-of-testing\u002F",[361],"65.5% using AI specifically for regression suite and script maintenance work",", a meaningfully higher figure than smaller organisations report. This lines up with where the technique is genuinely strongest: sustaining and extending test coverage on systems that already have some automated baseline in place.",[350,472,473],{},"Deciding which legacy behaviours represent genuine business rules worth preserving requires domain knowledge and business context that sits with the team. The tooling can surface candidates at scale; the judgement about which ones matter stays a human responsibility.",[383,475,477],{"id":476},"measuring-whether-the-strategy-is-working","Measuring Whether the Strategy Is Working",[350,479,480],{},"A testing strategy needs a way to show whether it's succeeding, beyond the general sense that testing volume has increased. Two measures matter most in legacy modernisation specifically.",[350,482,483],{},[425,484,485],{},"Parity rate against the characterisation baseline:",[350,487,488],{},"This tracks the proportion of characterisation tests where the new system's output matches the legacy system's recorded behaviour, and the proportion where it deliberately diverges. A high, stable parity rate combined with a small, explicitly reviewed set of intentional divergences is a strong signal that the programme understands what it's changing and why. A parity rate that's low or declining late in delivery is an early warning that the team is discovering legacy behaviour later than it should.",[350,490,491],{},[425,492,493],{},"Defect escape rate post-migration:",[350,495,496],{},"This measures how many behavioural discrepancies are caught before go-live versus reported by users or discovered in production afterwards. It gives a clearer picture of testing effectiveness than raw test count or coverage percentage, both of which can look healthy while missing exactly the undocumented edge cases legacy systems are prone to hiding.",[383,498,500],{"id":499},"why-testing-needs-to-start-at-discovery","Why Testing Needs to Start at Discovery",[350,502,503],{},"The organisational pattern that undermines legacy modernisation testing most consistently is treating it as something that happens at the end, once development is largely complete. By that point, the programme has usually already committed to an architecture and a delivery timeline that leaves little room to properly characterise the systems it depends on, and testing becomes a compressed, high-pressure activity squeezed into the final weeks before go-live.",[350,505,506],{},"Characterisation work belongs alongside early technical discovery, feeding directly into design decisions about what the new system needs to replicate and what it's free to change. This also gives programme leadership something more useful than a green sprint burndown chart: concrete evidence, in the form of a growing characterisation suite, of how well the team actually understands the system it's replacing.",[383,508,510],{"id":509},"conclusion","Conclusion",[350,512,513],{},"Legacy modernisation testing starts from a genuinely different premise than testing greenfield applications. There's no clean specification to validate against, only years of accumulated behaviour that nobody wrote down. Characterisation testing gives teams a disciplined way to make that behaviour visible before they change it, turning an implicit, undocumented specification into an explicit, testable one.",[350,515,516],{},"Treating testing as a discipline that shapes a programme from its earliest stages is good practice for any software delivery, not something unique to legacy modernisation. What legacy modernisation changes is the cost of skipping it. Without a written specification to fall back on, there's no shortcut back to \"what the system is supposed to do\" once development is already underway. Organisations that invest in characterising legacy behaviour early, prioritise coverage by business risk, maintain a deliberate process for classifying behavioural change, and measure parity and defect escape rate are the ones that avoid discovering, late and expensively, that the system they built doesn't actually handle the behaviour the business depends on.",{"title":17,"searchDepth":18,"depth":18,"links":518},[519,521,522,523,524,525,526],{"id":385,"depth":520,"text":386},3,{"id":398,"depth":520,"text":399},{"id":417,"depth":520,"text":418},{"id":457,"depth":520,"text":458},{"id":476,"depth":520,"text":477},{"id":499,"depth":520,"text":500},{"id":509,"depth":520,"text":510},"Legacy systems often don't come with a specification, with their behaviour living in code nobody documented and workarounds nobody wrote down. This piece looks at why conventional testing breaks down in modernisation projects, how characterisation testing captures undocumented behaviour before it's changed, and how to measure whether your testing strategy is actually working.","2026-07-08T15:42:18.390Z","\u002Fimg\u002Fblog\u002Fsoftware-testing-in-legacy-modernisation.png",{},"\u002Fblog\u002Ftesting-in-legacy-modernisation",{"text":533,"minutes":534,"time":535,"words":536},"10 min read",9.3,558000,1860,{"description":538,"title":539,"keywords":540},"A testing strategy for legacy modernisation: why conventional testing fails, how characterisation testing works, and how to measure success.","A Testing Strategy for Legacy Modernisation | Insights","legacy modernisation testing strategy\ncharacterisation testing\nlegacy system testing\ntesting legacy code\n","blog\u002Ftesting-in-legacy-modernisation","qCoEe5EXcBL3VG3WMuUNyzmGBv7MtaaVve8sSK-FcRE",{"id":544,"title":344,"bio":545,"extension":20,"image":546,"meta":547,"role":12,"stem":552,"__hash__":553},"author\u002Fauthors\u002Frichard-brown.md","Richard Brown is the Technical Director at Audacia, where he is responsible for steering the technical direction of the company and maintaining standards across development and testing. ","\u002Fimg\u002Fauthors\u002Frichard-brown-headshot-2022-.jpg",{"body":548},{"type":14,"value":549,"toc":550},[],{"title":17,"searchDepth":18,"depth":18,"links":551},[],"authors\u002Frichard-brown","qqVNv5WUJGGz8w2TPHZodGfZolP5RFwW3q2x6Mj00bA",1783528560228]