报告题目：How to develop testable software (and how can that make me a better developer)
Assistant Professor at the Engineering Department at the School of Sciences and Technology of the University of Trás-os-Montes and Alto Douro (杜罗大学), Portugal. Has a strong hands-on background on software development, over 20 years experience in software/firmware development for academic R&D projects. Publications include 9 papers in International Journals, 6 book chapters, and 38 papers in international conferences. Participated, as a researcher, in more than 10 funded projects. Has supervised 53 MSc Thesis and 2 PhD Thesis, has two Patents, made 20 presentations at International Conferences, and chaired 7 sessions at International Conferences. Has also been reviewer of International Journals and International Conferences. Is a Committee Member of the Conferences "International Conference of Wireless Networks" and "International Conference of Electrical and Electronics Engineering" of the World Congress on Engineering, organized by IAENG.
Software testing is a very important task in the software development cycle, which provides to all parties information about the quality of the software product under development. These include Unit Testing, Integration Testing and System Testing. Unit Testing is the first level of software testing, before Integration Tests, and it allows to test isolated units of the software. Even tough in “real life”, specially in large teams, tests might be implemented only by testers, and not other development team elements, to know how to do Unit Testing can be a very important skill. Also, for tests to be effective, code must effectively be testable. By planing correctly the Classes, their methods and iterations, and using some software design patterns, such as the Dependency Injection Design Pattern and Model View Controller, it is possible to obtain easily testable and reusable code. In this lecture, using small examples, it will be shown how to build simple Unit Tests, for a demo application and how to (re)design the application Classes to meet these requirements. As an example Java will be used for the demonstrations, using the JUnit and Mockito frameworks.