Instructor: Shouvick MondalClassroom: AB7/208 (L), AB10/102 (T).Tutorial (T): H1-Monday (5:00 to 6:20 PM) Lecture (L): J1-Tuesday (2:00 to 3:20 PM), J2-Friday (2:00 to 3:20 PM)Doubt sessions: by appointment (AB13/402A)TAs: Pinki Kumari, Shivam Mishra, Poornima Bhatia.Course contents (tentative)
Module 1 (Software Engineering)
Basics of software engineering: software versus product; why software engineering; development styles; Software development life cycle: models; classic; waterfall; agile; scrum; DevOps; Phases: requirement analysis; feasibility study; software design; software architecture; coding; testing; release; maintenance; Module 2 (Software Testing)
Types of testing: unit; system; regression; white box; grey box; black box; Software maintenance: evolution; change analysis; test-case selection; prioritization; reduction; debugging; fault localization, version control; Module 3 (Advanced Software Testing)
Advanced topics: software reverse engineering: decompilation, binary lifting; differential testing; domain specific testing, flaky tests, test parallelization, test dependency detection.Textbook:
- Rajib Mall. 2014. Fundamentals of Software Engineering (4th. edition). Prentice-Hall of India Pvt.Ltd.
References:
- Paul Ammann and Jeff Offutt. 2008. Introduction to Software Testing (2nd. edition). Cambridge University Press, USA.
- Some selected papers from SE conferences/journals:
- T. J. McCabe, A Complexity Measure, in IEEE Transactions on Software Engineering, vol. SE-2, no. 4, pp. 308-320, Dec. 1976.
- S. Mondal, and R. Nasre, Colosseum: Regression Test Prioritization by Delta Displacement in Test Coverage, IEEE Transactions on Software Engineering (TSE), (early access), pp. 1-1, September 2021 (2021).
- S. Mondal, D. Silva, and M. d'Amorim, Soundy Automated Parallelization of Test Execution, IEEE International Conference on Software Maintenance and Evolution (ICSME), pp. 309-319, Luxembourg, 27 Sept.-1 Oct. 2021 (2021).
- K. Costa, R. Ferreira, G. Pinto, M. d'Amorim and B. Miranda, Test Flakiness Across Programming Languages, in IEEE Transactions on Software Engineering, 2022.
- S. Mondal, and R. Nasre, Hansie: Hybrid and Consensus Regression Test Prioritization, Journal of Systems and Software (JSS), Volume 172, February 2021, 110850 (2021).
- S. Mondal, and R. Nasre, Mahtab: Phase-wise acceleration of regression testing for C, Journal of Systems and Software (JSS), Volume 158, December 2019, 110403 (2019).
- A. Gambi, J. Bell and A. Zeller, Practical Test Dependency Detection, 2018 IEEE 11th International Conference on Software Testing, Verification and Validation (ICST), Västerås, Sweden, 2018, pp. 1-11.
- S. Yoo and M. Harman. 2012. Regression testing minimization, selection and prioritization: a survey. Softw. Test. Verif. Reliab. 22, 2 (March 2012), 67–120.
- W. E. Wong, R. Gao, Y. Li, R. Abreu and F. Wotawa, A Survey on Software Fault Localization, in IEEE Transactions on Software Engineering, vol. 42, no. 8, pp. 707-740, 1 Aug. 2016.
- S. Elbaum, A. G. Malishevsky and G. Rothermel, Test case prioritization: a family of empirical studies, in IEEE Transactions on Software Engineering, vol. 28, no. 2, pp. 159-182, Feb. 2002.
- A. Orso and G. Rothermel. 2014. Software testing: a research travelogue (2000–2014). In Future of Software Engineering Proceedings (FOSE 2014).
- Z. Liu and S. Wang. 2020. How far we have come: testing decompilation correctness of C decompilers. In Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2020).
- R. Paleari, L. Martignoni, G. F. Roglia, and D. Bruschi. 2010. N-version disassembly: differential testing of x86 disassemblers. In Proceedings of the 19th international symposium on Software testing and analysis (ISSTA '10). Association for Computing Machinery, New York, NY, USA, 265–274.