One challenge for the industry is keeping up with the [[Moore's law|rapid advances in chip technology]] (I/O count/size/placement/spacing, I/O speed, internal circuit count/speed/power, thermal control, etc.) without being forced to continually upgrade the test equipment. Modern DFT techniques, hence, have to offer options that allow next generation chips and assemblies to be tested on existing test equipment and/or reduce the requirements/cost for new test equipment. As a result, DFT techniques are continually being updated, such as incorporation of compression, in order to make sure that tester application times stay within certain bounds dictated by the cost target for the products under test.
== Test-Driven Development ==
[[Test-driven development|Test-Driven Development]] (TDD) is the process of writing tests prior to writing the core functionality. Software developers tend to use the TDD methodology to ensure code is written in a more logical and modular manner, therefore making the code easier to test further down the line.
In short, TDD can be broken down into the following steps:
# Breaking down the project into functional modules or “units”.
# Thinking about the interfaces to each of these units.
# Determining the desired behaviour of these units and how they should handle errors.
# Writing tests that check this behaviour.
# Finally implementing software to implement this behaviour and ensure tests pass. <ref>{{Cite web |last=Lynch |first=Stephen |date=28 March 2022 |title=What is Test Driven Development? An Introduction for Embedded Systems |url=https://ignys.co.uk/blog/embedded-software-testing/ |url-status=live |archive-url=https://web.archive.org/web/20220714152044/https://ignys.co.uk/blog/embedded-software-testing/ |archive-date=14 July 2022 |access-date=14 July 2022}}</ref>
DFT is ultimately the by-product of following a TDD methodology.{{cn|date=July 2022}}