Faits: A. Z._ AG a exécuté des travaux de gypserie et d'isolation thermique sur une villa que les époux H.X._ et F.X._ faisaient construire à .... Elle avait adressé deux offres à l'architecte, aux montants nets de 18'125 fr.25 et 24'180 fr.50, le 9 février et le 6 juin 2005, respectivement pour les travaux de gypserie et d'isolation, puis, le 29 septembre 2005, une offre complémentaire au montant net de 8'119 fr.75. Les travaux devaient commencer à mi-août 2005 mais furent plusieurs fois ajournés. L'architecte établit le 10 janvier 2006 un tableau des finitions à terminer pour le 16 du même mois; pour Z._ AG, le nettoyage des fenêtres, les joints autour des fenêtres et le crépissage de la cage d'escalier y étaient mentionnés comme « très urgents ». Ce tableau fut adressé aux entreprises. Par lettre du 25 janvier, l'architecte reprocha ses retards à Z._ AG; enfin, le 3 février 2006, il lui signifia que ses clients se passeraient de ses services. Z._ AG présenta des factures au total de 57'169 fr.75. Les époux X._ ayant versé des acomptes par 34'297 fr.85, elle réclamait encore 22'871 fr.90. Ils firent opposition totale à son commandement de payer. B. Le 17 octobre 2007, Z._ AG a ouvert action contre les époux H.X._ et F.X._ devant le Tribunal cantonal du canton de Neuchâtel. Les défendeurs devaient être condamnés à payer 22'871 fr.90 pour solde du prix des travaux exécutés, avec intérêts au taux de 5% par an dès le 15 mai 2006, et 952 fr. à titre d'indemnité pour résiliation du contrat, avec intérêts dès l'entrée en force du jugement. Les défendeurs ont conclu au rejet de l'action. La IIe Cour civile du Tribunal cantonal s'est prononcée le 18 mai 2010. Accueillant partiellement l'action, elle a alloué 18'186 fr.90 pour solde du prix des travaux, avec intérêts au taux de 5% par an dès le 1er mai 2006, et 675 fr.15 à titre d'indemnité, avec intérêts au même taux dès l'entrée en force du jugement. C. Agissant par la voie du recours constitutionnel, les défendeurs requièrent le Tribunal fédéral de réformer le jugement en ce sens que l'action soit entièrement rejetée. Des conclusions subsidiaires tendent à l'annulation du jugement et au renvoi de la cause au Tribunal cantonal pour nouvelle décision. La demanderesse conclut au rejet du recours. 