University of Belgrade, Faculty of organizational sciences

Department for e-business

Software testing and performance

E-Business TechnologiesLazarević D. Saša, Milić Ž. MilošElective16

Course content

Theoretical classes

Part I: Fundamentals of Software Testing: Software Testing Terminology. Key testing issues (dynamics, finality, selectivity, expectation). Linking testing to other software development activities. Test levels: Subject of testing. Test objectives (test qualification, test installation, alpha and beta testing, test correctness, reliability and evaluation of testing, regression testing, performance testing, …). program code. Techniques based on program errors. Techniques based on the use of programs. Techniques related to the nature of the application. Combining techniques. Testing-related measurements: Evaluation of programs being tested. Test evaluation. Testing process: Managing the testing process. Test documentation. Test models. Testing activities.
Part II: Basics of measuring, analyzing and improving performance. Benefits and costs of software optimization. Methods and tools for measuring, analyzing and improving the performance of program code and databases. C # application optimization: performance metrics; performance measurement: tools, instances, objects, counters; optimization: types, garbage collection, generics and collections, concurrent and parallel work, network work, I / O operations and serialization, unsafe code, algorithms, web applications. Performance patterns in C #. T-SQL code optimization: performance metrics; performance measurement: tools, instances, objects, counters; optimization: logical schemas of the database, physical schemas of the database, configuration settings of the database and server, administrative tasks, queries, indexes, procedures / triggers / functions, transactions; transform cursor into queries. Optimization process and best practices for T-SQL language.
Part III: Case Study

Practical teaching:

The exercises are completely harmonized with the lectures, in terms of structure and content.

The aim of the course

Understanding the principles, rules and methods of software testing. Introduction to software testing techniques. Mastering the software testing process. Practical use of the available development environment in software testing. Testing-driven software development. Introduction to key concepts, problems and solutions of software optimization. Understanding and application of software optimization principles and methods. Training for measuring static and dynamic performance of applications and their optimization; application of basic software metrics. Application of appropriate software tools for measuring and improving software performance.

Outcome of the course

Ability of students to test software using software testing methods and tools, as well as to improve software performance.


1. P. C. Jorgensen, Software Testing: A Craftsman’s Approach, Auerbach Publications 2014
2. David Thomas, Andrew Hunt, Pragmatic Programmer: your journey to mastery, Addison-Wesley Professional 2019
3. Dorothy Graham, Rex Black, Erik van Veenendaal, Foundations of Software Testing ISTQB Certification, Cengage Learning EMEA 2019
4. Bill Laboon, A Friendly Introduction to Software Testing CreateSpace Independent Publishing Platform 2016
5. S. L. Pfleeger Software Engineering: Theory and Practice, Prentice Hall 2010
6. C. Кaner, J. Bach, and B. Pettichord, Lessons Learned in Software Testing, Wiley Comp. Publishing 2001