Our Directions

Test Automation

Software testing is not operation check. We must implement software tests that can detect faults. Our first direction is for “mutation testing” that injects artificial faults into software and measures fault-detecting capability of tests.

Automated Program Repair

We must fix faults detected by software tests. Our second direction is for “generate-and-validate program repair” that generates patches for faulty programs and validates whether the patches correctly repair the programs.

Market as a Product

We develop our technologies as “open source software (OSS)”. With feedbacks from software developers in the
world, we sophisticate our products that can bring transformative changes in the lives of many people.


Our Technologies

We base on scientific knowledge, leverage our original findings, and create techniques usable in the real world.

Mutation Testing

Mutation testing is a technique to measure fault-detecting capability of test cases.

  1. Developers implement a program under test and its test cases. A question is: “Can the test cases detect faults in the program?”
  2. This technique artificially injects faults that developers can make into the program. These faulty version os the programs are called mutants. If the test cases have capability of detecting faults in the program, they must detect these artificial faults.
  3. This technique then runs the test cases on each mutant and determine whether the test cases fail on the mutant; that is, the test cases can detect the artificial fault.
  4. From the test results, this technique calculates mutation score. Developers can use this score to quantitively evaluate fault-detecting capability of the test case.
  5. Developers can also use the mutants that the test cases did not fail on. By redesigning the test cases so as to detect the not-detected mutants, developers can improve the fault-detecting capability.

  

Developers implement a program under test and its test cases. A question is: “Can the test cases detect faults in the program?”

  

  

This technique artificially injects faults that developers can make into the program. These faulty version os the programs are called mutants. If the test cases have capability of detecting faults in the program, they must detect these artificial faults.

  

  

This technique then runs the test cases on each mutant and determine whether the test cases fail on the mutant; that is, the test cases can detect the artificial fault.

  

  

From the test results, this technique calculates mutation score. Developers can use this score to quantitively evaluate fault-detecting capability of the test case.

  

  

Developers can also use the mutants that the test cases did not fail on. By redesigning the test cases so as to detect the not-detected mutants, developers can improve the fault-detecting capability.

Generate-and-Validate Program Repair

Automated program repair is a technique to generate patches that automatically make a faulty program pass all test cases when, at least one, the test cases fail.

  1. When developers face on test failures, their much effort is required to fix faults. A question is: “Can the faults be fixed automatically?”
  2. This technique generates patches by locating and mutating possibly-faulty statements in the program. Challenges at this phase are fault localization and proper program mutation.
  3. This technique runs the test cases on patched programs. If all the test cases pass on the patched programs, this technique outputs the patches as solutions for repairing the faulty program. Challenges at this phase are efficient repair-space search and mitigation of overfitting to given test cases.

  

When developers face on test failures, their much effort is required to fix faults. A question is: “Can the faults be fixed automatically?

  

  

This technique generates patches by locating and mutating possibly-faulty statements in the program. Challenges at this phase are fault localization and proper program mutation.

  

  

This technique runs the test cases on patched programs. If all the test cases pass on the patched programs, this technique outputs the patches as solutions for repairing the faulty program. Challenges at this phase are efficient repair-space search and mitigation of overfitting to given test cases.

  


Our Products

JSAnalyzer

State-based analysis for Ajax Web apps

AjaxMutator

Mutation testing for Ajax Web apps

RevAjaxMutator

Automated program repair for Ajax Web apps

AdaMu

Adaptive mutation testing

AutoPUT

Automated parametariaztion for unit tests

To be Continued!