“For any possible input value (precondition), we should define an answer (postcondition).” Aqui cabe destacar um ponto, de que em muitos casos temos uma entrada válida, mas não temos uma resposta (ou pós-condição) estabelecida. Na palestra foi mencionado o caso da Linguagem C++ e seus diversos casos de compartamento indefinido (UB - Undefined Behavior).
Design By Contract (DBC) vs Test First (TF)/Test Driven Development (TDD). Não seria uma questão de versus, mas de fazer antes do DBC e depois o TF/TDD, ou seja, combiná-los (e nessa ordem). Concordo integralmente.
Olhar sobre a possibilidade de usar fuzzy testing guiado por cobertura e análise dinâmica (sem controle intectual da entrada e do contrato).
Olhar sobre teste baseado em propriedade (Property-based testing), no caso de sem controle intectual da entrada e do contrato, mas ao menos com boas propriedades definidas.
Testability is correlated to good design.
Quanto à IA generativa de código de programas, “we should provide the contract, ask for test cases for that contract, and once we are satisfied with those test cases, ask for code that satisfies the contract and test cases.”
Strong typing is a good way to introduce good quality design.
Quanto à teste de mutação, além de usar a técnica para avaliar a qualidade do conjunto de teste, usá-la para selecionar os casos de teste mais eficazes, ou seja, que matam mais mutantes (no caso, configurando o test driver para executar todos os casos de teste com relação aos mutantes obtidos com todos os operadores de mutação).