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.
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.