Master Projects

WP

Open and On-going Master Projects

If you want further information or wish to apply please contact contact: Wishnu Prasetya (wishnu@cs.uu.nl).

For projects in companies, you can contact them directly. I, or other staff member, can act as your University-side supervisor.

Topics in Automated Software Testing

• Automated Inference of Control-flow Predicates for Test-Oracles

Automated test-cases generation is often suggested as a solution to complement costly manual testing. A test-case basically describes a sequence of steps on the target program, the inputs it wants to give to the program, and what it expects to get from the program. The last part is usually called "oracle". Most automated test-generation techniques usually only address the generation of the first two parts (the steps and the inputs). This works fine if the program has a specification. At least in theory, a specification can be turned to a code-fragment, and thus giving us free oracles. However, in practice most programs do not have well documented specifications, let alone formal specifications.

What we want to do is to generate oracles by inferring them from logs. The program is instrumented so that its executions will leave a trace of information (a log file) --we already have a facility to do this. Various information can be logged, but in particular we are interested in the trace of control flow, because the logging overhead of this is very low (we do not have to serialize any large objects). Imagine a function m(x). We want to infer specifications of the form:

m(x):

A1 implies C1

A2 implies C2

A3 implies C3

...

Where A1,A2,... are predicates over the domain of x. C1 is a predicate over m's control flow. So, A1 implies C1 means that m's control flow will be as C1 if it is called with an x satisfying A1. Like any specification, they can be turned to oracles.

The challenge is to come up with an algorithm to infer that kind of specifications. In terms of fault revealing strength, we want each C to be as strong as possible, since violating it means we have a fault/error in the program. On the other hand, we want the inference process to be bounded within some reasonable time. We already have a facility to translate our logs to a format understood by a tool called Daikon, which can infer limited forms of data properties. In principle, it can be used to infer the A's part. Perhaps you can extend it to handle the C's part.

As part of your project we also need you to set up an experiment where you can measure how strong your inferred oracles are. E.g. by comparing them to manually written oracles.

Software Testing in Companies

• Automated Testing of Business Logic

This project seeks to investigate how the software company AllSolutions can increase its productivity and/or quality by automating the testing of its business logic.

The Company's Background

For 25 years AllSolutions has been developing and implementing business software for various organizations. Since 2001 we made the whole suite of our functionalities accessible through Internet browsers, and now also through mobile devices. These include functionalities such as ERP, CMS, DMS, CRM, and Social Interaction.

Our web-application uses a number of technologies:

  • The UIs are programmed in HTML, CSS, and Javascript.
  • The framework and the business logic (incl. the data layer) are programmed in Progress ABL.
  • ASP.NET (C#) is used to exchange data between the busiless logic and the client.

The Problem to Solve

The Business Logic (BL) forms by far the largest part of the application. Given its role, it is also a mission critical part. Furthermore, it the part where most changes are made. However, it is tested by manually interacting with the application. The process is very labour intensive. While this worked, it now becomes an inhibiting factor for further growth of the application.

The company wants to have a solution for automating the tests. Towards this end, this project is set to do a preliminary research. The research question we want to answer is:

Which automated testing approach will work best for AllSolution's Business Logic?

For example, should we do it ala black box, or white box? Will random testing be good enough, or do have to turn to model-based testing? Is applying the classification tree approach useful and feasible?

How about the oracles? How do we get them? Is it feasible to do property-based testing? Or algebraic testing (e.g. CRUD)? Or perhaps using the application's previous version as the orcale?

And of course, we will need a convincing proof of your answer. We need you to construct a prototype of your approach, where you demonstrate the effectiveness of your solution. You will have to defend why this solution is feasible for the company. Furthemore, we also need the prototype to be designed in such a way that it can be scaled up to a mature automated testing tool for AllSolutions.

• Testframework for Amplixs' php/smarty application-framework.

Closed

Amplixs is a young and growing Dutch software company with national and international customers. They specialize in applications for collecting and reporting various on-line informations. Various large and small companies use our applications.

In this project they want to design and implementat and test framework for testing applications from their php/smarty application-framework. In the current approach the tests are completely hand crafted. Such a framework should enable the testing to be done a lot more efficiently and with as much automation as possible.

One of the challanges here is that there are currently no adequate testframework for php; so they challange you to invent one. Furthermore, whenever developers change the code somewhere in an application, they need a support for determining the extent of the effects of the changes; this is not trivial considering the size of typical applications. Once the extend is determined, this can be used to infer how to test the changes.

The above is just a short description of the project. A lot more details and information on how to apply are can be read in this pdf file; unfortunately it is in Dutch. Let me know if this is a problem; I suppose I can ask Amplixs for an English version.

Contact:

Peter Scheer, peter dot scheer at amplixs dot com
Amplixs Interaction Management
Tel : 035 - 588 58 23

• I want to do a software testing project at company X

You can. But first we need to agree on the project. Talk to me, or other ST staff, so that we can first discuss if the project will be interesting, have sufficient depth, and realistic. If we aggree to proceed you still of course need to submit your research proposal.