Developer testing is a type of testing where developers test their code as they write it, as opposed to testing done by a separate quality assurance organization. Developer testing has been widely recognized as an important and valuable means of improving software reliability, as it exposes faults early in the software development life cycle. Effectively conducting developer testing requires both effective tool support by tools and developer-testing skills by developers. In this paper, we describe our experiences and lessons learned in teaching and training developer-testing techniques and tool support in both university and industrial settings. We highlight differences in teaching and training in these two settings, and observations from interacting with practitioners in our process of teaching and training. Categories and Subject Descriptors D.2.5 [Software Engineering]: Testing and Debugging—Symbolic execution, Testing tools General Terms Reliability, Verification Keywords Testi...