What I learned from my first workshop

A first person account of 10th National Workshop on Recent Trends in Software Testing held at NIT Rourkela

Yogesh Singla
y.reflections
4 min readJan 28, 2018

--

It’s been over six months, since I have been wanting to write this post. Finally, on this lucky day, it’s taking form.

This was the first workshop that I attended with reluctant excitement. A three day workshop that three of us planned and only I could make it! One fell ill and the other guy declined. Lone survivor!

Now when I look back, it is one of the best decisions to attend this workshop. In terms of talking to new people, hearing from experts and networking with them. This is one of the reasons why you attend college. I mean, come on; if only it was knowledge from books and Internet, you might as well stay at home and do that more efficiently. But people won’t be coming to your house to give seminars. Right. So, education is not only books and theory. Thats hard skills. Soft skills and practical knowledge is equally important.

Day 1

Not something that we are proud of, but nobody will deny that our clocks are adjusted to few minutes late from the time things should start. So, you hardly realize when a 9:30 inauguration becomes 10:30 :P.

After the inauguration and a small tea break, the workshop kicked off with the keynote address by Prof. Aquinas Hobor, NUS Singapore. It was a thought provoking session. He discussed the Formal Methods in Software Development. Some notes that I made from his session were:

  1. Bug removal is a trade-off and not always ideal.
    Precision — Time — Money
    vs
    Number of Bugs
  2. Microsoft Terminator is a fine example of software based on formal methods that tries to tell if a program will terminate or not. And no, this program is not a dis-proof of Halting problem or the Entscheidungsproblem. It works in some specific cases only which frankly, i didn’t go in much detail my self.
  3. Next up was a tool by Facebook named Infer.
  4. MapReduce : A problem is mapped to parallel computing grid and then reduced to a single solution. You might use a framework like Hadoop to realize this.
From my notes of that day

I being a newbie in this entire thing so could understand partially and later discussed with Prof. Hobor after the session to get a better idea of what things he said especially focusing on some references which I could use to dive deeper.

Next up was a session from Prof. Swapan Bhattacharya from Jadavpur University, Kolkata on Testing of Software Products and Services: Perspectives, Issues and Challenges. This was where I first heard the term SDLC, which stands for Software Development Life Cycle. Now there are various models for the same. Some like waterfall model that are obsolete now-a-days and others more recent ones like agile. Next, I understood that program testing is not a pass/fail binary thing. It depends on context, user, requirements and so on and so forth. What’s the difference between product and service? well …

Product evolves and Service maintained

Next up, he talked about the broad classification of softwares development. One the Commercial Off the Shelf Devlopment or COSD. This includes designing softwares like Microsoft Office or Adobe Suite where one specific need is not a priority rather the software is for much general use. On the other side, there are Specification Based Development, like the IRCTC booking system which was build in 1980s in Fortran. It still runs!

I will put some of the catchy quotes from his session below and leave to you to think and ponder over them :

Are you building the right product? or product right?

If you need milk, would you buy a cow? (while explaining difference between product and service)

We are looking for absence of bugs.

In IT sector, salary is directly proportional to age and age is inversely proportional to skill!

Key to economic progress is your expenditure should me more than your income: whatever be your income

He concluded his session with emphasis on model based testing with the argument that civil engineers model bridges multiple times before even starting building the bridge. Then for software development, it makes real sense if we make some software development models and use them to increase efficiency reduce bugs and faults. Such things become much more important in safety critical systems.

After a wonderful lunch at the Guest House, we came back to understand Change Induced Failures in Software by Dr. Ansuman Banerjee from ISI Kolkata.

Fixing bugs increases the number of bugs in a program.

As counter-intuitive it might sound, it is true. In Dr. Banerjee’s seminar, I (yes a total rookie) realized that if a bug is fixed incoherently with the rest of the code, that change might induce more faults in the code. These are termed as evolution bugs which result in change induced failures. It’s like trying to fix one thing and accidentally breaking another one. The solution to this problem is a technique (which Dr. Banerjee has worked upon) called Program Slicing. Basically what you do is compare the run of previous fine running program with the now faulty one and do a trace comparison using tools like GNU Debugger, popularly called gdb. He went in depth discussing things like data dependence and control dependence and its effects in white box and black box testing.

The last session of Day 1 was by Dr. Himadri Sekhar Paul from TCS Kolkata on Going Green with Approximate Computing. He focused on dividing programs into critical and non-critical parts. And using approximations in non-critical areas for example in JPEG payload or pixel data as compared to JPEG header and jump targets which is a critical piece of information.

This is the end of part 1. Day 2 and Day 3 of the Workshop will come out soon as separate parts. Stay tuned!

--

--