This does not work because the first test member is considered as a method with several arguments in case of overload. If you need a tuple, you need to add extra parentheses:
type Test2() =
member o.test ((x: float, y: float, z: float)) = printfn "test"
member o.test (x: Test1) = o.test x.toTuple
See Don Syme's explanation here .
: , :
type Test2() =
member o.test (x: float, y: float, z: float) = printfn "test"
member o.test (x: Test1) = let a,b,c = x.toTuple in o.test(a,b,c)